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 add_mac_filter(query, value): if utils.is_int_like(value): return query.filter_by(id=value) elif utils.is_valid_mac(value): return query.filter_by(address=value) else: raise exception.InvalidMAC(mac=value)
def _check_address(self, port_dict): if not utils.is_valid_mac(port_dict['address']): raise wsme.exc.ClientSideError(_("Invalid MAC address format: %s") % port_dict['address']) try: if pecan.request.dbapi.get_port(port_dict['address']): raise wsme.exc.ClientSideError(_("MAC address already " "exists.")) except exception.PortNotFound: pass
def add_port_filter(query, value): """Adds a port-specific filter to a query. Filters results by address, if supplied value is a valid MAC address. Otherwise attempts to filter results by identity. :param query: Initial query to add filter to. :param value: Value for filtering results by. :return: Modified query. """ if utils.is_valid_mac(value): return query.filter_by(address=value) else: return add_identity_filter(query, value)
def get(cls, context, port_id): """Find a port based on its id or uuid and return a Port object. :param port_id: the id *or* uuid of a port. :returns: a :class:`Port` object. """ if utils.is_int_like(port_id): return cls.get_by_id(context, port_id) elif utils.is_uuid_like(port_id): return cls.get_by_uuid(context, port_id) elif utils.is_valid_mac(port_id): return cls.get_by_address(context, port_id) else: raise exception.InvalidIdentity(identity=port_id)
def get(cls, context, port_id): """Find a port based on its id or uuid and return a Port object. :param port_id: the id *or* uuid of a port. :returns: a :class:`Port` object. """ if strutils.is_int_like(port_id): return cls.get_by_id(context, port_id) elif uuidutils.is_uuid_like(port_id): return cls.get_by_uuid(context, port_id) elif utils.is_valid_mac(port_id): return cls.get_by_address(context, port_id) else: raise exception.InvalidIdentity(identity=port_id)
def get(cls, context, portgroup_ident): """Find a portgroup based on its id, uuid, name or address. :param portgroup_ident: The id, uuid, name or address of a portgroup. :param context: Security context :returns: A :class:`Portgroup` object. :raises: InvalidIdentity """ if strutils.is_int_like(portgroup_ident): return cls.get_by_id(context, portgroup_ident) elif uuidutils.is_uuid_like(portgroup_ident): return cls.get_by_uuid(context, portgroup_ident) elif utils.is_valid_mac(portgroup_ident): return cls.get_by_address(context, portgroup_ident) elif utils.is_valid_logical_name(portgroup_ident): return cls.get_by_name(context, portgroup_ident) else: raise exception.InvalidIdentity(identity=portgroup_ident)
def _check_address(self, port_dict): if not utils.is_valid_mac(port_dict['address']): if '-' in port_dict['address']: msg = _("Does not support hyphens as separator: %s") \ % port_dict['address'] else: msg = _("Invalid MAC address format: %s") \ % port_dict['address'] raise wsme.exc.ClientSideError(msg) try: if pecan.request.dbapi.get_port(port_dict['address']): # TODO(whaom) - create a custom SQLAlchemy type like # db.sqlalchemy.types.IPAddress in Nova for mac # with 'macaddr' postgres type for postgres dialect raise wsme.exc.ClientSideError(_("MAC address already " "exists.")) except exception.PortNotFound: pass
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"))