From 45da48528108d3ad5b2167e19f1f928096426d01 Mon Sep 17 00:00:00 2001 From: Abhijeet Shakya Date: Fri, 3 Jan 2025 19:11:05 +0530 Subject: [PATCH] Initial ramen label changes Signed-off-by: Abhijeet Shakya --- internal/controller/cephfscg/cghandler.go | 6 ++++++ .../cephfscg/replicationgroupdestination.go | 1 + .../cephfscg/volumegroupsourcehandler.go | 6 ++++++ internal/controller/drcluster_controller.go | 7 ++++++- .../controller/drclusterconfig_controller.go | 3 +++ internal/controller/drplacementcontrol.go | 3 +++ .../drplacementcontrol_controller.go | 5 +++++ .../controller/kubeobjects/velero/requests.go | 4 ++++ internal/controller/util/mcv_util.go | 5 +++++ internal/controller/util/misc.go | 4 ++++ internal/controller/util/mw_util.go | 2 ++ internal/controller/util/secrets_util.go | 11 +++++++++++ .../controller/volsync/secret_propagator.go | 9 +++++++++ internal/controller/volsync/secretgen.go | 1 + internal/controller/volsync/vshandler.go | 19 +++++++++++++++++++ internal/controller/vrg_volrep.go | 5 ++++- 16 files changed, 89 insertions(+), 2 deletions(-) diff --git a/internal/controller/cephfscg/cghandler.go b/internal/controller/cephfscg/cghandler.go index 13b8cc77a..f767879e8 100644 --- a/internal/controller/cephfscg/cghandler.go +++ b/internal/controller/cephfscg/cghandler.go @@ -115,6 +115,9 @@ func (c *cgHandler) CreateOrUpdateReplicationGroupDestination( ObjectMeta: metav1.ObjectMeta{ Name: replicationGroupDestinationName, Namespace: replicationGroupDestinationNamespace, + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, } @@ -201,6 +204,9 @@ func (c *cgHandler) CreateOrUpdateReplicationGroupSource( ObjectMeta: metav1.ObjectMeta{ Name: replicationGroupSourceName, Namespace: replicationGroupSourceNamespace, + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, } diff --git a/internal/controller/cephfscg/replicationgroupdestination.go b/internal/controller/cephfscg/replicationgroupdestination.go index fd76b7abd..087738676 100644 --- a/internal/controller/cephfscg/replicationgroupdestination.go +++ b/internal/controller/cephfscg/replicationgroupdestination.go @@ -263,6 +263,7 @@ func (m *rgdMachine) CreateReplicationDestinations( } util.AddLabel(rd, util.RGDOwnerLabel, m.ReplicationGroupDestination.Name) + util.AddLabel(rd, drCConfigCreatedByLabel, "true") util.AddAnnotation(rd, volsync.OwnerNameAnnotation, m.ReplicationGroupDestination.Name) util.AddAnnotation(rd, volsync.OwnerNamespaceAnnotation, m.ReplicationGroupDestination.Namespace) diff --git a/internal/controller/cephfscg/volumegroupsourcehandler.go b/internal/controller/cephfscg/volumegroupsourcehandler.go index e92e02a7c..a341e90d2 100644 --- a/internal/controller/cephfscg/volumegroupsourcehandler.go +++ b/internal/controller/cephfscg/volumegroupsourcehandler.go @@ -30,6 +30,8 @@ var ( RestorePVCinCGNameFormat = "vs-cg-%s" SnapshotGroup = "snapshot.storage.k8s.io" SnapshotGroupKind = "VolumeSnapshot" + + drCConfigCreatedByLabel = "ramendr.openshift.io/resource-created-by-ramen" ) type VolumeGroupSourceHandler interface { @@ -126,6 +128,7 @@ func (h *volumeGroupSourceHandler) CreateOrUpdateVolumeGroupSnapshot( return err } + util.AddLabel(volumeGroupSnapshot, drCConfigCreatedByLabel, "true") util.AddLabel(volumeGroupSnapshot, util.RGSOwnerLabel, owner.GetName()) util.AddAnnotation(volumeGroupSnapshot, volsync.OwnerNameAnnotation, owner.GetName()) util.AddAnnotation(volumeGroupSnapshot, volsync.OwnerNamespaceAnnotation, owner.GetNamespace()) @@ -327,6 +330,7 @@ func (h *volumeGroupSourceHandler) RestoreVolumesFromSnapshot( return err } + util.AddLabel(restoredPVC, drCConfigCreatedByLabel, "true") util.AddLabel(restoredPVC, util.RGSOwnerLabel, owner.GetName()) util.AddAnnotation(restoredPVC, volsync.OwnerNameAnnotation, owner.GetName()) util.AddAnnotation(restoredPVC, volsync.OwnerNamespaceAnnotation, owner.GetNamespace()) @@ -413,6 +417,7 @@ func (h *volumeGroupSourceHandler) CreateOrUpdateReplicationSourceForRestoredPVC Namespace: replicationSourceNamepspace, }, } + rdService := getRemoteServiceNameForRDFromPVCName(restoredPVC.SourcePVCName, replicationSourceNamepspace) op, err := ctrlutil.CreateOrUpdate(ctx, h.Client, replicationSource, func() error { @@ -420,6 +425,7 @@ func (h *volumeGroupSourceHandler) CreateOrUpdateReplicationSourceForRestoredPVC return err } + util.AddLabel(replicationSource, drCConfigCreatedByLabel, "true") util.AddLabel(replicationSource, util.RGSOwnerLabel, owner.GetName()) util.AddAnnotation(replicationSource, volsync.OwnerNameAnnotation, owner.GetName()) util.AddAnnotation(replicationSource, volsync.OwnerNamespaceAnnotation, owner.GetNamespace()) diff --git a/internal/controller/drcluster_controller.go b/internal/controller/drcluster_controller.go index a04186c92..0e826a4ed 100644 --- a/internal/controller/drcluster_controller.go +++ b/internal/controller/drcluster_controller.go @@ -75,6 +75,7 @@ const ( const ( DRClusterNameAnnotation = "drcluster.ramendr.openshift.io/drcluster-name" + drCConfigCreatedByLabel = "ramendr.openshift.io/resource-created-by-ramen" ) // SetupWithManager sets up the controller with the Manager. @@ -663,13 +664,17 @@ func (u *drclusterInstance) generateDRClusterConfig() (*ramen.DRClusterConfig, e return nil, err } + labels := make(map[string]string) + labels[drCConfigCreatedByLabel] = "true" + drcConfig := ramen.DRClusterConfig{ TypeMeta: metav1.TypeMeta{ Kind: "DRClusterConfig", APIVersion: "ramendr.openshift.io/v1alpha1", }, ObjectMeta: metav1.ObjectMeta{ - Name: u.object.GetName(), + Name: u.object.GetName(), + Labels: labels, }, Spec: ramen.DRClusterConfigSpec{ ClusterID: clusterID, diff --git a/internal/controller/drclusterconfig_controller.go b/internal/controller/drclusterconfig_controller.go index a772f4e78..dcb75b928 100644 --- a/internal/controller/drclusterconfig_controller.go +++ b/internal/controller/drclusterconfig_controller.go @@ -304,6 +304,9 @@ func (r *DRClusterConfigReconciler) ensureClusterClaim( cc := &clusterv1alpha1.ClusterClaim{ ObjectMeta: metav1.ObjectMeta{ Name: claimName(prefix, name), + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, } diff --git a/internal/controller/drplacementcontrol.go b/internal/controller/drplacementcontrol.go index 35800c903..8c493e2c0 100644 --- a/internal/controller/drplacementcontrol.go +++ b/internal/controller/drplacementcontrol.go @@ -1775,6 +1775,9 @@ func (d *DRPCInstance) newVRG( ObjectMeta: metav1.ObjectMeta{ Name: d.instance.Name, Namespace: d.vrgNamespace, + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, Spec: rmn.VolumeReplicationGroupSpec{ PVCSelector: d.instance.Spec.PVCSelector, diff --git a/internal/controller/drplacementcontrol_controller.go b/internal/controller/drplacementcontrol_controller.go index f3399490a..9afe1b4b1 100644 --- a/internal/controller/drplacementcontrol_controller.go +++ b/internal/controller/drplacementcontrol_controller.go @@ -1096,6 +1096,10 @@ func (r *DRPlacementControlReconciler) clonePlacementRule(ctx context.Context, clonedPlRule := &plrv1.PlacementRule{} + labels := make(map[string]string) + labels[drCConfigCreatedByLabel] = "true" + clonedPlRule.ObjectMeta.Labels = labels + userPlRule.DeepCopyInto(clonedPlRule) clonedPlRule.Name = clonedPlRuleName @@ -1697,6 +1701,7 @@ func (r *DRPlacementControlReconciler) createPlacementDecision(ctx context.Conte plDecision.ObjectMeta.Labels = map[string]string{ clrapiv1beta1.PlacementLabel: placement.GetName(), rmnutil.ExcludeFromVeleroBackup: "true", + drCConfigCreatedByLabel: "true", } owner := metav1.NewControllerRef(placement, clrapiv1beta1.GroupVersion.WithKind("Placement")) diff --git a/internal/controller/kubeobjects/velero/requests.go b/internal/controller/kubeobjects/velero/requests.go index 919ea225c..53c68ad0c 100644 --- a/internal/controller/kubeobjects/velero/requests.go +++ b/internal/controller/kubeobjects/velero/requests.go @@ -28,6 +28,8 @@ const ( path = "velero/" protectsPath = path + "backups/" recoversPath = path + "restores/" + + drCConfigCreatedByLabel = "ramendr.openshift.io/resource-created-by-ramen" ) type ( @@ -454,11 +456,13 @@ func backupRequestCreate( labels map[string]string, annotations map[string]string, ) (*velero.BackupStorageLocation, *velero.Backup, error) { + labels[drCConfigCreatedByLabel] = "true" backupLocation := backupLocation(requestsNamespaceName, requestName, s3Url, s3BucketName, s3RegionName, s3KeyPrefix, secretKeyRef, caCertificates, labels, ) + if err := w.objectCreate(backupLocation); err != nil { return backupLocation, nil, err } diff --git a/internal/controller/util/mcv_util.go b/internal/controller/util/mcv_util.go index d13e78b98..ff409e417 100644 --- a/internal/controller/util/mcv_util.go +++ b/internal/controller/util/mcv_util.go @@ -386,6 +386,11 @@ func (m ManagedClusterViewGetterImpl) getOrCreateManagedClusterView( meta metav1.ObjectMeta, viewscope viewv1beta1.ViewScope, logger logr.Logger, ) (*viewv1beta1.ManagedClusterView, error) { key := types.NamespacedName{Name: meta.Name, Namespace: meta.Namespace} + + labels := make(map[string]string) + labels[drCConfigCreatedByLabel] = "true" + meta.Labels = labels + mcv := &viewv1beta1.ManagedClusterView{ ObjectMeta: meta, Spec: viewv1beta1.ViewSpec{ diff --git a/internal/controller/util/misc.go b/internal/controller/util/misc.go index ed0e87fa0..6019c8e2c 100644 --- a/internal/controller/util/misc.go +++ b/internal/controller/util/misc.go @@ -221,6 +221,10 @@ func CreateRamenOpsNamespace(ctx context.Context, k8sClient client.Client, ramen func CreateNamespaceIfNotExists(ctx context.Context, k8sClient client.Client, namespace string) error { ns := &corev1.Namespace{} + labels := make(map[string]string) + labels[drCConfigCreatedByLabel] = "true" + ns.ObjectMeta.Labels = labels + err := k8sClient.Get(ctx, types.NamespacedName{Name: namespace}, ns) if err != nil { if k8serrors.IsNotFound(err) { diff --git a/internal/controller/util/mw_util.go b/internal/controller/util/mw_util.go index 76b8c798d..19c570a04 100644 --- a/internal/controller/util/mw_util.go +++ b/internal/controller/util/mw_util.go @@ -581,6 +581,8 @@ func (mwu *MWUtil) GenerateManifest(obj interface{}) (*ocmworkv1.Manifest, error func (mwu *MWUtil) newManifestWork(name string, mcNamespace string, labels map[string]string, manifests []ocmworkv1.Manifest, annotations map[string]string, ) *ocmworkv1.ManifestWork { + // if labels is empty map, then add the ramen label. If not empty, then append. + labels[drCConfigCreatedByLabel] = "true" mw := &ocmworkv1.ManifestWork{ ObjectMeta: metav1.ObjectMeta{ Name: name, diff --git a/internal/controller/util/secrets_util.go b/internal/controller/util/secrets_util.go index 36ed9250a..3df893a07 100644 --- a/internal/controller/util/secrets_util.go +++ b/internal/controller/util/secrets_util.go @@ -44,6 +44,8 @@ const ( SecretPolicyFinalizer string = "drpolicies.ramendr.openshift.io/policy-protection" VeleroSecretKeyNameDefault = "ramengenerated" + + drCConfigCreatedByLabel = "ramendr.openshift.io/resource-created-by-ramen" ) // TargetSecretFormat defines the secret format to deliver to the cluster @@ -189,6 +191,9 @@ func newPlacementRuleBinding( ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: namespace, + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, PlacementRef: gppv1.PlacementSubject{ APIGroup: plrv1.Resource("PlacementRule").Group, @@ -217,6 +222,9 @@ func newPlacementRule(name string, namespace string, ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: namespace, + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, Spec: plrv1.PlacementRuleSpec{ GenericPlacementFields: plrv1.GenericPlacementFields{ @@ -360,6 +368,9 @@ func newPolicy(name, namespace, triggerValue string, object runtime.RawExtension Annotations: map[string]string{ PolicyTriggerAnnotation: triggerValue, }, + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, Spec: gppv1.PolicySpec{ RemediationAction: gppv1.Enforce, diff --git a/internal/controller/volsync/secret_propagator.go b/internal/controller/volsync/secret_propagator.go index ff88a1e8c..4c43ad36a 100644 --- a/internal/controller/volsync/secret_propagator.go +++ b/internal/controller/volsync/secret_propagator.go @@ -164,6 +164,9 @@ func (sp *secretPropagator) reconcileSecretPropagationPolicy() error { ObjectMeta: metav1.ObjectMeta{ Name: sp.PolicyName, Namespace: sp.Owner.GetNamespace(), + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, } @@ -256,6 +259,9 @@ func (sp *secretPropagator) reconcileSecretPropagationPlacementRule() error { ObjectMeta: metav1.ObjectMeta{ Name: sp.PlacementRuleName, Namespace: sp.Owner.GetNamespace(), + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, } @@ -301,6 +307,9 @@ func (sp *secretPropagator) reconcileSecretPropagationPlacementBinding() error { ObjectMeta: metav1.ObjectMeta{ Name: sp.PlacementBindingName, Namespace: sp.Owner.GetNamespace(), + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, } diff --git a/internal/controller/volsync/secretgen.go b/internal/controller/volsync/secretgen.go index 0de5ea565..384869d8c 100644 --- a/internal/controller/volsync/secretgen.go +++ b/internal/controller/volsync/secretgen.go @@ -78,6 +78,7 @@ func generateNewVolSyncReplicationSecret(secretName, secretNamespace string, log Namespace: secretNamespace, Labels: map[string]string{ rmnutil.OCMBackupLabelKey: rmnutil.OCMBackupLabelValue, + drCConfigCreatedByLabel: "true", }, }, StringData: map[string]string{ diff --git a/internal/controller/volsync/vshandler.go b/internal/controller/volsync/vshandler.go index 7f0c9981e..674d934ea 100644 --- a/internal/controller/volsync/vshandler.go +++ b/internal/controller/volsync/vshandler.go @@ -63,6 +63,8 @@ const ( // StorageClass label StorageIDLabel = "ramendr.openshift.io/storageid" + + drCConfigCreatedByLabel = "ramendr.openshift.io/resource-created-by-ramen" ) type VSHandler struct { @@ -207,6 +209,9 @@ func (v *VSHandler) createOrUpdateRD( ObjectMeta: metav1.ObjectMeta{ Name: getReplicationDestinationName(rdSpec.ProtectedPVC.Name), Namespace: rdSpec.ProtectedPVC.Namespace, + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, } @@ -423,6 +428,9 @@ func (v *VSHandler) createOrUpdateRS(rsSpec ramendrv1alpha1.VolSyncReplicationSo ObjectMeta: metav1.ObjectMeta{ Name: getReplicationSourceName(rsSpec.ProtectedPVC.Name), Namespace: rsSpec.ProtectedPVC.Namespace, + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, } @@ -992,6 +1000,9 @@ func (v *VSHandler) EnsurePVCforDirectCopy(ctx context.Context, ObjectMeta: metav1.ObjectMeta{ Name: rdSpec.ProtectedPVC.Name, Namespace: rdSpec.ProtectedPVC.Namespace, + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, } @@ -1158,6 +1169,9 @@ func (v *VSHandler) ensurePVCFromSnapshot(rdSpec ramendrv1alpha1.VolSyncReplicat ObjectMeta: metav1.ObjectMeta{ Name: rdSpec.ProtectedPVC.Name, Namespace: rdSpec.ProtectedPVC.Namespace, + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, } @@ -1722,6 +1736,7 @@ func (v *VSHandler) reconcileLocalRD(rdSpec ramendrv1alpha1.VolSyncReplicationDe } } + util.AddLabel(lrd, drCConfigCreatedByLabel, "true") util.AddLabel(lrd, VRGOwnerNameLabel, v.owner.GetName()) util.AddLabel(lrd, VRGOwnerNamespaceLabel, v.owner.GetNamespace()) util.AddLabel(lrd, VolSyncDoNotDeleteLabel, VolSyncDoNotDeleteLabelVal) @@ -1795,6 +1810,7 @@ func (v *VSHandler) reconcileLocalRS(rd *volsyncv1alpha1.ReplicationDestination, } } + util.AddLabel(lrs, drCConfigCreatedByLabel, "true") util.AddLabel(lrs, VRGOwnerNameLabel, v.owner.GetName()) util.AddLabel(lrs, VRGOwnerNamespaceLabel, v.owner.GetNamespace()) @@ -1940,6 +1956,9 @@ func (v *VSHandler) createPVCFromSnapshot(rd *volsyncv1alpha1.ReplicationDestina ObjectMeta: metav1.ObjectMeta{ Name: snapshotRef.Name, Namespace: rd.GetNamespace(), + Labels: map[string]string{ + drCConfigCreatedByLabel: "true", + }, }, } diff --git a/internal/controller/vrg_volrep.go b/internal/controller/vrg_volrep.go index 1c7d67546..841faaca8 100644 --- a/internal/controller/vrg_volrep.go +++ b/internal/controller/vrg_volrep.go @@ -1241,11 +1241,14 @@ func (v *VRGInstance) createVR(vrNamespacedName types.NamespacedName, state volr v.instance.Name, err) } + labels := rmnutil.OwnerLabels(v.instance) + labels[drCConfigCreatedByLabel] = "true" + volRep := &volrep.VolumeReplication{ ObjectMeta: metav1.ObjectMeta{ Name: vrNamespacedName.Name, Namespace: vrNamespacedName.Namespace, - Labels: rmnutil.OwnerLabels(v.instance), + Labels: labels, }, Spec: volrep.VolumeReplicationSpec{ DataSource: corev1.TypedLocalObjectReference{