Skip to content

Commit dfa9137

Browse files
committed
rec_labels: fixed removeLabelsFromObject logic and added edge cases to ginkgo tests for checking custom labels and annotations
Signed-off-by: Alka Kumari <[email protected]>
1 parent ccf6b78 commit dfa9137

File tree

2 files changed

+308
-35
lines changed

2 files changed

+308
-35
lines changed

controllers/argocd/util.go

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,11 +1394,26 @@ func (r *ReconcileArgoCD) cleanupLabelsFromDeployment(argocd *argoproj.ArgoCD, d
13941394
return fmt.Errorf("failed to get deployment %s: %w", deploymentName, err)
13951395
}
13961396

1397-
currentLabels := r.removeLabelsFromObject(deployment, labelsToRemove)
1398-
deployment.Spec.Template.Labels = currentLabels
1399-
if err := r.Update(context.TODO(), deployment); err != nil {
1400-
log.Error(err, "failed to update deployment after removing labels", "name", deploymentName)
1401-
return err
1397+
// Work on pod template labels directly, not deployment metadata labels
1398+
currentLabels := deployment.Spec.Template.Labels
1399+
if currentLabels == nil {
1400+
return nil // No labels to remove
1401+
}
1402+
1403+
modified := false
1404+
for _, labelKey := range labelsToRemove {
1405+
if _, exists := currentLabels[labelKey]; exists {
1406+
delete(currentLabels, labelKey)
1407+
modified = true
1408+
}
1409+
}
1410+
1411+
if modified {
1412+
deployment.Spec.Template.Labels = currentLabels
1413+
if err := r.Update(context.TODO(), deployment); err != nil {
1414+
log.Error(err, "failed to update deployment after removing labels", "name", deploymentName)
1415+
return err
1416+
}
14021417
}
14031418
return nil
14041419
}
@@ -1417,11 +1432,26 @@ func (r *ReconcileArgoCD) cleanupLabelsFromStatefulSet(argocd *argoproj.ArgoCD,
14171432
return fmt.Errorf("failed to get statefulset %s: %w", statefulSetName, err)
14181433
}
14191434

1420-
currentLabels := r.removeLabelsFromObject(statefulSet, labelsToRemove)
1421-
statefulSet.SetLabels(currentLabels)
1422-
if err := r.Update(context.TODO(), statefulSet); err != nil {
1423-
log.Error(err, "failed to update statefulset after removing labels", "name", statefulSetName)
1424-
return err
1435+
// Work on pod template labels directly, not StatefulSet metadata labels
1436+
currentLabels := statefulSet.Spec.Template.Labels
1437+
if currentLabels == nil {
1438+
return nil // No labels to remove
1439+
}
1440+
1441+
modified := false
1442+
for _, labelKey := range labelsToRemove {
1443+
if _, exists := currentLabels[labelKey]; exists {
1444+
delete(currentLabels, labelKey)
1445+
modified = true
1446+
}
1447+
}
1448+
1449+
if modified {
1450+
statefulSet.Spec.Template.Labels = currentLabels
1451+
if err := r.Update(context.TODO(), statefulSet); err != nil {
1452+
log.Error(err, "failed to update statefulset after removing labels", "name", statefulSetName)
1453+
return err
1454+
}
14251455
}
14261456

14271457
return nil
@@ -1495,25 +1525,6 @@ func (r *ReconcileArgoCD) calculateRemovedSpecLabels(oldCR, newCR *argoproj.Argo
14951525

14961526
}
14971527

1498-
func (r *ReconcileArgoCD) removeLabelsFromObject(obj client.Object, labelsToRemove []string) map[string]string {
1499-
currentLabels := obj.GetLabels()
1500-
if currentLabels == nil {
1501-
return nil
1502-
}
1503-
1504-
modified := false
1505-
for _, labelKey := range labelsToRemove {
1506-
if _, exists := currentLabels[labelKey]; exists {
1507-
delete(currentLabels, labelKey)
1508-
modified = true
1509-
}
1510-
}
1511-
if modified {
1512-
return currentLabels
1513-
}
1514-
return currentLabels
1515-
}
1516-
15171528
// deleteRBACsForNamespace deletes the RBACs when the label from the namespace is removed.
15181529
func deleteRBACsForNamespace(sourceNS string, k8sClient kubernetes.Interface) error {
15191530
log.Info(fmt.Sprintf("Removing the RBACs created for the namespace: %s", sourceNS))

0 commit comments

Comments
 (0)