From ce09996854ae6bcd44d209a3ae2b297c8b80fc1f Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Wed, 6 Aug 2025 22:14:02 +0800 Subject: [PATCH] Fix [Basic][Snapshot] failure on AddintionalBSL case. It failed with fetching the wrong VolumeInfo. Correct it. Add AdditionalBSL label for applied cases. Remove not needed default BSL kibishii test for additional bsl case. Signed-off-by: Xun Jiang --- test/e2e/backup/backup.go | 49 ++++++++++++---------------- test/e2e/e2e_suite_test.go | 12 +++---- test/util/common/common.go | 5 +++ test/util/kibishii/kibishii_utils.go | 44 ++++++++++--------------- 4 files changed, 50 insertions(+), 60 deletions(-) diff --git a/test/e2e/backup/backup.go b/test/e2e/backup/backup.go index b0e7c06da..48ebd0500 100644 --- a/test/e2e/backup/backup.go +++ b/test/e2e/backup/backup.go @@ -26,6 +26,7 @@ import ( . "github.com/onsi/gomega" . "github.com/vmware-tanzu/velero/test" + "github.com/vmware-tanzu/velero/test/util/common" . "github.com/vmware-tanzu/velero/test/util/k8s" . "github.com/vmware-tanzu/velero/test/util/kibishii" . "github.com/vmware-tanzu/velero/test/util/velero" @@ -194,11 +195,10 @@ func BackupRestoreTest(backupRestoreTestConfig BackupRestoreTestConfig) { Expect(CreateSecretFromFiles(context.TODO(), *veleroCfg.ClientToInstallVelero, veleroCfg.VeleroNamespace, secretName, files)).To(Succeed()) // Create additional BSL using credential - additionalBsl := "add-bsl" Expect(VeleroCreateBackupLocation(context.TODO(), veleroCfg.VeleroCLI, veleroCfg.VeleroNamespace, - additionalBsl, + common.AdditionalBSLName, veleroCfg.AdditionalBSLProvider, veleroCfg.AdditionalBSLBucket, veleroCfg.AdditionalBSLPrefix, @@ -207,32 +207,25 @@ func BackupRestoreTest(backupRestoreTestConfig BackupRestoreTestConfig) { secretKey, )).To(Succeed()) - BSLs := []string{"default", additionalBsl} - - for _, bsl := range BSLs { - backupName = fmt.Sprintf("backup-%s", bsl) - restoreName = fmt.Sprintf("restore-%s", bsl) - // We limit the length of backup name here to avoid the issue of vsphere plugin https://github.com/vmware-tanzu/velero-plugin-for-vsphere/issues/370 - // We can remove the logic once the issue is fixed - if bsl == "default" { - backupName = fmt.Sprintf("%s-%s", backupName, UUIDgen) - restoreName = fmt.Sprintf("%s-%s", restoreName, UUIDgen) - } - veleroCfg.ProvideSnapshotsVolumeParam = !provideSnapshotVolumesParmInBackup - workloadNS := kibishiiNamespace + bsl - Expect( - RunKibishiiTests( - veleroCfg, - backupName, - restoreName, - bsl, - workloadNS, - useVolumeSnapshots, - !useVolumeSnapshots, - ), - ).To(Succeed(), - "Failed to successfully backup and restore Kibishii namespace using BSL %s", bsl) - } + // We limit the length of backup name here to avoid the issue of vsphere plugin + // https://github.com/vmware-tanzu/velero-plugin-for-vsphere/issues/370 + // We can remove the logic once the issue is fixed + backupName = "backup-" + common.AdditionalBSLName + restoreName = "restore-" + common.AdditionalBSLName + veleroCfg.ProvideSnapshotsVolumeParam = !provideSnapshotVolumesParmInBackup + workloadNS := kibishiiNamespace + common.AdditionalBSLName + Expect( + RunKibishiiTests( + veleroCfg, + backupName, + restoreName, + common.AdditionalBSLName, + workloadNS, + useVolumeSnapshots, + !useVolumeSnapshots, + ), + ).To(Succeed(), + "Failed to successfully backup and restore Kibishii namespace with additional BSL %s", common.AdditionalBSLName) }) }) } diff --git a/test/e2e/e2e_suite_test.go b/test/e2e/e2e_suite_test.go index ccbef8668..0159af8af 100644 --- a/test/e2e/e2e_suite_test.go +++ b/test/e2e/e2e_suite_test.go @@ -398,25 +398,25 @@ var _ = Describe( // Test backup and restore of Kibishii using restic var _ = Describe( "Velero tests on cluster using the plugin provider for object storage and Restic for volume backups", - Label("Basic", "Restic"), + Label("Basic", "Restic", "AdditionalBSL"), BackupRestoreWithRestic, ) var _ = Describe( "Velero tests on cluster using the plugin provider for object storage and snapshots for volume backups", - Label("Basic", "Snapshot", "SkipVanillaZfs"), + Label("Basic", "Snapshot", "SkipVanillaZfs", "AdditionalBSL"), BackupRestoreWithSnapshots, ) var _ = Describe( "Velero tests on cluster using the plugin provider for object storage and snapshots for volume backups", - Label("Basic", "Snapshot", "RetainPV"), + Label("Basic", "Snapshot", "RetainPV", "AdditionalBSL"), BackupRestoreRetainedPVWithSnapshots, ) var _ = Describe( "Velero tests on cluster using the plugin provider for object storage and snapshots for volume backups", - Label("Basic", "Restic", "RetainPV"), + Label("Basic", "Restic", "RetainPV", "AdditionalBSL"), BackupRestoreRetainedPVWithRestic, ) @@ -597,12 +597,12 @@ var _ = Describe( var _ = Describe( "Local backups will be deleted once the corresponding backup storage location is deleted", - Label("BSL", "Deletion", "Snapshot", "SkipVanillaZfs"), + Label("BSL", "Deletion", "Snapshot", "SkipVanillaZfs", "AdditionalBSL"), BslDeletionWithSnapshots, ) var _ = Describe( "Local backups and Restic repos will be deleted once the corresponding backup storage location is deleted", - Label("BSL", "Deletion", "Restic"), + Label("BSL", "Deletion", "Restic", "AdditionalBSL"), BslDeletionWithRestic, ) diff --git a/test/util/common/common.go b/test/util/common/common.go index e22a25662..853c0bfc9 100644 --- a/test/util/common/common.go +++ b/test/util/common/common.go @@ -17,6 +17,11 @@ const ( WorkerOSWindows string = "windows" ) +const ( + DefaultBSLName string = "default" + AdditionalBSLName string = "add-bsl" +) + type OsCommandLine struct { Cmd string Args []string diff --git a/test/util/kibishii/kibishii_utils.go b/test/util/kibishii/kibishii_utils.go index f75f2c363..f55b4226c 100644 --- a/test/util/kibishii/kibishii_utils.go +++ b/test/util/kibishii/kibishii_utils.go @@ -142,12 +142,25 @@ func RunKibishiiTests( fmt.Printf("VeleroBackupNamespace done %s\n", time.Now().Format("2006-01-02 15:04:05")) fmt.Printf("KibishiiVerifyAfterBackup %s\n", time.Now().Format("2006-01-02 15:04:05")) + + objectStoreProvider := veleroCfg.ObjectStoreProvider + cloudCredentialsFile := veleroCfg.CloudCredentialsFile + bslBucket := veleroCfg.BSLBucket + bslPrefix := veleroCfg.BSLPrefix + bslConfig := veleroCfg.BSLConfig + if backupLocation == common.AdditionalBSLName { + objectStoreProvider = veleroCfg.AdditionalBSLProvider + cloudCredentialsFile = veleroCfg.AdditionalBSLCredentials + bslBucket = veleroCfg.AdditionalBSLBucket + bslPrefix = veleroCfg.AdditionalBSLPrefix + bslConfig = veleroCfg.AdditionalBSLConfig + } backupVolumeInfo, err := GetVolumeInfo( - veleroCfg.ObjectStoreProvider, - veleroCfg.CloudCredentialsFile, - veleroCfg.BSLBucket, - veleroCfg.BSLPrefix, - veleroCfg.BSLConfig, + objectStoreProvider, + cloudCredentialsFile, + bslBucket, + bslPrefix, + bslConfig, backupName, BackupObjectsPrefix+"/"+backupName, ) @@ -187,27 +200,6 @@ func RunKibishiiTests( if pvbNum != pvCount { return errors.New(fmt.Sprintf("PVB count %d should be %d in namespace %s", pvbNum, pvCount, kibishiiNamespace)) } - if providerName != Vsphere { - // wait for a period to confirm no snapshots content exist for the backup - time.Sleep(1 * time.Minute) - if strings.EqualFold(veleroFeatures, FeatureCSI) { - _, err = BuildSnapshotCheckPointFromVolumeInfo(veleroCfg, backupVolumeInfo, 0, - kibishiiNamespace, backupName, KibishiiPVCNameList) - if err != nil { - return errors.Wrap(err, "failed to get snapshot checkPoint") - } - } else { - err = CheckSnapshotsInProvider( - veleroCfg, - backupName, - SnapshotCheckPoint{}, - false, - ) - if err != nil { - return errors.Wrap(err, "exceed waiting for snapshot created in cloud") - } - } - } } // Modify PV data right after backup. If PV's reclaim policy is retain, PV will be restored with the origin resource config