← Back to team overview

sts-sponsors team mailing list archive

[Merge] ~ack/maas:more-mac-cleanups into maas:master

 

Alberto Donato has proposed merging ~ack/maas:more-mac-cleanups into maas:master.

Commit message:
some more cleanups related to MAC validation



Requested reviews:
  MAAS Maintainers (maas-maintainers)

For more details, see:
https://code.launchpad.net/~ack/maas/+git/maas/+merge/438130
-- 
Your team MAAS Maintainers is requested to review the proposed merge of ~ack/maas:more-mac-cleanups into maas:master.
diff --git a/src/maasserver/api/machines.py b/src/maasserver/api/machines.py
index 766dc68..a5374f0 100644
--- a/src/maasserver/api/machines.py
+++ b/src/maasserver/api/machines.py
@@ -13,7 +13,7 @@ import json
 import re
 
 from django.conf import settings
-from django.core.exceptions import PermissionDenied, ValidationError
+from django.core.exceptions import PermissionDenied
 from django.db.models import Q
 from django.http import (
     HttpResponse,
@@ -62,7 +62,7 @@ from maasserver.exceptions import (
     NodeStateViolation,
     Unauthorized,
 )
-from maasserver.fields import MAC_VALIDATOR
+from maasserver.fields import MAC_RE
 from maasserver.forms import (
     AdminMachineForm,
     get_machine_create_form,
@@ -1914,9 +1914,7 @@ class AnonMachinesHandler(AnonNodesHandler):
             # caught.
             macs_valid = True
             for mac_address in mac_addresses:
-                try:
-                    MAC_VALIDATOR(mac_address)
-                except ValidationError:
+                if not MAC_RE.match(mac_address):
                     macs_valid = False
                     break
             if macs_valid:
diff --git a/src/maasserver/fields.py b/src/maasserver/fields.py
index 276d4d4..0d014ff 100644
--- a/src/maasserver/fields.py
+++ b/src/maasserver/fields.py
@@ -36,8 +36,9 @@ MAC_RE = re.compile(
     r"([0-9a-fA-F]{3,4}.){2}[0-9a-fA-F]{3,4}"  # aabb.ccdd.eeff
     r"$"
 )
-MAC_ERROR_MSG = "'%(value)s' is not a valid MAC address."
-MAC_VALIDATOR = RegexValidator(regex=MAC_RE, message=MAC_ERROR_MSG)
+MAC_VALIDATOR = RegexValidator(
+    regex=MAC_RE, message="'%(value)s' is not a valid MAC address."
+)
 
 
 class MACAddressFormField(forms.CharField):
@@ -45,9 +46,7 @@ class MACAddressFormField(forms.CharField):
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
-        self.validators.append(
-            RegexValidator(regex=MAC_RE, message=MAC_ERROR_MSG)
-        )
+        self.validators.append(MAC_VALIDATOR)
 
 
 class MACAddressField(Field):
diff --git a/src/maasserver/rpc/tests/test_rackcontrollers.py b/src/maasserver/rpc/tests/test_rackcontrollers.py
index 88b0591..05de7b4 100644
--- a/src/maasserver/rpc/tests/test_rackcontrollers.py
+++ b/src/maasserver/rpc/tests/test_rackcontrollers.py
@@ -212,7 +212,7 @@ class TestRegisterRackController(MAASServerTestCase):
 
     def test_creates_new_rackcontroller(self):
         existing_machine = factory.make_Machine()
-        rack_mac = (factory.make_mac_address(),)
+        rack_mac = factory.make_mac_address()
         interfaces = {
             factory.make_name("eth0"): {
                 "type": "physical",

Follow ups