From 735d506a7d1b5036669dacd5e13883406adc6b04 Mon Sep 17 00:00:00 2001 From: Anshul Ahuja Date: Fri, 10 Jun 2022 07:57:58 +0000 Subject: [PATCH] Add support to download CSI json from object store Signed-off-by: GitHub --- .../crd/v1/bases/velero.io_downloadrequests.yaml | 2 ++ design/CLI/PoC/base/CRDs.yaml | 2 ++ pkg/apis/velero/v1/download_request_types.go | 16 +++++++++------- pkg/persistence/object_store.go | 4 ++++ 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/config/crd/v1/bases/velero.io_downloadrequests.yaml b/config/crd/v1/bases/velero.io_downloadrequests.yaml index 45f229c44..498ee8b94 100644 --- a/config/crd/v1/bases/velero.io_downloadrequests.yaml +++ b/config/crd/v1/bases/velero.io_downloadrequests.yaml @@ -50,6 +50,8 @@ spec: - BackupResourceList - RestoreLog - RestoreResults + - CSIBackupVolumeSnapshots + - CSIBackupVolumeSnapshotContents type: string name: description: Name is the name of the kubernetes resource with diff --git a/design/CLI/PoC/base/CRDs.yaml b/design/CLI/PoC/base/CRDs.yaml index f6753953f..ae2f5f193 100644 --- a/design/CLI/PoC/base/CRDs.yaml +++ b/design/CLI/PoC/base/CRDs.yaml @@ -505,6 +505,8 @@ spec: - BackupResourceList - RestoreLog - RestoreResults + - CSIBackupVolumeSnapshots + - CSIBackupVolumeSnapshotContents type: string name: description: Name is the name of the kubernetes resource with diff --git a/pkg/apis/velero/v1/download_request_types.go b/pkg/apis/velero/v1/download_request_types.go index 7ca5dcb17..ad359ba88 100644 --- a/pkg/apis/velero/v1/download_request_types.go +++ b/pkg/apis/velero/v1/download_request_types.go @@ -29,13 +29,15 @@ type DownloadRequestSpec struct { type DownloadTargetKind string const ( - DownloadTargetKindBackupLog DownloadTargetKind = "BackupLog" - DownloadTargetKindBackupContents DownloadTargetKind = "BackupContents" - DownloadTargetKindBackupVolumeSnapshots DownloadTargetKind = "BackupVolumeSnapshots" - DownloadTargetKindBackupItemSnapshots DownloadTargetKind = "BackupItemSnapshots" - DownloadTargetKindBackupResourceList DownloadTargetKind = "BackupResourceList" - DownloadTargetKindRestoreLog DownloadTargetKind = "RestoreLog" - DownloadTargetKindRestoreResults DownloadTargetKind = "RestoreResults" + DownloadTargetKindBackupLog DownloadTargetKind = "BackupLog" + DownloadTargetKindBackupContents DownloadTargetKind = "BackupContents" + DownloadTargetKindBackupVolumeSnapshots DownloadTargetKind = "BackupVolumeSnapshots" + DownloadTargetKindBackupItemSnapshots DownloadTargetKind = "BackupItemSnapshots" + DownloadTargetKindBackupResourceList DownloadTargetKind = "BackupResourceList" + DownloadTargetKindRestoreLog DownloadTargetKind = "RestoreLog" + DownloadTargetKindRestoreResults DownloadTargetKind = "RestoreResults" + DownloadTargetKindCSIBackupVolumeSnapshots DownloadTargetKind = "CSIBackupVolumeSnapshots" + DownloadTargetKindCSIBackupVolumeSnapshotContents DownloadTargetKind = "CSIBackupVolumeSnapshotContents" ) // DownloadTarget is the specification for what kind of file to download, and the name of the diff --git a/pkg/persistence/object_store.go b/pkg/persistence/object_store.go index 20bf9328e..1c0b619e1 100644 --- a/pkg/persistence/object_store.go +++ b/pkg/persistence/object_store.go @@ -520,6 +520,10 @@ func (s *objectBackupStore) GetDownloadURL(target velerov1api.DownloadTarget) (s return s.objectStore.CreateSignedURL(s.bucket, s.layout.getRestoreLogKey(target.Name), DownloadURLTTL) case velerov1api.DownloadTargetKindRestoreResults: return s.objectStore.CreateSignedURL(s.bucket, s.layout.getRestoreResultsKey(target.Name), DownloadURLTTL) + case velerov1api.DownloadTargetKindCSIBackupVolumeSnapshots: + return s.objectStore.CreateSignedURL(s.bucket, s.layout.getCSIVolumeSnapshotKey(target.Name), DownloadURLTTL) + case velerov1api.DownloadTargetKindCSIBackupVolumeSnapshotContents: + return s.objectStore.CreateSignedURL(s.bucket, s.layout.getCSIVolumeSnapshotContentsKey(target.Name), DownloadURLTTL) default: return "", errors.Errorf("unsupported download target kind %q", target.Kind) }