in pkg/node/node.go [378:410]
func (n Node) removeLabelIfValueMatches(nodeName string, key string, matchValue string) error {
type patchRequest struct {
Op string `json:"op"`
Path string `json:"path"`
}
var patchReqs []interface{}
patchRemove := patchRequest{
Op: "remove",
Path: fmt.Sprintf("/metadata/labels/%s", jsonPatchEscape(key)),
}
payload, err := json.Marshal(append(patchReqs, patchRemove))
if err != nil {
return fmt.Errorf("An error occurred while marshalling the json to remove a label from the node: %w", err)
}
node, err := n.fetchKubernetesNode(nodeName)
if err != nil {
return err
}
val, ok := node.ObjectMeta.Labels[key]
if !ok || val == matchValue {
return nil
}
if n.nthConfig.DryRun {
log.Info().Msgf("Would have removed label with key %s from node %s, but dry-run flag was set", key, nodeName)
return nil
}
_, err = n.drainHelper.Client.CoreV1().Nodes().Patch(context.TODO(), node.Name, types.JSONPatchType, payload, metav1.PatchOptions{})
if err != nil {
return fmt.Errorf("%v node Patch failed when removing a label from the node: %w", node.Name, err)
}
return nil
}