From 58250a1cc8af45c2e4b7081ecf40679a61192ff7 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 | 4 ++++ internal/controller/drcluster_controller.go | 6 +++++- .../controller/drclusterconfig_controller.go | 3 +++ internal/controller/drplacementcontrol.go | 3 +++ .../controller/drplacementcontrol_controller.go | 5 +++++ .../controller/kubeobjects/velero/requests.go | 3 +++ internal/controller/util/mcv_util.go | 5 +++++ internal/controller/util/misc.go | 6 ++++++ internal/controller/util/mw_util.go | 2 ++ internal/controller/util/secrets_util.go | 9 +++++++++ .../controller/volsync/secret_propagator.go | 9 +++++++++ internal/controller/volsync/secretgen.go | 3 ++- internal/controller/volsync/vshandler.go | 17 +++++++++++++++++ internal/controller/vrg_volrep.go | 5 ++++- 16 files changed, 84 insertions(+), 3 deletions(-) diff --git a/internal/controller/cephfscg/cghandler.go b/internal/controller/cephfscg/cghandler.go index 13b8cc77a..8322e972b 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{ + util.CreatedByRamenLabel: "true", + }, }, } @@ -201,6 +204,9 @@ func (c *cgHandler) CreateOrUpdateReplicationGroupSource( ObjectMeta: metav1.ObjectMeta{ Name: replicationGroupSourceName, Namespace: replicationGroupSourceNamespace, + Labels: map[string]string{ + util.CreatedByRamenLabel: "true", + }, }, } diff --git a/internal/controller/cephfscg/replicationgroupdestination.go b/internal/controller/cephfscg/replicationgroupdestination.go index fd76b7abd..ab3ebacc4 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, util.CreatedByRamenLabel, "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..b24068b12 100644 --- a/internal/controller/cephfscg/volumegroupsourcehandler.go +++ b/internal/controller/cephfscg/volumegroupsourcehandler.go @@ -126,6 +126,7 @@ func (h *volumeGroupSourceHandler) CreateOrUpdateVolumeGroupSnapshot( return err } + util.AddLabel(volumeGroupSnapshot, util.CreatedByRamenLabel, "true") util.AddLabel(volumeGroupSnapshot, util.RGSOwnerLabel, owner.GetName()) util.AddAnnotation(volumeGroupSnapshot, volsync.OwnerNameAnnotation, owner.GetName()) util.AddAnnotation(volumeGroupSnapshot, volsync.OwnerNamespaceAnnotation, owner.GetNamespace()) @@ -327,6 +328,7 @@ func (h *volumeGroupSourceHandler) RestoreVolumesFromSnapshot( return err } + util.AddLabel(restoredPVC, util.CreatedByRamenLabel, "true") util.AddLabel(restoredPVC, util.RGSOwnerLabel, owner.GetName()) util.AddAnnotation(restoredPVC, volsync.OwnerNameAnnotation, owner.GetName()) util.AddAnnotation(restoredPVC, volsync.OwnerNamespaceAnnotation, owner.GetNamespace()) @@ -413,6 +415,7 @@ func (h *volumeGroupSourceHandler) CreateOrUpdateReplicationSourceForRestoredPVC Namespace: replicationSourceNamepspace, }, } + rdService := getRemoteServiceNameForRDFromPVCName(restoredPVC.SourcePVCName, replicationSourceNamepspace) op, err := ctrlutil.CreateOrUpdate(ctx, h.Client, replicationSource, func() error { @@ -420,6 +423,7 @@ func (h *volumeGroupSourceHandler) CreateOrUpdateReplicationSourceForRestoredPVC return err } + util.AddLabel(replicationSource, util.CreatedByRamenLabel, "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..5d9d63289 100644 --- a/internal/controller/drcluster_controller.go +++ b/internal/controller/drcluster_controller.go @@ -663,13 +663,17 @@ func (u *drclusterInstance) generateDRClusterConfig() (*ramen.DRClusterConfig, e return nil, err } + labels := make(map[string]string) + labels[util.CreatedByRamenLabel] = "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..28439350d 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{ + util.CreatedByRamenLabel: "true", + }, }, } diff --git a/internal/controller/drplacementcontrol.go b/internal/controller/drplacementcontrol.go index 35800c903..772d04cf8 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{ + rmnutil.CreatedByRamenLabel: "true", + }, }, Spec: rmn.VolumeReplicationGroupSpec{ PVCSelector: d.instance.Spec.PVCSelector, diff --git a/internal/controller/drplacementcontrol_controller.go b/internal/controller/drplacementcontrol_controller.go index ff45e54f7..1886703d5 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[rmnutil.CreatedByRamenLabel] = "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", + rmnutil.CreatedByRamenLabel: "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..284e94704 100644 --- a/internal/controller/kubeobjects/velero/requests.go +++ b/internal/controller/kubeobjects/velero/requests.go @@ -17,6 +17,7 @@ import ( "github.com/go-logr/logr" "github.com/ramendr/ramen/internal/controller/kubeobjects" + "github.com/ramendr/ramen/internal/controller/util" velero "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" corev1 "k8s.io/api/core/v1" k8serrors "k8s.io/apimachinery/pkg/api/errors" @@ -454,11 +455,13 @@ func backupRequestCreate( labels map[string]string, annotations map[string]string, ) (*velero.BackupStorageLocation, *velero.Backup, error) { + labels[util.CreatedByRamenLabel] = "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..62018f26f 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[CreatedByRamenLabel] = "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..e5fd42f44 100644 --- a/internal/controller/util/misc.go +++ b/internal/controller/util/misc.go @@ -25,6 +25,8 @@ const ( // When this annotation is set to true, VolSync will protect RBD PVCs. UseVolSyncAnnotation = "drplacementcontrol.ramendr.openshift.io/use-volsync-for-pvc-protection" + + CreatedByRamenLabel = "ramendr.openshift.io/resource-created-by-ramen" ) type ResourceUpdater struct { @@ -221,6 +223,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[CreatedByRamenLabel] = "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..7e591373d 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[CreatedByRamenLabel] = "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..c01125174 100644 --- a/internal/controller/util/secrets_util.go +++ b/internal/controller/util/secrets_util.go @@ -189,6 +189,9 @@ func newPlacementRuleBinding( ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: namespace, + Labels: map[string]string{ + CreatedByRamenLabel: "true", + }, }, PlacementRef: gppv1.PlacementSubject{ APIGroup: plrv1.Resource("PlacementRule").Group, @@ -217,6 +220,9 @@ func newPlacementRule(name string, namespace string, ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: namespace, + Labels: map[string]string{ + CreatedByRamenLabel: "true", + }, }, Spec: plrv1.PlacementRuleSpec{ GenericPlacementFields: plrv1.GenericPlacementFields{ @@ -360,6 +366,9 @@ func newPolicy(name, namespace, triggerValue string, object runtime.RawExtension Annotations: map[string]string{ PolicyTriggerAnnotation: triggerValue, }, + Labels: map[string]string{ + CreatedByRamenLabel: "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..c72668033 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{ + util.CreatedByRamenLabel: "true", + }, }, } @@ -256,6 +259,9 @@ func (sp *secretPropagator) reconcileSecretPropagationPlacementRule() error { ObjectMeta: metav1.ObjectMeta{ Name: sp.PlacementRuleName, Namespace: sp.Owner.GetNamespace(), + Labels: map[string]string{ + util.CreatedByRamenLabel: "true", + }, }, } @@ -301,6 +307,9 @@ func (sp *secretPropagator) reconcileSecretPropagationPlacementBinding() error { ObjectMeta: metav1.ObjectMeta{ Name: sp.PlacementBindingName, Namespace: sp.Owner.GetNamespace(), + Labels: map[string]string{ + util.CreatedByRamenLabel: "true", + }, }, } diff --git a/internal/controller/volsync/secretgen.go b/internal/controller/volsync/secretgen.go index 0de5ea565..43418d293 100644 --- a/internal/controller/volsync/secretgen.go +++ b/internal/controller/volsync/secretgen.go @@ -77,7 +77,8 @@ func generateNewVolSyncReplicationSecret(secretName, secretNamespace string, log Name: secretName, Namespace: secretNamespace, Labels: map[string]string{ - rmnutil.OCMBackupLabelKey: rmnutil.OCMBackupLabelValue, + rmnutil.OCMBackupLabelKey: rmnutil.OCMBackupLabelValue, + rmnutil.CreatedByRamenLabel: "true", }, }, StringData: map[string]string{ diff --git a/internal/controller/volsync/vshandler.go b/internal/controller/volsync/vshandler.go index 0a387d567..74e2dc54a 100644 --- a/internal/controller/volsync/vshandler.go +++ b/internal/controller/volsync/vshandler.go @@ -214,6 +214,9 @@ func (v *VSHandler) createOrUpdateRD( ObjectMeta: metav1.ObjectMeta{ Name: getReplicationDestinationName(rdSpec.ProtectedPVC.Name), Namespace: rdSpec.ProtectedPVC.Namespace, + Labels: map[string]string{ + util.CreatedByRamenLabel: "true", + }, }, } @@ -439,6 +442,9 @@ func (v *VSHandler) createOrUpdateRS(rsSpec ramendrv1alpha1.VolSyncReplicationSo ObjectMeta: metav1.ObjectMeta{ Name: getReplicationSourceName(rsSpec.ProtectedPVC.Name), Namespace: rsSpec.ProtectedPVC.Namespace, + Labels: map[string]string{ + util.CreatedByRamenLabel: "true", + }, }, } @@ -1370,6 +1376,9 @@ func (v *VSHandler) EnsurePVCforDirectCopy(ctx context.Context, ObjectMeta: metav1.ObjectMeta{ Name: rdSpec.ProtectedPVC.Name, Namespace: rdSpec.ProtectedPVC.Namespace, + Labels: map[string]string{ + util.CreatedByRamenLabel: "true", + }, }, } @@ -1536,6 +1545,9 @@ func (v *VSHandler) ensurePVCFromSnapshot(rdSpec ramendrv1alpha1.VolSyncReplicat ObjectMeta: metav1.ObjectMeta{ Name: rdSpec.ProtectedPVC.Name, Namespace: rdSpec.ProtectedPVC.Namespace, + Labels: map[string]string{ + util.CreatedByRamenLabel: "true", + }, }, } @@ -2100,6 +2112,7 @@ func (v *VSHandler) reconcileLocalRD(rdSpec ramendrv1alpha1.VolSyncReplicationDe } } + util.AddLabel(lrd, util.CreatedByRamenLabel, "true") util.AddLabel(lrd, VRGOwnerNameLabel, v.owner.GetName()) util.AddLabel(lrd, VRGOwnerNamespaceLabel, v.owner.GetNamespace()) util.AddLabel(lrd, VolSyncDoNotDeleteLabel, VolSyncDoNotDeleteLabelVal) @@ -2173,6 +2186,7 @@ func (v *VSHandler) reconcileLocalRS(rd *volsyncv1alpha1.ReplicationDestination, } } + util.AddLabel(lrs, util.CreatedByRamenLabel, "true") util.AddLabel(lrs, VRGOwnerNameLabel, v.owner.GetName()) util.AddLabel(lrs, VRGOwnerNamespaceLabel, v.owner.GetNamespace()) @@ -2318,6 +2332,9 @@ func (v *VSHandler) createPVCFromSnapshot(rd *volsyncv1alpha1.ReplicationDestina ObjectMeta: metav1.ObjectMeta{ Name: snapshotRef.Name, Namespace: rd.GetNamespace(), + Labels: map[string]string{ + util.CreatedByRamenLabel: "true", + }, }, } diff --git a/internal/controller/vrg_volrep.go b/internal/controller/vrg_volrep.go index 02a15543a..36a36e1a2 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[rmnutil.CreatedByRamenLabel] = "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{