Skip to content

Commit 5effe80

Browse files
committed
review fixes
1 parent 5e0af76 commit 5effe80

File tree

2 files changed

+62
-14
lines changed

2 files changed

+62
-14
lines changed

internal/controllers/machine/machine_controller_noderef.go

+12-13
Original file line numberDiff line numberDiff line change
@@ -302,20 +302,19 @@ func (r *Reconciler) patchNode(ctx context.Context, remoteClient client.Client,
302302
return errors.Wrapf(err, "failed to check if Node %s is outdated", klog.KRef("", node.Name))
303303
}
304304

305-
// It is not possible to identify if we have to set the NodeOutdatedRevisionTaint if there is
306-
// no OwnerReference or the owning MachineSet or MachineDeployment was not found.
307-
// Note: This could happen e.g. during background deletion of objects.
308-
if notFound {
309-
return nil
310-
}
311-
if isOutdated {
312-
hasTaintChanges = taints.EnsureNodeTaint(newNode, clusterv1.NodeOutdatedRevisionTaint) || hasTaintChanges
313-
} else {
314-
hasTaintChanges = taints.RemoveNodeTaint(newNode, clusterv1.NodeOutdatedRevisionTaint) || hasTaintChanges
315-
}
305+
// It is only possible to identify if we have to set or remove the NodeOutdatedRevisionTaint if shouldNodeHaveOutdatedTaint
306+
// found all relevant objects.
307+
// Example: when the MachineDeployment or Machineset can't be found due to a background deletion of objects.
308+
if !notFound {
309+
if isOutdated {
310+
hasTaintChanges = taints.EnsureNodeTaint(newNode, clusterv1.NodeOutdatedRevisionTaint) || hasTaintChanges
311+
} else {
312+
hasTaintChanges = taints.RemoveNodeTaint(newNode, clusterv1.NodeOutdatedRevisionTaint) || hasTaintChanges
313+
}
316314

317-
if !hasAnnotationChanges && !hasLabelChanges && !hasTaintChanges {
318-
return nil
315+
if !hasAnnotationChanges && !hasLabelChanges && !hasTaintChanges {
316+
return nil
317+
}
319318
}
320319

321320
return remoteClient.Patch(ctx, newNode, client.StrategicMergeFrom(node))

internal/controllers/machine/machine_controller_noderef_test.go

+50-1
Original file line numberDiff line numberDiff line change
@@ -773,6 +773,53 @@ func TestPatchNode(t *testing.T) {
773773
ms: newFakeMachineSet(metav1.NamespaceDefault, clusterName),
774774
md: newFakeMachineDeployment(metav1.NamespaceDefault, clusterName),
775775
},
776+
{
777+
name: "Ensure Labels and Annotations still get patched if MachineSet cannot be found",
778+
oldNode: &corev1.Node{
779+
ObjectMeta: metav1.ObjectMeta{
780+
Name: fmt.Sprintf("node-%s", util.RandomString(6)),
781+
},
782+
},
783+
expectedAnnotations: map[string]string{
784+
clusterv1.LabelsFromMachineAnnotation: "",
785+
},
786+
expectedTaints: []corev1.Taint{
787+
{Key: "node.kubernetes.io/not-ready", Effect: "NoSchedule"}, // Added by the API server
788+
},
789+
machine: &clusterv1.Machine{
790+
ObjectMeta: metav1.ObjectMeta{
791+
Name: fmt.Sprintf("ma-%s", util.RandomString(6)),
792+
Namespace: metav1.NamespaceDefault,
793+
Labels: map[string]string{
794+
clusterv1.MachineSetNameLabel: "test-ms-missing",
795+
clusterv1.MachineDeploymentNameLabel: "test-md",
796+
},
797+
OwnerReferences: []metav1.OwnerReference{{
798+
Kind: "MachineSet",
799+
Name: "test-ms-missing",
800+
APIVersion: clusterv1.GroupVersion.String(),
801+
UID: "uid",
802+
}},
803+
},
804+
Spec: newFakeMachineSpec(metav1.NamespaceDefault, clusterName),
805+
},
806+
ms: nil,
807+
md: &clusterv1.MachineDeployment{
808+
ObjectMeta: metav1.ObjectMeta{
809+
Name: "test-md",
810+
Namespace: metav1.NamespaceDefault,
811+
Annotations: map[string]string{
812+
clusterv1.RevisionAnnotation: "1",
813+
},
814+
},
815+
Spec: clusterv1.MachineDeploymentSpec{
816+
ClusterName: clusterName,
817+
Template: clusterv1.MachineTemplateSpec{
818+
Spec: newFakeMachineSpec(metav1.NamespaceDefault, clusterName),
819+
},
820+
},
821+
},
822+
},
776823
{
777824
name: "Ensure NodeOutdatedRevisionTaint to be set if a node is associated to an outdated machineset",
778825
oldNode: &corev1.Node{
@@ -916,7 +963,9 @@ func TestPatchNode(t *testing.T) {
916963

917964
g.Expect(env.CreateAndWait(ctx, oldNode)).To(Succeed())
918965
g.Expect(env.CreateAndWait(ctx, machine)).To(Succeed())
919-
g.Expect(env.CreateAndWait(ctx, ms)).To(Succeed())
966+
if ms != nil {
967+
g.Expect(env.CreateAndWait(ctx, ms)).To(Succeed())
968+
}
920969
g.Expect(env.CreateAndWait(ctx, md)).To(Succeed())
921970
t.Cleanup(func() {
922971
_ = env.CleanupAndWait(ctx, oldNode, machine, ms, md)

0 commit comments

Comments
 (0)