Skip to content

Commit 396e719

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 75999ce commit 396e719

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

apiserver/labelservice/labelimpl.go

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

222222
}
223223

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

226-
fields := strings.Split(newLabel, "=")
227-
labelKey := fields[0]
228-
labelValue := fields[1]
229226
oldData, err := json.Marshal(oldCRD)
230227
if err != nil {
231228
return err
232229
}
233230
if oldCRD.ObjectMeta.Labels == nil {
234231
oldCRD.ObjectMeta.Labels = make(map[string]string)
235232
}
236-
oldCRD.ObjectMeta.Labels[labelKey] = labelValue
233+
for key, value := range newLabels {
234+
oldCRD.ObjectMeta.Labels[key] = value
235+
}
237236
var newData, patchBytes []byte
238237
newData, err = json.Marshal(oldCRD)
239238
if err != nil {
@@ -374,7 +373,7 @@ func deleteLabels(items []crv1.Pgcluster, LabelCmdLabel string, labelsMap map[st
374373

375374
for i := 0; i < len(items); i++ {
376375
log.Debugf("deleting label from %s", items[i].Spec.Name)
377-
err = deletePatchPgcluster(LabelCmdLabel, items[i], ns)
376+
err = deletePatchPgcluster(labelsMap, items[i], ns)
378377
if err != nil {
379378
log.Error(err.Error())
380379
return err
@@ -401,19 +400,18 @@ func deleteLabels(items []crv1.Pgcluster, LabelCmdLabel string, labelsMap map[st
401400
return err
402401
}
403402

404-
func deletePatchPgcluster(newLabel string, oldCRD crv1.Pgcluster, ns string) error {
403+
func deletePatchPgcluster(labelsMap map[string]string, oldCRD crv1.Pgcluster, ns string) error {
405404

406-
fields := strings.Split(newLabel, "=")
407-
labelKey := fields[0]
408-
//labelValue := fields[1]
409405
oldData, err := json.Marshal(oldCRD)
410406
if err != nil {
411407
return err
412408
}
413409
if oldCRD.ObjectMeta.Labels == nil {
414410
oldCRD.ObjectMeta.Labels = make(map[string]string)
415411
}
416-
delete(oldCRD.ObjectMeta.Labels, labelKey)
412+
for k := range labelsMap {
413+
delete(oldCRD.ObjectMeta.Labels, k)
414+
}
417415

418416
var newData, patchBytes []byte
419417
newData, err = json.Marshal(oldCRD)

apiserver/policyservice/policyimpl.go

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

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

0 commit comments

Comments
 (0)