From 1556c4c29a97af9da822e780c29b6abe3eb2e680 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Thu, 6 Apr 2023 21:20:24 +0300 Subject: [PATCH] nfd-master: fix node update Update node status before node metadata. This fixes a problem where we lose track of NFD-managed extended resources in case patching node status fails. Previously we removed all labels and annotations (including the one listing our ERs) and only after that updated node status. If node status update failed we had lost the annotation but extended resources were still there, leaving them orphaned. --- pkg/nfd-master/nfd-master.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/nfd-master/nfd-master.go b/pkg/nfd-master/nfd-master.go index 1722809903..f1441cf89d 100644 --- a/pkg/nfd-master/nfd-master.go +++ b/pkg/nfd-master/nfd-master.go @@ -878,12 +878,6 @@ func (m *nfdMaster) updateNodeObject(cli *kubernetes.Clientset, nodeName string, patches := createPatches(oldLabels, node.Labels, labels, "/metadata/labels") patches = append(patches, createPatches(nil, node.Annotations, annotations, "/metadata/annotations")...) - // Patch the node object in the apiserver - err = m.apihelper.PatchNode(cli, node.Name, patches) - if err != nil { - return fmt.Errorf("error while patching node object: %v", err) - } - // patch node status with extended resource changes statusPatches := m.createExtendedResourcePatches(node, extendedResources) err = m.apihelper.PatchNodeStatus(cli, node.Name, statusPatches) @@ -891,6 +885,12 @@ func (m *nfdMaster) updateNodeObject(cli *kubernetes.Clientset, nodeName string, return fmt.Errorf("error while patching extended resources: %v", err) } + // Patch the node object in the apiserver + err = m.apihelper.PatchNode(cli, node.Name, patches) + if err != nil { + return fmt.Errorf("error while patching node object: %v", err) + } + if len(patches) > 0 || len(statusPatches) > 0 { klog.Infof("node %q updated", nodeName) } else {