Use function is_valid_mac from oslo.utils

Oslo.utils 3.17 provides same function, just use it.

Change-Id: I036cf1113c4e77100e0fa259b74af7e84b07a23c
This commit is contained in:
ChangBo Guo(gcb) 2016-10-21 12:37:53 +08:00 committed by ChangBo Guo(gcb)
parent 6ef7e23aa3
commit d7137982dd
5 changed files with 14 additions and 35 deletions

View File

@ -29,6 +29,7 @@ import tempfile
from oslo_concurrency import processutils from oslo_concurrency import processutils
from oslo_log import log as logging from oslo_log import log as logging
from oslo_utils import netutils
from oslo_utils import timeutils from oslo_utils import timeutils
import paramiko import paramiko
import pytz import pytz
@ -115,21 +116,6 @@ def ssh_connect(connection):
return ssh return ssh
def is_valid_mac(address):
"""Verify the format of a MAC address.
Check if a MAC address is valid and contains six octets. Accepts
colon-separated format only.
:param address: MAC address to be validated.
:returns: True if valid. False if not.
"""
m = "[0-9a-f]{2}(:[0-9a-f]{2}){5}$"
return (isinstance(address, six.string_types) and
re.match(m, address.lower()))
def is_valid_datapath_id(datapath_id): def is_valid_datapath_id(datapath_id):
"""Verify the format of an OpenFlow datapath_id. """Verify the format of an OpenFlow datapath_id.
@ -240,7 +226,7 @@ def validate_and_normalize_mac(address):
:raises: InvalidMAC If the MAC address is not valid. :raises: InvalidMAC If the MAC address is not valid.
""" """
if not is_valid_mac(address): if not netutils.is_valid_mac(address):
raise exception.InvalidMAC(mac=address) raise exception.InvalidMAC(mac=address)
return address.lower() return address.lower()

View File

@ -24,6 +24,7 @@ from oslo_db import exception as db_exc
from oslo_db.sqlalchemy import enginefacade from oslo_db.sqlalchemy import enginefacade
from oslo_db.sqlalchemy import utils as db_utils from oslo_db.sqlalchemy import utils as db_utils
from oslo_log import log from oslo_log import log
from oslo_utils import netutils
from oslo_utils import strutils from oslo_utils import strutils
from oslo_utils import timeutils from oslo_utils import timeutils
from oslo_utils import uuidutils from oslo_utils import uuidutils
@ -34,7 +35,6 @@ from sqlalchemy import sql
from ironic.common import exception from ironic.common import exception
from ironic.common.i18n import _, _LW from ironic.common.i18n import _, _LW
from ironic.common import states from ironic.common import states
from ironic.common import utils
from ironic.conf import CONF from ironic.conf import CONF
from ironic.db import api from ironic.db import api
from ironic.db.sqlalchemy import models from ironic.db.sqlalchemy import models
@ -102,7 +102,7 @@ def add_port_filter(query, value):
:param value: Value for filtering results by. :param value: Value for filtering results by.
:return: Modified query. :return: Modified query.
""" """
if utils.is_valid_mac(value): if netutils.is_valid_mac(value):
return query.filter_by(address=value) return query.filter_by(address=value)
else: else:
return add_identity_filter(query, value) return add_identity_filter(query, value)
@ -127,7 +127,7 @@ def add_portgroup_filter(query, value):
:param value: Value for filtering results by. :param value: Value for filtering results by.
:return: Modified query. :return: Modified query.
""" """
if utils.is_valid_mac(value): if netutils.is_valid_mac(value):
return query.filter_by(address=value) return query.filter_by(address=value)
else: else:
return add_identity_filter(query, value) return add_identity_filter(query, value)

View File

@ -13,12 +13,12 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from oslo_utils import netutils
from oslo_utils import strutils from oslo_utils import strutils
from oslo_utils import uuidutils from oslo_utils import uuidutils
from oslo_versionedobjects import base as object_base from oslo_versionedobjects import base as object_base
from ironic.common import exception from ironic.common import exception
from ironic.common import utils
from ironic.db import api as dbapi from ironic.db import api as dbapi
from ironic.objects import base from ironic.objects import base
from ironic.objects import fields as object_fields from ironic.objects import fields as object_fields
@ -77,7 +77,7 @@ class Port(base.IronicObject, object_base.VersionedObjectDictCompat):
return cls.get_by_id(context, port_id) return cls.get_by_id(context, port_id)
elif uuidutils.is_uuid_like(port_id): elif uuidutils.is_uuid_like(port_id):
return cls.get_by_uuid(context, port_id) return cls.get_by_uuid(context, port_id)
elif utils.is_valid_mac(port_id): elif netutils.is_valid_mac(port_id):
return cls.get_by_address(context, port_id) return cls.get_by_address(context, port_id)
else: else:
raise exception.InvalidIdentity(identity=port_id) raise exception.InvalidIdentity(identity=port_id)

