|
4 | 4 | "fmt"
|
5 | 5 | "os"
|
6 | 6 | "reflect"
|
| 7 | + "strings" |
7 | 8 |
|
8 | 9 | "github.com/openshift/oadp-operator/pkg/credentials"
|
9 | 10 | "github.com/operator-framework/operator-lib/proxy"
|
@@ -468,7 +469,12 @@ func (r *DPAReconciler) customizeVeleroDeployment(dpa *oadpv1alpha1.DataProtecti
|
468 | 469 | if err := r.customizeVeleroContainer(dpa, veleroDeployment, veleroContainer, isSTSNeeded); err != nil {
|
469 | 470 | return err
|
470 | 471 | }
|
471 |
| - return credentials.AppendPluginSpecificSpecs(dpa, veleroDeployment, veleroContainer) |
| 472 | + |
| 473 | + providerNeedsDefaultCreds, hasCloudStorage, err := r.noDefaultCredentials(*dpa) |
| 474 | + if err != nil { |
| 475 | + return err |
| 476 | + } |
| 477 | + return credentials.AppendPluginSpecificSpecs(dpa, veleroDeployment, veleroContainer, providerNeedsDefaultCreds, hasCloudStorage) |
472 | 478 | }
|
473 | 479 |
|
474 | 480 | func (r *DPAReconciler) customizeVeleroContainer(dpa *oadpv1alpha1.DataProtectionApplication, veleroDeployment *appsv1.Deployment, veleroContainer *corev1.Container, isSTSNeeded bool) error {
|
@@ -611,3 +617,39 @@ func (r *DPAReconciler) getResticResourceReqs(dpa *oadpv1alpha1.DataProtectionAp
|
611 | 617 |
|
612 | 618 | return ResourcesReqs
|
613 | 619 | }
|
| 620 | + |
| 621 | +func (r DPAReconciler) noDefaultCredentials(dpa oadpv1alpha1.DataProtectionApplication) (map[string]bool, bool, error) { |
| 622 | + providerNeedsDefaultCreds := map[string]bool{} |
| 623 | + hasCloudStorage := false |
| 624 | + |
| 625 | + for _, bsl := range dpa.Spec.BackupLocations { |
| 626 | + if bsl.Velero != nil && bsl.Velero.Credential == nil { |
| 627 | + providerNeedsDefaultCreds[strings.TrimPrefix(bsl.Velero.Provider, "velero.io/")] = true |
| 628 | + } |
| 629 | + if bsl.CloudStorage != nil { |
| 630 | + hasCloudStorage = true |
| 631 | + if bsl.CloudStorage.Credential == nil { |
| 632 | + cloudStroage := oadpv1alpha1.CloudStorage{} |
| 633 | + err := r.Get(r.Context, types.NamespacedName{Name: bsl.CloudStorage.CloudStorageRef.Name, Namespace: dpa.Namespace}, &cloudStroage) |
| 634 | + if err != nil { |
| 635 | + return nil, false, err |
| 636 | + } |
| 637 | + providerNeedsDefaultCreds[string(cloudStroage.Spec.Provider)] = true |
| 638 | + } |
| 639 | + } |
| 640 | + } |
| 641 | + |
| 642 | + for _, vsl := range dpa.Spec.SnapshotLocations { |
| 643 | + if vsl.Velero != nil { |
| 644 | + // To handle the case where we want to manually hand the credentials for a cloud storage created |
| 645 | + // Bucket credententials via configuration. Only AWS is supported |
| 646 | + provider := strings.TrimPrefix(vsl.Velero.Provider, "velero.io") |
| 647 | + if provider != string(oadpv1alpha1.AWSBucketProvider) { |
| 648 | + providerNeedsDefaultCreds[provider] = true |
| 649 | + } |
| 650 | + } |
| 651 | + } |
| 652 | + |
| 653 | + return providerNeedsDefaultCreds, hasCloudStorage, nil |
| 654 | + |
| 655 | +} |
0 commit comments