Skip to content

Commit 8fb74b2

Browse files
Merge pull request #2740 from sakhoury/ocpbugs-63202/bootmac-case-insensitive-validation
🐛 Make bootMACAddress webhook validation case-insensitive
2 parents 6d8d2f6 + 9391ff2 commit 8fb74b2

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

internal/webhooks/metal3.io/v1alpha1/baremetalhost_validation.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func (webhook *BareMetalHost) validateChanges(oldObj *metal3api.BareMetalHost, n
109109
errs = append(errs, errors.New("BMC address can not be changed if the BMH is not in the Registering state, or if the BMH is not detached"))
110110
}
111111

112-
if oldObj.Spec.BootMACAddress != "" && newObj.Spec.BootMACAddress != oldObj.Spec.BootMACAddress {
112+
if oldObj.Spec.BootMACAddress != "" && !strings.EqualFold(newObj.Spec.BootMACAddress, oldObj.Spec.BootMACAddress) {
113113
errs = append(errs, errors.New("bootMACAddress can not be changed once it is set"))
114114
}
115115

internal/webhooks/metal3.io/v1alpha1/baremetalhost_validation_test.go

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,11 +1055,40 @@ func TestValidateUpdate(t *testing.T) {
10551055
{
10561056
name: "updateBootMAC",
10571057
newBMH: &metal3api.BareMetalHost{
1058-
TypeMeta: tm, ObjectMeta: om, Spec: metal3api.BareMetalHostSpec{BootMACAddress: "test-mac-changed"}},
1058+
TypeMeta: tm, ObjectMeta: om, Spec: metal3api.BareMetalHostSpec{BootMACAddress: "00:11:22:33:44:66"}},
10591059
oldBMH: &metal3api.BareMetalHost{
1060-
TypeMeta: tm, ObjectMeta: om, Spec: metal3api.BareMetalHostSpec{BootMACAddress: "test-mac"}},
1060+
TypeMeta: tm, ObjectMeta: om, Spec: metal3api.BareMetalHostSpec{BootMACAddress: "00:11:22:33:44:55"}},
10611061
wantedErr: "bootMACAddress can not be changed once it is set",
10621062
},
1063+
{
1064+
name: "updateBootMACCaseOnly",
1065+
newBMH: &metal3api.BareMetalHost{
1066+
TypeMeta: tm, ObjectMeta: om, Spec: metal3api.BareMetalHostSpec{BootMACAddress: "AA:BB:CC:DD:EE:FF"}},
1067+
oldBMH: &metal3api.BareMetalHost{
1068+
TypeMeta: tm, ObjectMeta: om, Spec: metal3api.BareMetalHostSpec{BootMACAddress: "aa:bb:cc:dd:ee:ff"}},
1069+
wantedErr: "",
1070+
},
1071+
{
1072+
name: "updateBootMACCaseMixed",
1073+
newBMH: &metal3api.BareMetalHost{
1074+
TypeMeta: tm, ObjectMeta: om, Spec: metal3api.BareMetalHostSpec{BootMACAddress: "aA:Bb:cC:Dd:Ee:Ff"}},
1075+
oldBMH: &metal3api.BareMetalHost{
1076+
TypeMeta: tm, ObjectMeta: om, Spec: metal3api.BareMetalHostSpec{BootMACAddress: "AA:BB:CC:DD:EE:FF"}},
1077+
wantedErr: "",
1078+
},
1079+
{
1080+
name: "updateBootMACInvalidNew",
1081+
newBMH: &metal3api.BareMetalHost{
1082+
TypeMeta: tm, ObjectMeta: om, Spec: metal3api.BareMetalHostSpec{
1083+
BMC: metal3api.BMCDetails{
1084+
Address: "redfish://127.0.0.1",
1085+
CredentialsName: "test1",
1086+
},
1087+
BootMACAddress: "invalid-mac"}},
1088+
oldBMH: &metal3api.BareMetalHost{
1089+
TypeMeta: tm, ObjectMeta: om, Spec: metal3api.BareMetalHostSpec{BootMACAddress: "00:11:22:33:44:55"}},
1090+
wantedErr: "address invalid-mac: invalid MAC address",
1091+
},
10631092
{
10641093
name: "updateExternallyProvisioned",
10651094
newBMH: &metal3api.BareMetalHost{

0 commit comments

Comments
 (0)