View File

@ -13,6 +13,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from oslo_utils import netutils
from oslo_utils import strutils from oslo_utils import strutils
from oslo_utils import uuidutils from oslo_utils import uuidutils
from oslo_versionedobjects import base as object_base from oslo_versionedobjects import base as object_base
@ -68,7 +69,7 @@ class Portgroup(base.IronicObject, object_base.VersionedObjectDictCompat):
return cls.get_by_id(context, portgroup_ident) return cls.get_by_id(context, portgroup_ident)
elif uuidutils.is_uuid_like(portgroup_ident): elif uuidutils.is_uuid_like(portgroup_ident):
return cls.get_by_uuid(context, portgroup_ident) return cls.get_by_uuid(context, portgroup_ident)
elif utils.is_valid_mac(portgroup_ident): elif netutils.is_valid_mac(portgroup_ident):
return cls.get_by_address(context, portgroup_ident) return cls.get_by_address(context, portgroup_ident)
elif utils.is_valid_logical_name(portgroup_ident): elif utils.is_valid_logical_name(portgroup_ident):
return cls.get_by_name(context, portgroup_ident) return cls.get_by_name(context, portgroup_ident)

View File

@ -24,6 +24,7 @@ import tempfile
import mock import mock
from oslo_concurrency import processutils from oslo_concurrency import processutils
from oslo_config import cfg from oslo_config import cfg
from oslo_utils import netutils
import six import six
from ironic.common import exception from ironic.common import exception
@ -247,17 +248,6 @@ class GenericUtilsTestCase(base.TestCase):
self.assertRaises(exception.InvalidParameterValue, utils.hash_file, self.assertRaises(exception.InvalidParameterValue, utils.hash_file,
file_like_object, 'hickory-dickory-dock') file_like_object, 'hickory-dickory-dock')
def test_is_valid_mac(self):
self.assertTrue(utils.is_valid_mac("52:54:00:cf:2d:31"))
self.assertTrue(utils.is_valid_mac(u"52:54:00:cf:2d:31"))
self.assertFalse(utils.is_valid_mac("127.0.0.1"))
self.assertFalse(utils.is_valid_mac("not:a:mac:address"))
self.assertFalse(utils.is_valid_mac("52-54-00-cf-2d-31"))
self.assertFalse(utils.is_valid_mac("aa bb cc dd ee ff"))
self.assertTrue(utils.is_valid_mac("AA:BB:CC:DD:EE:FF"))
self.assertFalse(utils.is_valid_mac("AA BB CC DD EE FF"))
self.assertFalse(utils.is_valid_mac("AA-BB-CC-DD-EE-FF"))
def test_is_valid_datapath_id(self): def test_is_valid_datapath_id(self):
self.assertTrue(utils.is_valid_datapath_id("525400cf2d319fdf")) self.assertTrue(utils.is_valid_datapath_id("525400cf2d319fdf"))
self.assertTrue(utils.is_valid_datapath_id("525400CF2D319FDF")) self.assertTrue(utils.is_valid_datapath_id("525400CF2D319FDF"))
@ -332,7 +322,8 @@ class GenericUtilsTestCase(base.TestCase):
def test_validate_and_normalize_mac(self): def test_validate_and_normalize_mac(self):
mac = 'AA:BB:CC:DD:EE:FF' mac = 'AA:BB:CC:DD:EE:FF'
with mock.patch.object(utils, 'is_valid_mac', autospec=True) as m_mock: with mock.patch.object(netutils, 'is_valid_mac',
autospec=True) as m_mock:
m_mock.return_value = True m_mock.return_value = True
self.assertEqual(mac.lower(), self.assertEqual(mac.lower(),
utils.validate_and_normalize_mac(mac)) utils.validate_and_normalize_mac(mac))
@ -347,7 +338,8 @@ class GenericUtilsTestCase(base.TestCase):
datapath_id)) datapath_id))
def test_validate_and_normalize_mac_invalid_format(self): def test_validate_and_normalize_mac_invalid_format(self):
with mock.patch.object(utils, 'is_valid_mac', autospec=True) as m_mock: with mock.patch.object(netutils, 'is_valid_mac',
autospec=True) as m_mock:
m_mock.return_value = False m_mock.return_value = False
self.assertRaises(exception.InvalidMAC, self.assertRaises(exception.InvalidMAC,
utils.validate_and_normalize_mac, 'invalid-mac') utils.validate_and_normalize_mac, 'invalid-mac')