From 0133462ecf0c074e8dcfb0194d1a30d8cf07edf2 Mon Sep 17 00:00:00 2001 From: Oksana Grishchenko <91597950+oksana-grishchenko@users.noreply.github.com> Date: Mon, 9 Sep 2024 15:50:31 +0200 Subject: [PATCH] EVEREST-1427 Fix PG use the same bucket (#512) --- controllers/providers/pg/applier.go | 29 +- .../providers/pg/pg_repos_reconciler.go | 30 +- controllers/providers/pg/pg_test.go | 388 +++++++++++------- 3 files changed, 262 insertions(+), 185 deletions(-) diff --git a/controllers/providers/pg/applier.go b/controllers/providers/pg/applier.go index da4a06fb6..96b6d8d4e 100644 --- a/controllers/providers/pg/applier.go +++ b/controllers/providers/pg/applier.go @@ -716,7 +716,7 @@ func (p *applier) createPGBackrestSecret( func (p *applier) addBackupStoragesByRestores( backupList *everestv1alpha1.DatabaseClusterBackupList, restoreList *everestv1alpha1.DatabaseClusterRestoreList, - backupStorages map[string]everestv1alpha1.BackupStorageSpec, + backupStorages map[string]everestv1alpha1.BackupStorage, backupStoragesSecrets map[string]*corev1.Secret, ) error { ctx := p.ctx @@ -763,7 +763,7 @@ func (p *applier) addBackupStoragesByRestores( fmt.Errorf("failed to get backup storage secret %s", backupStorage.Spec.CredentialsSecretName)) } - backupStorages[backupStorage.Name] = backupStorage.Spec + backupStorages[backupStorage.Name] = *backupStorage backupStoragesSecrets[backupStorage.Name] = backupStorageSecret // XXX We need to add this restore's backup storage to the list of @@ -792,7 +792,7 @@ func (p *applier) addBackupStoragesByRestores( // Add backup storages used by backup schedules to the list. func (p *applier) addBackupStoragesBySchedules( backupSchedules []everestv1alpha1.BackupSchedule, - backupStorages map[string]everestv1alpha1.BackupStorageSpec, + backupStorages map[string]everestv1alpha1.BackupStorage, backupStoragesSecrets map[string]*corev1.Secret, ) error { ctx := p.ctx @@ -816,7 +816,7 @@ func (p *applier) addBackupStoragesBySchedules( return errors.Join(err, fmt.Errorf("failed to get backup storage secret %s", backupStorage.Spec.CredentialsSecretName)) } - backupStorages[backupStorage.Name] = backupStorage.Spec + backupStorages[backupStorage.Name] = *backupStorage backupStoragesSecrets[backupStorage.Name] = backupStorageSecret } return nil @@ -825,7 +825,7 @@ func (p *applier) addBackupStoragesBySchedules( // Add backup storages used by on-demand backups to the list. func (p *applier) addBackupStoragesByOnDemandBackups( backupList *everestv1alpha1.DatabaseClusterBackupList, - backupStorages map[string]everestv1alpha1.BackupStorageSpec, + backupStorages map[string]everestv1alpha1.BackupStorage, backupStoragesSecrets map[string]*corev1.Secret, ) error { ctx := p.ctx @@ -847,7 +847,7 @@ func (p *applier) addBackupStoragesByOnDemandBackups( return fmt.Errorf("failed to get backup storage secret '%s': %w", backupStorage.Spec.CredentialsSecretName, err) } - backupStorages[backupStorage.Name] = backupStorage.Spec + backupStorages[backupStorage.Name] = *backupStorage backupStoragesSecrets[backupStorage.Name] = backupStorageSecret } return nil @@ -890,7 +890,7 @@ func (p *applier) reconcilePGBackupsSpec() (pgv2.Backups, error) { return pgv2.Backups{}, err } - backupStorages := map[string]everestv1alpha1.BackupStorageSpec{} + backupStorages := map[string]everestv1alpha1.BackupStorage{} backupStoragesSecrets := map[string]*corev1.Secret{} // Add backup storages used by on-demand backups to the list @@ -1001,7 +1001,7 @@ func reconcilePGBackRestRepos( oldRepos []crunchyv1beta1.PGBackRestRepo, backupSchedules []everestv1alpha1.BackupSchedule, backups []everestv1alpha1.DatabaseClusterBackup, - backupStorages map[string]everestv1alpha1.BackupStorageSpec, + backupStorages map[string]everestv1alpha1.BackupStorage, backupStoragesSecrets map[string]*corev1.Secret, engineStorage everestv1alpha1.Storage, db *everestv1alpha1.DatabaseCluster, @@ -1053,16 +1053,17 @@ func reconcilePGBackRestRepos( return newRepos, reposReconciler.pgBackRestGlobal, pgBackrestIniBytes, nil } -func backupStorageNameFromRepo(backupStorages map[string]everestv1alpha1.BackupStorageSpec, repo crunchyv1beta1.PGBackRestRepo) string { - for name, spec := range backupStorages { +func backupStorageNameFromRepo(backupStorages map[string]everestv1alpha1.BackupStorage, repo crunchyv1beta1.PGBackRestRepo, dbNamespace string) string { + for name, bs := range backupStorages { if repo.S3 != nil && - repo.S3.Bucket == spec.Bucket && - repo.S3.Region == spec.Region && - repo.S3.Endpoint == spec.EndpointURL { + dbNamespace == bs.Namespace && + repo.S3.Bucket == bs.Spec.Bucket && + repo.S3.Region == bs.Spec.Region && + repo.S3.Endpoint == bs.Spec.EndpointURL { return name } - if repo.Azure != nil && repo.Azure.Container == spec.Bucket { + if repo.Azure != nil && repo.Azure.Container == bs.Spec.Bucket { return name } } diff --git a/controllers/providers/pg/pg_repos_reconciler.go b/controllers/providers/pg/pg_repos_reconciler.go index 8c8483800..5970cea57 100644 --- a/controllers/providers/pg/pg_repos_reconciler.go +++ b/controllers/providers/pg/pg_repos_reconciler.go @@ -132,7 +132,7 @@ func removeString(s []string, i int) []string { // Update repos based on the existing backups. func (p *pgReposReconciler) reconcileBackups( backups []everestv1alpha1.DatabaseClusterBackup, - backupStorages map[string]everestv1alpha1.BackupStorageSpec, + backupStorages map[string]everestv1alpha1.BackupStorage, backupStoragesSecrets map[string]*corev1.Secret, db *everestv1alpha1.DatabaseCluster, ) error { @@ -163,7 +163,7 @@ func (p *pgReposReconciler) reconcileBackups( if !ok { return fmt.Errorf("failed to cast repo %v", er.Value) } - repoBackupStorageName := backupStorageNameFromRepo(backupStorages, repo) + repoBackupStorageName := backupStorageNameFromRepo(backupStorages, repo, db.Namespace) if backup.Spec.BackupStorageName != repoBackupStorageName { continue } @@ -182,7 +182,7 @@ func (p *pgReposReconciler) reconcileBackups( } } - repo, err := genPGBackrestRepo(repoName, backupStorage, nil) + repo, err := genPGBackrestRepo(repoName, backupStorage.Spec, nil) if err != nil { return err } @@ -190,7 +190,7 @@ func (p *pgReposReconciler) reconcileBackups( // Keep track of backup storages which are already in use by a repo p.backupStoragesInRepos[backup.Spec.BackupStorageName] = struct{}{} - p.addRepoToPGGlobal(backupStorage.VerifyTLS, repo.Name, backupStorages[repo.Name].ForcePathStyle, nil, db) + p.addRepoToPGGlobal(backupStorage.Spec.VerifyTLS, repo.Name, backupStorages[repo.Name].Spec.ForcePathStyle, nil, db) err = updatePGIni(p.pgBackRestSecretIni, backupStoragesSecrets[backup.Spec.BackupStorageName], repo) if err != nil { return errors.Join(err, errors.New("failed to add backup storage credentials to PGBackrest secret data")) @@ -202,7 +202,7 @@ func (p *pgReposReconciler) reconcileBackups( // Update the schedules of the repos which already exist but have the wrong // schedule and move them to the reconciled list. func (p *pgReposReconciler) reconcileExistingSchedules( - backupStorages map[string]everestv1alpha1.BackupStorageSpec, + backupStorages map[string]everestv1alpha1.BackupStorage, backupStoragesSecrets map[string]*corev1.Secret, db *everestv1alpha1.DatabaseCluster, ) error { @@ -226,7 +226,7 @@ func (p *pgReposReconciler) reconcileExistingSchedules( if !ok { return fmt.Errorf("failed to cast repo %v", er.Value) } - repoBackupStorageName := backupStorageNameFromRepo(backupStorages, repo) + repoBackupStorageName := backupStorageNameFromRepo(backupStorages, repo, db.Namespace) if backupSchedule.BackupStorageName != repoBackupStorageName || repo.BackupSchedules == nil || repo.BackupSchedules.Full == nil || @@ -243,7 +243,7 @@ func (p *pgReposReconciler) reconcileExistingSchedules( // Keep track of backup storages which are already in use by a repo p.backupStoragesInRepos[backupSchedule.BackupStorageName] = struct{}{} - p.addRepoToPGGlobal(backupStorages[repo.Name].VerifyTLS, repo.Name, backupStorages[repo.Name].ForcePathStyle, &backupSchedule.RetentionCopies, db) + p.addRepoToPGGlobal(backupStorages[repo.Name].Spec.VerifyTLS, repo.Name, backupStorages[repo.Name].Spec.ForcePathStyle, &backupSchedule.RetentionCopies, db) err := updatePGIni(p.pgBackRestSecretIni, backupStoragesSecrets[backupSchedule.BackupStorageName], repo) if err != nil { return errors.Join(err, errors.New("failed to add backup storage credentials to PGBackrest secret data")) @@ -256,7 +256,7 @@ func (p *pgReposReconciler) reconcileExistingSchedules( // Update repos based on the schedules. func (p *pgReposReconciler) reconcileRepos( - backupStorages map[string]everestv1alpha1.BackupStorageSpec, + backupStorages map[string]everestv1alpha1.BackupStorage, backupStoragesSecrets map[string]*corev1.Secret, db *everestv1alpha1.DatabaseCluster, ) error { @@ -270,7 +270,7 @@ func (p *pgReposReconciler) reconcileRepos( if !ok { return fmt.Errorf("failed to cast repo %v", er.Value) } - repoBackupStorageName := backupStorageNameFromRepo(backupStorages, repo) + repoBackupStorageName := backupStorageNameFromRepo(backupStorages, repo, db.Namespace) for eb := p.backupSchedulesToBeReconciled.Front(); eb != nil; eb = ebNext { // Save the next element because we might remove the current one ebNext = eb.Next() @@ -293,7 +293,7 @@ func (p *pgReposReconciler) reconcileRepos( // Keep track of backup storages which are already in use by a repo p.backupStoragesInRepos[backupSchedule.BackupStorageName] = struct{}{} - p.addRepoToPGGlobal(backupStorages[repo.Name].VerifyTLS, repo.Name, backupStorages[repo.Name].ForcePathStyle, &backupSchedule.RetentionCopies, db) + p.addRepoToPGGlobal(backupStorages[repo.Name].Spec.VerifyTLS, repo.Name, backupStorages[repo.Name].Spec.ForcePathStyle, &backupSchedule.RetentionCopies, db) err := updatePGIni(p.pgBackRestSecretIni, backupStoragesSecrets[backupSchedule.BackupStorageName], repo) if err != nil { return errors.Join(err, errors.New("failed to add backup storage credentials to PGBackrest secret data")) @@ -306,7 +306,7 @@ func (p *pgReposReconciler) reconcileRepos( } func (p *pgReposReconciler) addNewSchedules( //nolint:gocognit - backupStorages map[string]everestv1alpha1.BackupStorageSpec, + backupStorages map[string]everestv1alpha1.BackupStorage, backupStoragesSecrets map[string]*corev1.Secret, db *everestv1alpha1.DatabaseCluster, ) error { @@ -332,7 +332,7 @@ func (p *pgReposReconciler) addNewSchedules( //nolint:gocognit if !ok { return fmt.Errorf("failed to cast repo %v", er.Value) } - repoBackupStorageName := backupStorageNameFromRepo(backupStorages, repo) + repoBackupStorageName := backupStorageNameFromRepo(backupStorages, repo, db.Namespace) if backupSchedule.BackupStorageName != repoBackupStorageName || repo.BackupSchedules != nil { continue @@ -350,7 +350,7 @@ func (p *pgReposReconciler) addNewSchedules( //nolint:gocognit if !ok { return fmt.Errorf("failed to cast repo %v", er.Value) } - repoBackupStorageName := backupStorageNameFromRepo(backupStorages, repo) + repoBackupStorageName := backupStorageNameFromRepo(backupStorages, repo, db.Namespace) if backupSchedule.BackupStorageName != repoBackupStorageName || repo.BackupSchedules != nil { continue @@ -370,7 +370,7 @@ func (p *pgReposReconciler) addNewSchedules( //nolint:gocognit } } - repo, err := genPGBackrestRepo(repoName, backupStorage, &backupSchedule.Schedule) + repo, err := genPGBackrestRepo(repoName, backupStorage.Spec, &backupSchedule.Schedule) if err != nil { return err } @@ -379,7 +379,7 @@ func (p *pgReposReconciler) addNewSchedules( //nolint:gocognit // Keep track of backup storages which are already in use by a repo p.backupStoragesInRepos[backupSchedule.BackupStorageName] = struct{}{} - p.addRepoToPGGlobal(backupStorage.VerifyTLS, repo.Name, backupStorages[repo.Name].ForcePathStyle, &backupSchedule.RetentionCopies, db) + p.addRepoToPGGlobal(backupStorage.Spec.VerifyTLS, repo.Name, backupStorages[repo.Name].Spec.ForcePathStyle, &backupSchedule.RetentionCopies, db) err = updatePGIni(p.pgBackRestSecretIni, backupStoragesSecrets[backupSchedule.BackupStorageName], repo) if err != nil { return errors.Join(err, errors.New("failed to add backup storage credentials to PGBackrest secret data")) diff --git a/controllers/providers/pg/pg_test.go b/controllers/providers/pg/pg_test.go index 2f39c3625..6ee610eef 100644 --- a/controllers/providers/pg/pg_test.go +++ b/controllers/providers/pg/pg_test.go @@ -229,12 +229,14 @@ func TestReconcilePGBackRestReposEmptyAddRequest(t *testing.T) { }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -309,12 +311,14 @@ func TestReconcilePGBackRestReposEmptyAddSchedule(t *testing.T) { }, } testBackupRequests := []everestv1alpha1.DatabaseClusterBackup{} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -422,12 +426,14 @@ func TestReconcilePGBackRestReposSameStorageOneRequestAddRequest(t *testing.T) { }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -533,12 +539,14 @@ func TestReconcilePGBackRestReposSameStorageOneRequestAddSchedule(t *testing.T) }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -650,12 +658,14 @@ func TestReconcilePGBackRestReposSameStorageOneScheduleAddRequest(t *testing.T) }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -768,12 +778,14 @@ func TestReconcilePGBackRestReposSameStorageOneScheduleAddSchedule(t *testing.T) }, } testBackupRequests := []everestv1alpha1.DatabaseClusterBackup{} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -896,18 +908,22 @@ func TestReconcilePGBackRestReposDifferentStorageOneScheduleAddRequest(t *testin }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, "backupStorage2": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket2", - Region: "region2", - EndpointURL: "endpoint2", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket2", + Region: "region2", + EndpointURL: "endpoint2", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -1034,18 +1050,22 @@ func TestReconcilePGBackRestReposDifferentStorageOneScheduleAddSchedule(t *testi }, } testBackupRequests := []everestv1alpha1.DatabaseClusterBackup{} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, "backupStorage2": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket2", - Region: "region2", - EndpointURL: "endpoint2", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket2", + Region: "region2", + EndpointURL: "endpoint2", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -1175,18 +1195,22 @@ func TestReconcilePGBackRestReposDifferentStorageOneScheduleAddScheduleNoOrder(t }, } testBackupRequests := []everestv1alpha1.DatabaseClusterBackup{} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, "backupStorage2": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket2", - Region: "region2", - EndpointURL: "endpoint2", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket2", + Region: "region2", + EndpointURL: "endpoint2", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -1315,18 +1339,22 @@ func TestReconcilePGBackRestReposDifferentStorageOneScheduleAddRequestNoOrder(t }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, "backupStorage2": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket2", - Region: "region2", - EndpointURL: "endpoint2", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket2", + Region: "region2", + EndpointURL: "endpoint2", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -1447,12 +1475,14 @@ func TestReconcilePGBackRestReposSameStorageOneScheduleChangeSchedule(t *testing }, } testBackupRequests := []everestv1alpha1.DatabaseClusterBackup{} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -1566,12 +1596,14 @@ func TestReconcilePGBackRestReposSameStorageOneScheduleChangeScheduleAddSchedule }, } testBackupRequests := []everestv1alpha1.DatabaseClusterBackup{} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -1687,12 +1719,14 @@ func TestReconcilePGBackRestReposSameStorageOneScheduleDeleteScheduleAddRequest( }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -1807,12 +1841,14 @@ func TestReconcilePGBackRestReposSameStorageTwoSchedulesDelete2ndSchedule(t *tes }, } testBackupRequests := []everestv1alpha1.DatabaseClusterBackup{} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -1930,12 +1966,14 @@ func TestReconcilePGBackRestReposSameStorageTwoSchedulesDelete1stSchedule(t *tes }, } testBackupRequests := []everestv1alpha1.DatabaseClusterBackup{} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -2034,7 +2072,7 @@ func TestReconcilePGBackRestReposOneScheduleDeleteSchedule(t *testing.T) { } testBackupSchedules := []everestv1alpha1.BackupSchedule{} testBackupRequests := []everestv1alpha1.DatabaseClusterBackup{} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{} + testBackupStorages := map[string]everestv1alpha1.BackupStorage{} testBackupStoragesSecrets := map[string]*corev1.Secret{} testEngineStorage := everestv1alpha1.Storage{ Size: testEngineStorageSize, @@ -2109,7 +2147,7 @@ func TestReconcilePGBackRestReposOneRequestDeleteRequest(t *testing.T) { } testBackupSchedules := []everestv1alpha1.BackupSchedule{} testBackupRequests := []everestv1alpha1.DatabaseClusterBackup{} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{} + testBackupStorages := map[string]everestv1alpha1.BackupStorage{} testBackupStoragesSecrets := map[string]*corev1.Secret{} testEngineStorage := everestv1alpha1.Storage{ Size: testEngineStorageSize, @@ -2238,12 +2276,14 @@ func TestReconcilePGBackRestReposSameStorageThreeSchedulesAddSchedule(t *testing }, } testBackupRequests := []everestv1alpha1.DatabaseClusterBackup{} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -2347,30 +2387,38 @@ func TestReconcilePGBackRestReposDifferentStorageThreeRequestsAddRequest(t *test }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, "backupStorage2": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket2", - Region: "region2", - EndpointURL: "endpoint2", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket2", + Region: "region2", + EndpointURL: "endpoint2", + }, }, "backupStorage3": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket3", - Region: "region3", - EndpointURL: "endpoint3", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket3", + Region: "region3", + EndpointURL: "endpoint3", + }, }, "backupStorage4": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket4", - Region: "region4", - EndpointURL: "endpoint4", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket4", + Region: "region4", + EndpointURL: "endpoint4", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -2508,12 +2556,14 @@ func TestReconcilePGBackRestReposSameStorageThreeSchedulesAddRequest(t *testing. }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "backupStorage1": { - Type: everestv1alpha1.BackupStorageTypeS3, - Bucket: "bucket1", - Region: "region1", - EndpointURL: "endpoint1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: everestv1alpha1.BackupStorageTypeS3, + Bucket: "bucket1", + Region: "region1", + EndpointURL: "endpoint1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -2609,7 +2659,7 @@ func TestReconcilePGBackRestReposUnknownStorageRequest(t *testing.T) { }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{} + testBackupStorages := map[string]everestv1alpha1.BackupStorage{} testBackupStoragesSecrets := map[string]*corev1.Secret{} testEngineStorageSize, _ := resource.ParseQuantity("15G") testEngineStorageClass := "someSC" @@ -2664,14 +2714,18 @@ func TestReconcilePGBackRestReposScheduleAfterOnDemandToAnotherStorage(t *testin BackupStorageName: "bs1", }, }} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "bs1": { - Type: "s3", - Bucket: "bucket1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: "s3", + Bucket: "bucket1", + }, }, "bs2": { - Type: "s3", - Bucket: "bucket2", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: "s3", + Bucket: "bucket2", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -2770,14 +2824,18 @@ func TestReconcilePGBackRestReposOnDemandAfterScheduleToAnotherStorage(t *testin BackupStorageName: "bs2", }, }} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "bs1": { - Type: "s3", - Bucket: "bucket1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: "s3", + Bucket: "bucket1", + }, }, "bs2": { - Type: "s3", - Bucket: "bucket2", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: "s3", + Bucket: "bucket2", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -2899,18 +2957,24 @@ func TestReconcilePGBackRestReposScheduleAfter3OnDemands(t *testing.T) { }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "bs1": { - Type: "s3", - Bucket: "bucket1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: "s3", + Bucket: "bucket1", + }, }, "bs2": { - Type: "s3", - Bucket: "bucket2", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: "s3", + Bucket: "bucket2", + }, }, "bs3": { - Type: "s3", - Bucket: "bucket3", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: "s3", + Bucket: "bucket3", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -3048,18 +3112,24 @@ func TestReconcilePGBackRestReposOnDemand3OnDemandsAndSchedule(t *testing.T) { }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "bs1": { - Type: "s3", - Bucket: "bucket1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: "s3", + Bucket: "bucket1", + }, }, "bs2": { - Type: "s3", - Bucket: "bucket2", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: "s3", + Bucket: "bucket2", + }, }, "bs3": { - Type: "s3", - Bucket: "bucket3", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: "s3", + Bucket: "bucket3", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -3168,10 +3238,12 @@ func TestReconcilePGBackRestBackupAndScheduleToTheSameStorage(t *testing.T) { }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "bs1": { - Type: "s3", - Bucket: "bucket1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: "s3", + Bucket: "bucket1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -3254,10 +3326,12 @@ func TestReconcilePGBackRestNewBackupAndNewScheduleToTheSameStorage(t *testing.T }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "bs1": { - Type: "s3", - Bucket: "bucket1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: "s3", + Bucket: "bucket1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -3344,10 +3418,12 @@ func TestReconcilePGBackRestBackupAndNewScheduleToTheSameStorage(t *testing.T) { }, }, } - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{ + testBackupStorages := map[string]everestv1alpha1.BackupStorage{ "bs1": { - Type: "s3", - Bucket: "bucket1", + Spec: everestv1alpha1.BackupStorageSpec{ + Type: "s3", + Bucket: "bucket1", + }, }, } testBackupStoragesSecrets := map[string]*corev1.Secret{ @@ -3418,7 +3494,7 @@ func TestReconcilePGBackRestReposUnknownStorageSchedule(t *testing.T) { }, } testBackupRequests := []everestv1alpha1.DatabaseClusterBackup{} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{} + testBackupStorages := map[string]everestv1alpha1.BackupStorage{} testBackupStoragesSecrets := map[string]*corev1.Secret{} testEngineStorageSize, _ := resource.ParseQuantity("15G") testEngineStorageClass := "someSC" @@ -3451,7 +3527,7 @@ func TestReconcilePGBackRestReposEmpty(t *testing.T) { testRepos := []crunchyv1beta1.PGBackRestRepo{} testBackupSchedules := []everestv1alpha1.BackupSchedule{} testBackupRequests := []everestv1alpha1.DatabaseClusterBackup{} - testBackupStorages := map[string]everestv1alpha1.BackupStorageSpec{} + testBackupStorages := map[string]everestv1alpha1.BackupStorage{} testBackupStoragesSecrets := map[string]*corev1.Secret{} testEngineStorageSize, _ := resource.ParseQuantity("15G") testEngineStorageClass := "someSC"