MCPcopy
hub / github.com/fluid-cloudnative/fluid / ChangeNodeLabelWithUpdateMode

Function ChangeNodeLabelWithUpdateMode

pkg/utils/label.go:33–72  ·  view source on GitHub ↗

ChangeNodeLabelWithUpdateMode updates the input labels in UPDATE mode.

(client client.Client, node *v1.Node, labelsToModify common.LabelsToModify)

Source from the content-addressed store, hash-verified

31
32// ChangeNodeLabelWithUpdateMode updates the input labels in UPDATE mode.
33func ChangeNodeLabelWithUpdateMode(client client.Client, node *v1.Node, labelsToModify common.LabelsToModify) (modifiedLabels []string, err error) {
34 labels := labelsToModify.GetLabels()
35
36 for _, labelToModify := range labels {
37 oldLabels := node.Labels
38 operationType := labelToModify.GetOperationType()
39 labelToModifyKey := labelToModify.GetLabelKey()
40 labelToModifyValue := labelToModify.GetLabelValue()
41
42 switch operationType {
43 case common.AddLabel:
44 if _, exists := oldLabels[labelToModifyKey]; exists {
45 err = fmt.Errorf("fail to add the label due to the label %s already exist", labelToModifyKey)
46 return nil, err
47 }
48 node.Labels[labelToModifyKey] = labelToModifyValue
49 case common.UpdateLabel:
50 if _, exists := oldLabels[labelToModifyKey]; !exists {
51 err = fmt.Errorf("fail to update the label due to the label %s does not exist", labelToModifyKey)
52 return nil, err
53 }
54 node.Labels[labelToModifyKey] = labelToModifyValue
55 case common.DeleteLabel:
56 if _, exists := oldLabels[labelToModifyKey]; !exists {
57 err = fmt.Errorf("fail to delete the label due to the label %s does not exist", labelToModifyKey)
58 return nil, err
59 }
60 delete(node.Labels, labelToModifyKey)
61 default:
62 err = fmt.Errorf("fail to update the label due to the wrong operation: %s", operationType)
63 return nil, err
64 }
65 modifiedLabels = append(modifiedLabels, labelToModifyKey)
66 }
67 err = client.Update(context.TODO(), node)
68 if err != nil {
69 return nil, errors.Wrapf(err, "update node labels failed, node name: %s, labels: %v", node.Name, node.Labels)
70 }
71 return modifiedLabels, nil
72}
73
74func PatchLabels(cli client.Client, obj client.Object, labelsToModify common.LabelsToModify) (modifiedLabels []string, err error) {
75 labels := labelsToModify.GetLabels()

Callers 1

Calls 6

deleteFunction · 0.85
GetLabelsMethod · 0.80
GetLabelKeyMethod · 0.80
GetLabelValueMethod · 0.80
UpdateMethod · 0.80
GetOperationTypeMethod · 0.65

Tested by 1