mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 05:57:25 +00:00
Fix providerID update validation
This commit is contained in:
parent
4457e43e7b
commit
032a6d9441
@ -3437,6 +3437,16 @@ func ValidateNodeUpdate(node, oldNode *api.Node) field.ErrorList {
|
|||||||
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "podCIDR"), "node updates may not change podCIDR except from \"\" to valid"))
|
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "podCIDR"), "node updates may not change podCIDR except from \"\" to valid"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Allow controller manager updating provider ID when not set
|
||||||
|
if len(oldNode.Spec.ProviderID) == 0 {
|
||||||
|
oldNode.Spec.ProviderID = node.Spec.ProviderID
|
||||||
|
} else {
|
||||||
|
if oldNode.Spec.ProviderID != node.Spec.ProviderID {
|
||||||
|
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "providerID"), "node updates may not change providerID except from \"\" to valid"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: move reset function to its own location
|
// TODO: move reset function to its own location
|
||||||
// Ignore metadata changes now that they have been tested
|
// Ignore metadata changes now that they have been tested
|
||||||
oldNode.ObjectMeta = node.ObjectMeta
|
oldNode.ObjectMeta = node.ObjectMeta
|
||||||
|
@ -8245,6 +8245,33 @@ func TestValidateNodeUpdate(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, false},
|
}, false},
|
||||||
|
{api.Node{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "update-provider-id-when-not-set",
|
||||||
|
},
|
||||||
|
}, api.Node{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "update-provider-id-when-not-set",
|
||||||
|
},
|
||||||
|
Spec: api.NodeSpec{
|
||||||
|
ProviderID: "provider:///new",
|
||||||
|
},
|
||||||
|
}, true},
|
||||||
|
{api.Node{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "update-provider-id-when-set",
|
||||||
|
},
|
||||||
|
Spec: api.NodeSpec{
|
||||||
|
ProviderID: "provider:///old",
|
||||||
|
},
|
||||||
|
}, api.Node{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "update-provider-id-when-set",
|
||||||
|
},
|
||||||
|
Spec: api.NodeSpec{
|
||||||
|
ProviderID: "provider:///new",
|
||||||
|
},
|
||||||
|
}, false},
|
||||||
}
|
}
|
||||||
for i, test := range tests {
|
for i, test := range tests {
|
||||||
test.oldNode.ObjectMeta.ResourceVersion = "1"
|
test.oldNode.ObjectMeta.ResourceVersion = "1"
|
||||||
|
Loading…
Reference in New Issue
Block a user