From 761988217fcbb42771ef4d9c447f9a2ca95ab1aa Mon Sep 17 00:00:00 2001 From: youhangwang Date: Thu, 13 Jun 2024 23:20:00 +0800 Subject: [PATCH] remove all localrd and localrs Signed-off-by: youhangwang --- controllers/cephfscg/cghandler.go | 46 ++++++++++++++----------------- controllers/vrg_volsync.go | 2 +- 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/controllers/cephfscg/cghandler.go b/controllers/cephfscg/cghandler.go index 0df9071f85..1f8d52fec6 100644 --- a/controllers/cephfscg/cghandler.go +++ b/controllers/cephfscg/cghandler.go @@ -51,17 +51,16 @@ type VSCGHandler interface { ) (*ramendrv1alpha1.ReplicationGroupDestination, error) CreateOrUpdateReplicationGroupSource( - rsSpec ramendrv1alpha1.VolSyncReplicationSourceSpec, replicationGroupSourceName, replicationGroupSourceNamespace string, runFinalSync bool, ) (*ramendrv1alpha1.ReplicationGroupSource, bool, error) GetLatestImageFromRGD( - ctx context.Context, rdSpec ramendrv1alpha1.VolSyncReplicationDestinationSpec, + ctx context.Context, pvcName string, ) (*corev1.TypedLocalObjectReference, error) EnsurePVCfromRGD(rdSpec ramendrv1alpha1.VolSyncReplicationDestinationSpec, failoverAction bool) error - DeleteLocalRDAndRS(rdSpec ramendrv1alpha1.VolSyncReplicationDestinationSpec) error + DeleteLocalRDAndRS(rd *volsyncv1alpha1.ReplicationDestination) error GetRDInCG() ([]ramendrv1alpha1.VolSyncReplicationDestinationSpec, error) } @@ -119,7 +118,6 @@ func (c *cgHandler) CreateOrUpdateReplicationGroupDestination( //nolint:funlen,gocognit,cyclop,gocyclo func (c *cgHandler) CreateOrUpdateReplicationGroupSource( - rsSpec ramendrv1alpha1.VolSyncReplicationSourceSpec, replicationGroupSourceName, replicationGroupSourceNamespace string, runFinalSync bool, ) (*ramendrv1alpha1.ReplicationGroupSource, bool, error) { @@ -133,14 +131,12 @@ func (c *cgHandler) CreateOrUpdateReplicationGroupSource( for i := range rdList.Items { rd := rdList.Items[i] - if rd.GetName() == getReplicationDestinationName(rsSpec.ProtectedPVC.Name) { - if c.VSHandler.IsCopyMethodDirect() { - // Before creating a new RGS, make sure any LocalReplicationDestination for this PVC is cleaned up first - // DeleteRD only delete LRD&LRS here, as only the lrd&lrs have vrg owner and also belongs a CG - err := c.DeleteLocalRDAndRS(ramendrv1alpha1.VolSyncReplicationDestinationSpec(rsSpec)) - if err != nil { - return nil, false, err - } + if c.VSHandler.IsCopyMethodDirect() { + // Before creating a new RGS, make sure any LocalReplicationDestination for this PVC is cleaned up first + // DeleteRD only delete LRD&LRS here, as only the lrd&lrs have vrg owner and also belongs a CG + err := c.DeleteLocalRDAndRS(&rd) + if err != nil { + return nil, false, err } } } @@ -223,7 +219,7 @@ func (c *cgHandler) CreateOrUpdateReplicationGroupSource( } func (c *cgHandler) GetLatestImageFromRGD( - ctx context.Context, rdSpec ramendrv1alpha1.VolSyncReplicationDestinationSpec, + ctx context.Context, pvcName string, ) (*corev1.TypedLocalObjectReference, error) { rgdList := &ramendrv1alpha1.ReplicationGroupDestinationList{} @@ -237,14 +233,14 @@ func (c *cgHandler) GetLatestImageFromRGD( var latestImage *corev1.TypedLocalObjectReference for _, rgd := range rgdList.Items { - if util.GetPVCLatestImageRGD(rdSpec.ProtectedPVC.Name, rgd) != nil { - latestImage = util.GetPVCLatestImageRGD(rdSpec.ProtectedPVC.Name, rgd) + if util.GetPVCLatestImageRGD(pvcName, rgd) != nil { + latestImage = util.GetPVCLatestImageRGD(pvcName, rgd) } } if !isLatestImageReady(latestImage) { - noSnapErr := fmt.Errorf("unable to find LatestImage from ReplicationDestination %s", rdSpec.ProtectedPVC.Name) - c.logger.Error(noSnapErr, "No latestImage", "rdSpec", rdSpec) + noSnapErr := fmt.Errorf("unable to find LatestImage from ReplicationDestination %s", pvcName) + c.logger.Error(noSnapErr, "No latestImage", "rd", pvcName) return nil, noSnapErr } @@ -255,7 +251,7 @@ func (c *cgHandler) GetLatestImageFromRGD( func (c *cgHandler) EnsurePVCfromRGD( rdSpec ramendrv1alpha1.VolSyncReplicationDestinationSpec, failoverAction bool, ) error { - latestImage, err := c.GetLatestImageFromRGD(c.ctx, rdSpec) + latestImage, err := c.GetLatestImageFromRGD(c.ctx, rdSpec.ProtectedPVC.Name) if err != nil { return err } @@ -273,8 +269,8 @@ func (c *cgHandler) EnsurePVCfromRGD( } //nolint:gocognit -func (c *cgHandler) DeleteLocalRDAndRS(rdSpec ramendrv1alpha1.VolSyncReplicationDestinationSpec) error { - latestRDImage, err := c.GetLatestImageFromRGD(c.ctx, rdSpec) +func (c *cgHandler) DeleteLocalRDAndRS(rd *volsyncv1alpha1.ReplicationDestination) error { + latestRDImage, err := c.GetLatestImageFromRGD(c.ctx, rd.Name) if err != nil { return err } @@ -283,8 +279,8 @@ func (c *cgHandler) DeleteLocalRDAndRS(rdSpec ramendrv1alpha1.VolSyncReplication lrs := &volsyncv1alpha1.ReplicationSource{ ObjectMeta: metav1.ObjectMeta{ - Name: getLocalReplicationName(rdSpec.ProtectedPVC.Name), - Namespace: rdSpec.ProtectedPVC.Namespace, + Name: getLocalReplicationName(rd.Name), + Namespace: rd.Namespace, }, } @@ -295,8 +291,8 @@ func (c *cgHandler) DeleteLocalRDAndRS(rdSpec ramendrv1alpha1.VolSyncReplication if err != nil { if errors.IsNotFound(err) { return c.VSHandler.DeleteLocalRD( - getLocalReplicationName(rdSpec.ProtectedPVC.Name), - rdSpec.ProtectedPVC.Namespace, + getLocalReplicationName(rd.Name), + rd.Namespace, ) } @@ -313,7 +309,7 @@ func (c *cgHandler) DeleteLocalRDAndRS(rdSpec ramendrv1alpha1.VolSyncReplication return err } - c.logger.Info("Cleaned up local resources for RD", "name", rdSpec.ProtectedPVC.Name) + c.logger.Info("Cleaned up local resources for RD", "name", rd.Name) return nil } diff --git a/controllers/vrg_volsync.go b/controllers/vrg_volsync.go index 7c0f0c27ac..351dcb6b7d 100644 --- a/controllers/vrg_volsync.go +++ b/controllers/vrg_volsync.go @@ -165,7 +165,7 @@ func (v *VRGInstance) reconcilePVCAsVolSyncPrimary(pvc corev1.PersistentVolumeCl return true } else if pvcInCephfsCg { rgs, finalSyncComplete, err := v.cephfsCGHandler.CreateOrUpdateReplicationGroupSource( - rsSpec, v.instance.Name, v.instance.Namespace, v.instance.Spec.RunFinalSync, + v.instance.Name, v.instance.Namespace, v.instance.Spec.RunFinalSync, ) if err != nil { setVRGConditionTypeVolSyncRepSourceSetupError(&protectedPVC.Conditions, v.instance.Generation,