From a34cf5a63eccae5c8b15f7ca9e3748205d8b8b19 Mon Sep 17 00:00:00 2001 From: youhangwang Date: Thu, 13 Jun 2024 16:00:14 +0800 Subject: [PATCH] fix UT Signed-off-by: youhangwang --- controllers/cephfscg/cghandler.go | 55 +++++++++++-------- controllers/suite_test.go | 9 +++ .../volumereplicationgroup_controller.go | 5 +- 3 files changed, 41 insertions(+), 28 deletions(-) diff --git a/controllers/cephfscg/cghandler.go b/controllers/cephfscg/cghandler.go index ab4cc99f14..98356eb93d 100644 --- a/controllers/cephfscg/cghandler.go +++ b/controllers/cephfscg/cghandler.go @@ -27,26 +27,21 @@ func NewVSCGHandler( vsHandler *volsync.VSHandler, logger logr.Logger, -) (VSCGHandler, error) { - volumeGroupSnapshotClassName, err := util.GetVolumeGroupSnapshotClassFromPVCsStorageClass( - ctx, k8sClient, instance.Spec.Async.VolumeGroupSnapshotClassSelector, - instance.Spec.CephFSConsistencyGroupSelector, instance.Namespace, logger, - ) - if err != nil { - return nil, err +) VSCGHandler { + cgHandler := &cgHandler{ + ctx: ctx, + Client: k8sClient, + instance: instance, + VSHandler: vsHandler, + volumeGroupSnapshotSource: instance.Spec.CephFSConsistencyGroupSelector, + logger: logger.WithName("VSCGHandler"), + } + if instance.Spec.Async != nil { + cgHandler.volumeSnapshotClassSelector = instance.Spec.Async.VolumeSnapshotClassSelector + cgHandler.ramenSchedulingInterval = instance.Spec.Async.SchedulingInterval } - return &cgHandler{ - ctx: ctx, - Client: k8sClient, - instance: instance, - VSHandler: vsHandler, - volumeGroupSnapshotSource: instance.Spec.CephFSConsistencyGroupSelector, - volumeSnapshotClassSelector: instance.Spec.Async.VolumeSnapshotClassSelector, - volumeGroupSnapshotClassName: volumeGroupSnapshotClassName, - ramenSchedulingInterval: instance.Spec.Async.SchedulingInterval, - logger: logger.WithName("VSCGHandler"), - }, nil + return cgHandler } type VSCGHandler interface { @@ -76,10 +71,9 @@ type cgHandler struct { instance *ramendrv1alpha1.VolumeReplicationGroup VSHandler *volsync.VSHandler // VSHandler will be used to call the exist funcs - volumeGroupSnapshotSource *metav1.LabelSelector - volumeSnapshotClassSelector metav1.LabelSelector - volumeGroupSnapshotClassName string - ramenSchedulingInterval string + volumeGroupSnapshotSource *metav1.LabelSelector + volumeSnapshotClassSelector metav1.LabelSelector + ramenSchedulingInterval string logger logr.Logger } @@ -132,6 +126,19 @@ func (c *cgHandler) CreateOrUpdateReplicationGroupSource( return nil, false, err } + VolumeGroupSnapshotClassSelector := metav1.LabelSelector{} + if c.instance != nil && c.instance.Spec.Async != nil { + VolumeGroupSnapshotClassSelector = c.instance.Spec.Async.VolumeGroupSnapshotClassSelector + } + + volumeGroupSnapshotClassName, err := util.GetVolumeGroupSnapshotClassFromPVCsStorageClass( + c.ctx, c.Client, VolumeGroupSnapshotClassSelector, + c.instance.Spec.CephFSConsistencyGroupSelector, c.instance.Namespace, c.logger, + ) + if err != nil { + return nil, false, err + } + rgs := &ramendrv1alpha1.ReplicationGroupSource{ ObjectMeta: metav1.ObjectMeta{ Name: replicationGroupSourceName, @@ -139,7 +146,7 @@ func (c *cgHandler) CreateOrUpdateReplicationGroupSource( }, } - _, err := ctrlutil.CreateOrUpdate(c.ctx, c.Client, rgs, func() error { + _, err = ctrlutil.CreateOrUpdate(c.ctx, c.Client, rgs, func() error { if err := ctrl.SetControllerReference(c.instance, rgs, c.Client.Scheme()); err != nil { return err } @@ -169,7 +176,7 @@ func (c *cgHandler) CreateOrUpdateReplicationGroupSource( } } - rgs.Spec.VolumeGroupSnapshotClassName = c.volumeGroupSnapshotClassName + rgs.Spec.VolumeGroupSnapshotClassName = volumeGroupSnapshotClassName rgs.Spec.VolumeGroupSnapshotSource = c.volumeGroupSnapshotSource return nil diff --git a/controllers/suite_test.go b/controllers/suite_test.go index e4bc4eab77..a015ca8809 100644 --- a/controllers/suite_test.go +++ b/controllers/suite_test.go @@ -32,6 +32,7 @@ import ( volsyncv1alpha1 "github.com/backube/volsync/api/v1alpha1" volrep "github.com/csi-addons/kubernetes-csi-addons/apis/replication.storage/v1alpha1" + groupsnapv1alpha1 "github.com/kubernetes-csi/external-snapshotter/client/v7/apis/volumegroupsnapshot/v1alpha1" snapv1 "github.com/kubernetes-csi/external-snapshotter/client/v7/apis/volumesnapshot/v1" ocmclv1 "github.com/open-cluster-management/api/cluster/v1" ocmworkv1 "github.com/open-cluster-management/api/work/v1" @@ -47,6 +48,7 @@ import ( "github.com/ramendr/ramen/controllers/util" Recipe "github.com/ramendr/recipe/api/v1alpha1" velero "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" // +kubebuilder:scaffold:imports ) @@ -212,6 +214,13 @@ var _ = BeforeSuite(func() { err = argocdv1alpha1hack.AddToScheme(scheme.Scheme) Expect(err).NotTo(HaveOccurred()) + + err = groupsnapv1alpha1.AddToScheme(scheme.Scheme) + Expect(err).NotTo(HaveOccurred()) + + err = apiextensionsv1.AddToScheme(scheme.Scheme) + Expect(err).NotTo(HaveOccurred()) + // +kubebuilder:scaffold:scheme k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme}) diff --git a/controllers/volumereplicationgroup_controller.go b/controllers/volumereplicationgroup_controller.go index f3747c5b0e..6e34e6a8bf 100644 --- a/controllers/volumereplicationgroup_controller.go +++ b/controllers/volumereplicationgroup_controller.go @@ -436,12 +436,9 @@ func (r *VolumeReplicationGroupReconciler) Reconcile(ctx context.Context, req ct v.instance.Spec.Async, cephFSCSIDriverNameOrDefault(v.ramenConfig), volSyncDestinationCopyMethodOrDefault(v.ramenConfig), adminNamespaceVRG) - v.cephfsCGHandler, err = cephfscg.NewVSCGHandler( + v.cephfsCGHandler = cephfscg.NewVSCGHandler( ctx, r.Client, v.instance, v.volSyncHandler, v.log, ) - if err != nil { - return ctrl.Result{}, fmt.Errorf("failed to create cephfsCGHandler: %w", err) - } if v.instance.Status.ProtectedPVCs == nil { v.instance.Status.ProtectedPVCs = []ramendrv1alpha1.ProtectedPVC{}