Skip to content

Commit b22f9d9

Browse files
authored
Merge pull request #4258 from k8s-infra-cherrypick-robot/cherry-pick-4256-to-release-2.1
[release-2.1] 🐛 Allow the defaulting of InstanceMetadataOptions to go through for AWSMachineTemplates
2 parents 694e923 + 3a7540e commit b22f9d9

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

api/v1beta2/awsmachinetemplate_webhook.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,15 @@ func (r *AWSMachineTemplateWebhook) ValidateUpdate(ctx context.Context, oldRaw r
227227
var allErrs field.ErrorList
228228

229229
if !topology.ShouldSkipImmutabilityChecks(req, newAWSMachineTemplate) && !cmp.Equal(newAWSMachineTemplate.Spec, oldAWSMachineTemplate.Spec) {
230-
allErrs = append(allErrs, field.Invalid(field.NewPath("spec"), newAWSMachineTemplate, "AWSMachineTemplate.Spec is immutable"))
230+
if oldAWSMachineTemplate.Spec.Template.Spec.InstanceMetadataOptions == nil {
231+
oldAWSMachineTemplate.Spec.Template.Spec.InstanceMetadataOptions = newAWSMachineTemplate.Spec.Template.Spec.InstanceMetadataOptions
232+
}
233+
234+
if !cmp.Equal(newAWSMachineTemplate.Spec.Template.Spec, oldAWSMachineTemplate.Spec.Template.Spec) {
235+
allErrs = append(allErrs,
236+
field.Invalid(field.NewPath("spec", "template", "spec"), newAWSMachineTemplate, "AWSMachineTemplate.Spec is immutable"),
237+
)
238+
}
231239
}
232240

233241
return aggregateObjErrors(newAWSMachineTemplate.GroupVersionKind().GroupKind(), newAWSMachineTemplate.Name, allErrs)

api/v1beta2/awsmachinetemplate_webhook_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,27 @@ func TestAWSMachineTemplateValidateUpdate(t *testing.T) {
116116
},
117117
wantError: true,
118118
},
119+
{
120+
name: "allow defaulted values to update",
121+
modifiedTemplate: &AWSMachineTemplate{
122+
ObjectMeta: metav1.ObjectMeta{},
123+
Spec: AWSMachineTemplateSpec{
124+
Template: AWSMachineTemplateResource{
125+
Spec: AWSMachineSpec{
126+
CloudInit: CloudInit{},
127+
InstanceType: "test",
128+
InstanceMetadataOptions: &InstanceMetadataOptions{
129+
HTTPEndpoint: InstanceMetadataEndpointStateEnabled,
130+
HTTPPutResponseHopLimit: 1,
131+
HTTPTokens: HTTPTokensStateRequired,
132+
InstanceMetadataTags: InstanceMetadataEndpointStateDisabled,
133+
},
134+
},
135+
},
136+
},
137+
},
138+
wantError: false,
139+
},
119140
}
120141
for _, tt := range tests {
121142
t.Run(tt.name, func(t *testing.T) {

0 commit comments

Comments
 (0)