Add method is_valid_mac
Method is_valid_mac is defined in Ironic[1] and Magnum[2], It's good for oslo.utils to adopt it. [1]44bde8cd2d/ironic/common/utils.py (L118)
[2]cc839e86af/magnum/common/utils.py (L103)
Change-Id: Idc3d38d8d569cc6c1e53fb75df61f6b90abed28d
This commit is contained in:
parent
e98815718d
commit
e4c9a25823
|
@ -19,10 +19,12 @@ Network-related utilities and helper functions.
|
|||
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
import socket
|
||||
|
||||
import netaddr
|
||||
import netifaces
|
||||
import six
|
||||
from six.moves.urllib import parse
|
||||
|
||||
from oslo_utils._i18n import _
|
||||
|
@ -219,6 +221,22 @@ def is_valid_ip(address):
|
|||
return is_valid_ipv4(address) or is_valid_ipv6(address)
|
||||
|
||||
|
||||
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.
|
||||
|
||||
.. versionadded:: 3.17
|
||||
"""
|
||||
m = "[0-9a-f]{2}(:[0-9a-f]{2}){5}$"
|
||||
return (isinstance(address, six.string_types) and
|
||||
re.match(m, address.lower()))
|
||||
|
||||
|
||||
def _is_int_in_range(value, start, end):
|
||||
"""Try to convert value to int and check if it lies within
|
||||
range 'start' to 'end'.
|
||||
|
|
|
@ -179,6 +179,17 @@ class NetworkUtilsTest(test_base.BaseTestCase):
|
|||
|
||||
self.assertFalse(netutils.is_valid_ip(''))
|
||||
|
||||
def test_is_valid_mac(self):
|
||||
self.assertTrue(netutils.is_valid_mac("52:54:00:cf:2d:31"))
|
||||
self.assertTrue(netutils.is_valid_mac(u"52:54:00:cf:2d:31"))
|
||||
self.assertFalse(netutils.is_valid_mac("127.0.0.1"))
|
||||
self.assertFalse(netutils.is_valid_mac("not:a:mac:address"))
|
||||
self.assertFalse(netutils.is_valid_mac("52-54-00-cf-2d-31"))
|
||||
self.assertFalse(netutils.is_valid_mac("aa bb cc dd ee ff"))
|
||||
self.assertTrue(netutils.is_valid_mac("AA:BB:CC:DD:EE:FF"))
|
||||
self.assertFalse(netutils.is_valid_mac("AA BB CC DD EE FF"))
|
||||
self.assertFalse(netutils.is_valid_mac("AA-BB-CC-DD-EE-FF"))
|
||||
|
||||
def test_is_valid_cidr(self):
|
||||
self.assertTrue(netutils.is_valid_cidr('10.0.0.0/24'))
|
||||
self.assertTrue(netutils.is_valid_cidr('10.0.0.1/32'))
|
||||
|
|
Loading…
Reference in New Issue