Address review feedback on object store

Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
pull/2323/head
Nolan Brubaker 2020-03-30 14:26:23 -04:00
parent 5de15c450b
commit 5bde12939e
2 changed files with 22 additions and 19 deletions

View File

@ -58,7 +58,7 @@ type BackupStore interface {
GetBackupVolumeSnapshots(name string) ([]*volume.Snapshot, error)
GetPodVolumeBackups(name string) ([]*velerov1api.PodVolumeBackup, error)
GetBackupContents(name string) (io.ReadCloser, error)
// TODO(nrb-csi): Do we need Get methods for the CSI types?
// TODO(nrb-csi): Any Get methods relevant to the CSI VolumeSnapshots should be added with the client-side PRs.
// BackupExists checks if the backup metadata file exists in object storage.
BackupExists(bucket, backupName string) (bool, error)
@ -218,6 +218,7 @@ func (s *objectBackupStore) PutBackup(info BackupInfo) error {
return kerrors.NewAggregate([]error{err, deleteErr})
}
// TODO: How do we reduce duplication from here to the end of the function?
if err := seekAndPutObject(s.objectStore, s.bucket, s.layout.getPodVolumeBackupsKey(info.Name), info.PodVolumeBackups); err != nil {
errs := []error{err}
@ -254,29 +255,32 @@ func (s *objectBackupStore) PutBackup(info BackupInfo) error {
return kerrors.NewAggregate(errs)
}
// TODO(nrb-csi): only upload these if they're non-nil and/or if EnableCSI is on
// TODO(nrb-csi): Add tests?
if err := seekAndPutObject(s.objectStore, s.bucket, s.layout.getCSIVolumeSnapshotContentsKey(info.Name), info.CSIVolumeSnapshots); err != nil {
errs := []error{err}
if info.CSIVolumeSnapshots != nil {
if err := seekAndPutObject(s.objectStore, s.bucket, s.layout.getCSIVolumeSnapshotKey(info.Name), info.CSIVolumeSnapshots); err != nil {
errs := []error{err}
deleteErr := s.objectStore.DeleteObject(s.bucket, s.layout.getCSIVolumeSnapshotContentsKey(info.Name))
errs = append(errs, deleteErr)
deleteErr := s.objectStore.DeleteObject(s.bucket, s.layout.getCSIVolumeSnapshotKey(info.Name))
errs = append(errs, deleteErr)
deleteErr = s.objectStore.DeleteObject(s.bucket, s.layout.getBackupMetadataKey(info.Name))
errs = append(errs, deleteErr)
deleteErr = s.objectStore.DeleteObject(s.bucket, s.layout.getBackupMetadataKey(info.Name))
errs = append(errs, deleteErr)
return kerrors.NewAggregate(errs)
return kerrors.NewAggregate(errs)
}
}
if err := seekAndPutObject(s.objectStore, s.bucket, s.layout.getVolumeSnapshotContentsKey(info.Name), info.VolumeSnapshotContents); err != nil {
errs := []error{err}
if info.VolumeSnapshotContents != nil {
if err := seekAndPutObject(s.objectStore, s.bucket, s.layout.getVolumeSnapshotContentsKey(info.Name), info.VolumeSnapshotContents); err != nil {
errs := []error{err}
deleteErr := s.objectStore.DeleteObject(s.bucket, s.layout.getVolumeSnapshotContentsKey(info.Name))
errs = append(errs, deleteErr)
deleteErr := s.objectStore.DeleteObject(s.bucket, s.layout.getVolumeSnapshotContentsKey(info.Name))
errs = append(errs, deleteErr)
deleteErr = s.objectStore.DeleteObject(s.bucket, s.layout.getBackupMetadataKey(info.Name))
errs = append(errs, deleteErr)
return kerrors.NewAggregate(errs)
deleteErr = s.objectStore.DeleteObject(s.bucket, s.layout.getBackupMetadataKey(info.Name))
errs = append(errs, deleteErr)
return kerrors.NewAggregate(errs)
}
}
return nil

View File

@ -100,9 +100,8 @@ func (l *ObjectStoreLayout) getRestoreResultsKey(restore string) string {
return path.Join(l.subdirs["restores"], restore, fmt.Sprintf("restore-%s-results.gz", restore))
}
// TODO: Add keys for VS & VSContents json.gz files
func (l *ObjectStoreLayout) getCSIVolumeSnapshotContentsKey(backup string) string {
return path.Join(l.subdirs["backups"], backup, fmt.Sprintf("%s-csivolumesnapshotcontents.json.gz", backup))
func (l *ObjectStoreLayout) getCSIVolumeSnapshotKey(backup string) string {
return path.Join(l.subdirs["backups"], backup, fmt.Sprintf("%s-csivolumesnapshot.json.gz", backup))
}
func (l *ObjectStoreLayout) getVolumeSnapshotContentsKey(backup string) string {