From 268080ad098acba0b0a2d78eddd5f4a1ad9b04aa Mon Sep 17 00:00:00 2001 From: Steve Kriss Date: Tue, 16 Oct 2018 15:54:05 -0600 Subject: [PATCH] avoid panics if can't get block store during deletion Signed-off-by: Steve Kriss --- pkg/controller/backup_deletion_controller.go | 43 +++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/pkg/controller/backup_deletion_controller.go b/pkg/controller/backup_deletion_controller.go index a1b1e2573..2abe76c9a 100644 --- a/pkg/controller/backup_deletion_controller.go +++ b/pkg/controller/backup_deletion_controller.go @@ -241,29 +241,30 @@ func (c *backupDeletionController) processRequest(req *v1.DeleteBackupRequest) e backupStore, backupStoreErr := c.backupStoreForBackup(backup, pluginManager, log) if backupStoreErr != nil { errs = append(errs, backupStoreErr.Error()) - // TODO need to not proceed since backupStore will be nil } - log.Info("Removing PV snapshots") - if snapshots, err := backupStore.GetBackupVolumeSnapshots(backup.Name); err != nil { - errs = append(errs, errors.Wrap(err, "error getting backup's volume snapshots").Error()) - } else { - blockStores := make(map[string]cloudprovider.BlockStore) + if backupStore != nil { + log.Info("Removing PV snapshots") + if snapshots, err := backupStore.GetBackupVolumeSnapshots(backup.Name); err != nil { + errs = append(errs, errors.Wrap(err, "error getting backup's volume snapshots").Error()) + } else { + blockStores := make(map[string]cloudprovider.BlockStore) - for _, snapshot := range snapshots { - log.WithField("providerSnapshotID", snapshot.Status.ProviderSnapshotID).Info("Removing snapshot associated with backup") + for _, snapshot := range snapshots { + log.WithField("providerSnapshotID", snapshot.Status.ProviderSnapshotID).Info("Removing snapshot associated with backup") - blockStore, ok := blockStores[snapshot.Spec.Location] - if !ok { - if blockStore, err = blockStoreForSnapshotLocation(backup.Namespace, snapshot.Spec.Location, c.snapshotLocationLister, pluginManager); err != nil { - errs = append(errs, err.Error()) - continue + blockStore, ok := blockStores[snapshot.Spec.Location] + if !ok { + if blockStore, err = blockStoreForSnapshotLocation(backup.Namespace, snapshot.Spec.Location, c.snapshotLocationLister, pluginManager); err != nil { + errs = append(errs, err.Error()) + continue + } + blockStores[snapshot.Spec.Location] = blockStore } - blockStores[snapshot.Spec.Location] = blockStore - } - if err := blockStore.DeleteSnapshot(snapshot.Status.ProviderSnapshotID); err != nil { - errs = append(errs, errors.Wrapf(err, "error deleting snapshot %s", snapshot.Status.ProviderSnapshotID).Error()) + if err := blockStore.DeleteSnapshot(snapshot.Status.ProviderSnapshotID); err != nil { + errs = append(errs, errors.Wrapf(err, "error deleting snapshot %s", snapshot.Status.ProviderSnapshotID).Error()) + } } } } @@ -275,9 +276,11 @@ func (c *backupDeletionController) processRequest(req *v1.DeleteBackupRequest) e } } - log.Info("Removing backup from backup storage") - if err := backupStore.DeleteBackup(backup.Name); err != nil { - errs = append(errs, err.Error()) + if backupStore != nil { + log.Info("Removing backup from backup storage") + if err := backupStore.DeleteBackup(backup.Name); err != nil { + errs = append(errs, err.Error()) + } } log.Info("Removing restores")