示例#1
0
 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"))
示例#2
0
 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"))
示例#3
0
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)
示例#4
0
    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
示例#5
0
文件: api.py 项目: kimcharli/ironic
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)
示例#6
0
    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)
示例#7
0
文件: port.py 项目: stendulker/ironic
    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)
示例#8
0
文件: api.py 项目: luongduy/ironic
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)
示例#9
0
    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)
示例#10
0
文件: portgroup.py 项目: idjaw/ironic
    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)
示例#11
0
文件: port.py 项目: home-dog/ironic
    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
示例#12
0
 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"))