Skip to content

Commit 261b38d

Browse files
committed
Fix labeling clusters with multiple labels
When using `pgo label` or `pgo delete label` with a list of labels, PgCluster was getting different labels than its Deployments. Issue: [ch8740] See: 88cd75f
1 parent 5f0fb8e commit 261b38d

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

internal/apiserver/labelservice/labelimpl.go

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ func addLabels(items []crv1.Pgcluster, DryRun bool, LabelCmdLabel string, newLab
125125
log.Debug("dry run only")
126126
} else {
127127
log.Debugf("adding label to cluster %s", items[i].Spec.Name)
128-
err := PatchPgcluster(LabelCmdLabel, items[i], ns)
128+
err := PatchPgcluster(newLabels, items[i], ns)
129129
if err != nil {
130130
log.Error(err.Error())
131131
}
@@ -224,19 +224,18 @@ func updateLabels(deployment *v1.Deployment, clusterName string, newLabels map[s
224224

225225
}
226226

227-
func PatchPgcluster(newLabel string, oldCRD crv1.Pgcluster, ns string) error {
227+
func PatchPgcluster(newLabels map[string]string, oldCRD crv1.Pgcluster, ns string) error {
228228

229-
fields := strings.Split(newLabel, "=")
230-
labelKey := fields[0]
231-
labelValue := fields[1]
232229
oldData, err := json.Marshal(oldCRD)
233230
if err != nil {
234231
return err
235232
}
236233
if oldCRD.ObjectMeta.Labels == nil {
237234
oldCRD.ObjectMeta.Labels = make(map[string]string)
238235
}
239-
oldCRD.ObjectMeta.Labels[labelKey] = labelValue
236+
for key, value := range newLabels {
237+
oldCRD.ObjectMeta.Labels[key] = value
238+
}
240239
var newData, patchBytes []byte
241240
newData, err = json.Marshal(oldCRD)
242241
if err != nil {
@@ -377,7 +376,7 @@ func deleteLabels(items []crv1.Pgcluster, LabelCmdLabel string, labelsMap map[st
377376

378377
for i := 0; i < len(items); i++ {
379378
log.Debugf("deleting label from %s", items[i].Spec.Name)
380-
err = deletePatchPgcluster(LabelCmdLabel, items[i], ns)
379+
err = deletePatchPgcluster(labelsMap, items[i], ns)
381380
if err != nil {
382381
log.Error(err.Error())
383382
return err
@@ -406,19 +405,18 @@ func deleteLabels(items []crv1.Pgcluster, LabelCmdLabel string, labelsMap map[st
406405
return err
407406
}
408407

409-
func deletePatchPgcluster(newLabel string, oldCRD crv1.Pgcluster, ns string) error {
408+
func deletePatchPgcluster(labelsMap map[string]string, oldCRD crv1.Pgcluster, ns string) error {
410409

411-
fields := strings.Split(newLabel, "=")
412-
labelKey := fields[0]
413-
//labelValue := fields[1]
414410
oldData, err := json.Marshal(oldCRD)
415411
if err != nil {
416412
return err
417413
}
418414
if oldCRD.ObjectMeta.Labels == nil {
419415
oldCRD.ObjectMeta.Labels = make(map[string]string)
420416
}
421-
delete(oldCRD.ObjectMeta.Labels, labelKey)
417+
for k := range labelsMap {
418+
delete(oldCRD.ObjectMeta.Labels, k)
419+
}
422420

423421
var newData, patchBytes []byte
424422
newData, err = json.Marshal(oldCRD)

internal/apiserver/policyservice/policyimpl.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ func ApplyPolicy(request *msgs.ApplyPolicyRequest, ns, pgouser string) msgs.Appl
270270
}
271271

272272
//update the pgcluster crd labels with the new policy
273-
err = labelservice.PatchPgcluster(request.Name+"="+config.LABEL_PGPOLICY, cl, ns)
273+
err = labelservice.PatchPgcluster(map[string]string{request.Name: config.LABEL_PGPOLICY}, cl, ns)
274274
if err != nil {
275275
log.Error(err)
276276
}

0 commit comments

Comments
 (0)