Skip to content

Commit e6e6f5b

Browse files
authored
Merge pull request #4800 from willie-yao/fleet-fixes
Don't allow fleetsMembers to have capital letters. Default spec.group.
2 parents 34ffa2c + 451b397 commit e6e6f5b

File tree

3 files changed

+61
-5
lines changed

3 files changed

+61
-5
lines changed

api/v1beta1/azuremanagedcontrolplane_default.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,13 @@ func (m *AzureManagedControlPlane) setDefaultSubnet() {
101101
// setDefaultFleetsMember sets the default FleetsMember for an AzureManagedControlPlane.
102102
func setDefaultFleetsMember(fleetsMember *FleetsMember, labels map[string]string) *FleetsMember {
103103
result := fleetsMember.DeepCopy()
104-
if clusterName, ok := labels[clusterv1.ClusterNameLabel]; ok && fleetsMember != nil && fleetsMember.Name == "" {
105-
result.Name = clusterName
104+
if fleetsMember != nil {
105+
if clusterName, ok := labels[clusterv1.ClusterNameLabel]; ok && fleetsMember.Name == "" {
106+
result.Name = clusterName
107+
}
108+
if fleetsMember.Group == "" {
109+
result.Group = "default"
110+
}
106111
}
107112
return result
108113
}

api/v1beta1/azuremanagedcontrolplane_webhook.go

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ func (mw *azureManagedControlPlaneWebhook) ValidateUpdate(ctx context.Context, o
220220
allErrs = append(allErrs, errs...)
221221
}
222222

223-
if errs := m.validateFleetsMember(old); len(errs) > 0 {
223+
if errs := m.validateFleetsMemberUpdate(old); len(errs) > 0 {
224224
allErrs = append(allErrs, errs...)
225225
}
226226

@@ -292,6 +292,8 @@ func (m *AzureManagedControlPlane) Validate(cli client.Client) error {
292292

293293
allErrs = append(allErrs, validateAMCPVirtualNetwork(m.Spec.VirtualNetwork, field.NewPath("spec").Child("VirtualNetwork"))...)
294294

295+
allErrs = append(allErrs, validateFleetsMember(m.Spec.FleetsMember, field.NewPath("spec").Child("FleetsMember"))...)
296+
295297
return allErrs.ToAggregate()
296298
}
297299

@@ -463,6 +465,25 @@ func validateAMCPVirtualNetwork(virtualNetwork ManagedControlPlaneVirtualNetwork
463465
return allErrs
464466
}
465467

468+
func validateFleetsMember(fleetsMember *FleetsMember, fldPath *field.Path) field.ErrorList {
469+
var allErrs field.ErrorList
470+
471+
if fleetsMember != nil && fleetsMember.Name != "" {
472+
match, _ := regexp.MatchString(`^[a-z0-9]([-a-z0-9]*[a-z0-9])?$`, fleetsMember.Name)
473+
if !match {
474+
allErrs = append(allErrs,
475+
field.Invalid(
476+
fldPath.Child("Name"),
477+
fleetsMember.Name,
478+
"Name must match ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
479+
),
480+
)
481+
}
482+
}
483+
484+
return allErrs
485+
}
486+
466487
// validateAPIServerAccessProfile validates an APIServerAccessProfile.
467488
func validateAPIServerAccessProfile(apiServerAccessProfile *APIServerAccessProfile, fldPath *field.Path) field.ErrorList {
468489
var allErrs field.ErrorList
@@ -882,8 +903,8 @@ func (m *AzureManagedControlPlane) validateOIDCIssuerProfileUpdate(old *AzureMan
882903
return allErrs
883904
}
884905

885-
// validateFleetsMember validates a FleetsMember.
886-
func (m *AzureManagedControlPlane) validateFleetsMember(old *AzureManagedControlPlane) field.ErrorList {
906+
// validateFleetsMemberUpdate validates a FleetsMember.
907+
func (m *AzureManagedControlPlane) validateFleetsMemberUpdate(old *AzureManagedControlPlane) field.ErrorList {
887908
var allErrs field.ErrorList
888909

889910
if old.Spec.FleetsMember == nil || m.Spec.FleetsMember == nil {

api/v1beta1/azuremanagedcontrolplane_webhook_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1354,6 +1354,36 @@ func TestValidatingWebhook(t *testing.T) {
13541354
},
13551355
expectErr: true,
13561356
},
1357+
{
1358+
name: "Testing valid FleetsMember",
1359+
amcp: AzureManagedControlPlane{
1360+
ObjectMeta: getAMCPMetaData(),
1361+
Spec: AzureManagedControlPlaneSpec{
1362+
FleetsMember: &FleetsMember{
1363+
Name: "fleetmember1",
1364+
},
1365+
AzureManagedControlPlaneClassSpec: AzureManagedControlPlaneClassSpec{
1366+
Version: "v1.17.8",
1367+
},
1368+
},
1369+
},
1370+
expectErr: false,
1371+
},
1372+
{
1373+
name: "Testing invalid FleetsMember: Fleets member name cannot contain capital letters",
1374+
amcp: AzureManagedControlPlane{
1375+
ObjectMeta: getAMCPMetaData(),
1376+
Spec: AzureManagedControlPlaneSpec{
1377+
FleetsMember: &FleetsMember{
1378+
Name: "FleetMember1",
1379+
},
1380+
AzureManagedControlPlaneClassSpec: AzureManagedControlPlaneClassSpec{
1381+
Version: "v1.17.8",
1382+
},
1383+
},
1384+
},
1385+
expectErr: true,
1386+
},
13571387
}
13581388

13591389
for _, tt := range tests {

0 commit comments

Comments
 (0)