github.com/ironcore-dev/gardener-extension-provider-ironcore@v0.3.2-0.20240314231816-8336447fb9a0/pkg/controller/backupentry/actuator.go (about) 1 // SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors 2 // SPDX-License-Identifier: Apache-2.0 3 4 package backupentry 5 6 import ( 7 "context" 8 "fmt" 9 10 "github.com/gardener/gardener/extensions/pkg/controller/backupentry/genericactuator" 11 extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" 12 "github.com/go-logr/logr" 13 corev1 "k8s.io/api/core/v1" 14 apierrors "k8s.io/apimachinery/pkg/api/errors" 15 "sigs.k8s.io/controller-runtime/pkg/client" 16 "sigs.k8s.io/controller-runtime/pkg/manager" 17 ) 18 19 type actuator struct { 20 client client.Client 21 } 22 23 func newActuator(mgr manager.Manager) genericactuator.BackupEntryDelegate { 24 return &actuator{ 25 client: mgr.GetClient(), 26 } 27 } 28 29 func (a *actuator) GetETCDSecretData(_ context.Context, _ logr.Logger, _ *extensionsv1alpha1.BackupEntry, backupSecretData map[string][]byte) (map[string][]byte, error) { 30 return backupSecretData, nil 31 } 32 33 func (a *actuator) Delete(ctx context.Context, log logr.Logger, backupEntry *extensionsv1alpha1.BackupEntry) error { 34 // get s3Client credentials from secret reference 35 s3ClientSecret := &corev1.Secret{} 36 s3ClientSecretKey := client.ObjectKey{Namespace: backupEntry.Spec.SecretRef.Namespace, Name: backupEntry.Spec.SecretRef.Name} 37 if err := a.client.Get(ctx, s3ClientSecretKey, s3ClientSecret); err != nil { 38 if apierrors.IsNotFound(err) { 39 return fmt.Errorf("s3 client secret not found: %s", backupEntry.Spec.SecretRef.Name) 40 } 41 return fmt.Errorf("could not get s3 client secret: %w", err) 42 } 43 44 // get s3 client from s3 client secret 45 s3Client, err := GetS3ClientFromS3ClientSecret(s3ClientSecret) 46 if err != nil { 47 return fmt.Errorf("failed to get s3 client from s3 client secret: %w", err) 48 } 49 50 return DeleteObjectsWithPrefix(ctx, s3Client, backupEntry.Spec.Region, backupEntry.Spec.BucketName, fmt.Sprintf("%s/", backupEntry.Name)) 51 }