diff --git a/pkg/kcp/provider/aws/nuke/loadNfsBackups.go b/pkg/kcp/provider/aws/nuke/loadNfsBackups.go index 6245b21ad..9f272a74a 100644 --- a/pkg/kcp/provider/aws/nuke/loadNfsBackups.go +++ b/pkg/kcp/provider/aws/nuke/loadNfsBackups.go @@ -13,6 +13,11 @@ func loadNfsBackups(ctx context.Context, st composed.State) (error, context.Cont state := st.(*State) logger := composed.LoggerFromCtx(ctx) + if state.vault == nil { + logger.Info("No vault exists.") + return nil, ctx + } + backups, err := state.awsClient.ListRecoveryPointsForVault(ctx, state.GetAccountId(), state.GetVaultName()) if err != nil { logger.Error(err, "Error listing Aws Recovery Points") diff --git a/pkg/kcp/provider/aws/nuke/loadVault.go b/pkg/kcp/provider/aws/nuke/loadVault.go new file mode 100644 index 000000000..2e6ffe934 --- /dev/null +++ b/pkg/kcp/provider/aws/nuke/loadVault.go @@ -0,0 +1,27 @@ +package nuke + +import ( + "context" + "github.com/kyma-project/cloud-manager/pkg/composed" + "k8s.io/utils/ptr" + "time" +) + +func loadVault(ctx context.Context, st composed.State) (error, context.Context) { + state := st.(*State) + + //Get the vaultName and load it. + vaultName := state.GetVaultName() + vaults, err := state.awsClient.ListBackupVaults(ctx) + if err != nil { + return composed.LogErrorAndReturn(err, "Error listing AWS Backup Vaults", composed.StopWithRequeueDelay(time.Second), ctx) + } + + //Match the vault by name. If found, continue... + for _, vault := range vaults { + if ptr.Deref(vault.BackupVaultName, "") == vaultName { + state.vault = &vault + } + } + return nil, nil +} diff --git a/pkg/kcp/provider/aws/nuke/new.go b/pkg/kcp/provider/aws/nuke/new.go index ef312b92a..d4665e1ae 100644 --- a/pkg/kcp/provider/aws/nuke/new.go +++ b/pkg/kcp/provider/aws/nuke/new.go @@ -30,6 +30,7 @@ func New(stateFactory StateFactory) composed.Action { return composed.ComposeActions( "awsNuke", createAwsClient, + loadVault, loadNfsBackups, providerResourceStatusDiscovered, deleteNfsBackup, diff --git a/pkg/kcp/provider/aws/nuke/state.go b/pkg/kcp/provider/aws/nuke/state.go index 094b2e5f3..c58a05adb 100644 --- a/pkg/kcp/provider/aws/nuke/state.go +++ b/pkg/kcp/provider/aws/nuke/state.go @@ -43,6 +43,7 @@ type State struct { nuketypes.State ProviderResources []*nuketypes.ProviderResourceKindState + vault *types.BackupVaultListMember awsClientProvider awsClient.SkrClientProvider[awsnukeclient.NukeNfsBackupClient] env abstractions.Environment awsClient awsnukeclient.NukeNfsBackupClient