diff --git a/e2e/cephfs.go b/e2e/cephfs.go index f790c42477b7..0818b9ce2eea 100644 --- a/e2e/cephfs.go +++ b/e2e/cephfs.go @@ -337,7 +337,7 @@ var _ = Describe(cephfsType, func() { framework.Failf("failed to create CephFS storageclass: %v", err) } scName := "csi-cephfs-sc" - base, err := newVolumeGroupSnapshotBase(f, scName, f.UniqueName, false, deployTimeout, 3) + base, err := newVolumeGroupSnapshotBase(f, f.UniqueName, scName, false, deployTimeout, 3) if err != nil { framework.Failf("failed to create volumeGroupSnapshot Base: %v", err) } diff --git a/e2e/volumegroupsnapshot.go b/e2e/volumegroupsnapshot.go index 73e01a0365dd..5c573e6dd1ba 100644 --- a/e2e/volumegroupsnapshot.go +++ b/e2e/volumegroupsnapshot.go @@ -59,6 +59,7 @@ func (c *cephFS) GetVolumeGroupSnapshotClass() (*groupsnapapi.VolumeGroupSnapsho } func (c *cephFS) ValidateResourcesForCreate(vgs *groupsnapapi.VolumeGroupSnapshot) error { + ctx := context.TODO() metadataPool, err := getCephFSMetadataPoolName(c.framework, fileSystemName) if err != nil { return fmt.Errorf("failed getting cephFS metadata pool name: %w", err) @@ -72,14 +73,14 @@ func (c *cephFS) ValidateResourcesForCreate(vgs *groupsnapapi.VolumeGroupSnapsho // we are creating 1 snapshot for each source PVC, validate the snapshot count for _, pvcSnap := range vgs.Status.PVCVolumeSnapshotRefList { - pvc, err := c.framework.ClientSet.CoreV1().PersistentVolumeClaims(vgs.Namespace).Get(context.TODO(), + pvc, err := c.framework.ClientSet.CoreV1().PersistentVolumeClaims(vgs.Namespace).Get(ctx, pvcSnap.PersistentVolumeClaimRef.Name, metav1.GetOptions{}) if err != nil { return fmt.Errorf("failed to get PVC: %w", err) } pv := pvc.Spec.VolumeName - pvObj, err := c.framework.ClientSet.CoreV1().PersistentVolumes().Get(context.TODO(), pv, metav1.GetOptions{}) + pvObj, err := c.framework.ClientSet.CoreV1().PersistentVolumes().Get(ctx, pv, metav1.GetOptions{}) if err != nil { return fmt.Errorf("failed to get PV: %w", err) } diff --git a/e2e/volumegroupsnapshot_base.go b/e2e/volumegroupsnapshot_base.go index 531c83a1c857..d358bf9796c1 100644 --- a/e2e/volumegroupsnapshot_base.go +++ b/e2e/volumegroupsnapshot_base.go @@ -169,6 +169,7 @@ func (v *volumeGroupSnapshotterBase) CreatePVCClones(vgs *groupsnapapi.VolumeGro return nil, fmt.Errorf("failed to get PVC: %w", err) } pvcs[i] = pvc.DeepCopy() + pvcs[i].Name = fmt.Sprintf("%s-clone-%d", pvc.Name, i) snap := pvcSnap.VolumeSnapshotRef apiGroup := snapapi.GroupName @@ -178,8 +179,11 @@ func (v *volumeGroupSnapshotterBase) CreatePVCClones(vgs *groupsnapapi.VolumeGro Name: snap.Name, } pvcs[i].Spec.StorageClassName = &scName + // cleanup the VolumeName and Resource version in pvc object + pvcs[i].Spec.VolumeName = "" + pvcs[i].ResourceVersion = "" - err = createPVCAndvalidatePV(v.framework.ClientSet, pvc, v.timeout) + err = createPVCAndvalidatePV(v.framework.ClientSet, pvcs[i], v.timeout) if err != nil { return nil, fmt.Errorf("failed to create PVC: %w", err) } @@ -194,7 +198,7 @@ func (v volumeGroupSnapshotterBase) CreateVolumeGroupSnapshotClass( return wait.PollUntilContextTimeout( context.TODO(), poll, - time.Duration(v.timeout), + time.Duration(v.timeout)*time.Minute, true, func(ctx context.Context) (bool, error) { _, err := v.groupclient.VolumeGroupSnapshotClasses().Create(ctx, groupSnapshotClass, metav1.CreateOptions{}) @@ -259,11 +263,18 @@ func (v volumeGroupSnapshotterBase) CreateVolumeGroupSnapshot(name, if groupSnapshot.Status == nil || groupSnapshot.Status.ReadyToUse == nil { return false, nil } + if *groupSnapshot.Status.ReadyToUse { return true, nil } - framework.Logf("VolumeGroupSnapshot %s status %+v", groupSnapshot.Name, *groupSnapshot.Status) + readyToUse := groupSnapshot.Status.ReadyToUse + errMsg := "" + if groupSnapshot.Status.Error != nil { + errMsg = *groupSnapshot.Status.Error.Message + } + + framework.Logf("VolumeGroupSnapshot %s is not ready to use. ReadyToUse: %v, Error: %s", name, readyToUse, errMsg) return false, nil }) @@ -275,8 +286,9 @@ func (v volumeGroupSnapshotterBase) CreateVolumeGroupSnapshot(name, } func (v volumeGroupSnapshotterBase) DeleteVolumeGroupSnapshot(volumeGroupSnapshotName, namespace string) error { + ctx := context.TODO() err := v.groupclient.VolumeGroupSnapshots(namespace).Delete( - context.TODO(), + ctx, volumeGroupSnapshotName, metav1.DeleteOptions{}) if err != nil { @@ -285,7 +297,6 @@ func (v volumeGroupSnapshotterBase) DeleteVolumeGroupSnapshot(volumeGroupSnapsho start := time.Now() framework.Logf("Waiting for VolumeGroupSnapshot %v to be deleted", volumeGroupSnapshotName) timeout := time.Duration(v.timeout) * time.Minute - ctx := context.TODO() return wait.PollUntilContextTimeout( ctx, @@ -375,7 +386,7 @@ func (v *volumeGroupSnapshotterBase) testVolumeGroupSnapshot(vol volumeGroupSnap clonePVCs, err := v.CreatePVCClones(volumeGroupSnapshot, v.storageClassName) if err != nil { - return fmt.Errorf("failed to create clones and pods: %w", err) + return fmt.Errorf("failed to create clones: %w", err) } // validate the resources in the backend err = vol.ValidateResourcesForCreate(volumeGroupSnapshot)