def add_filter_by_many_identities(query, model, values): """Adds an identity filter to a query for values list. Filters results by ID, if supplied values contain a valid integer. Otherwise attempts to filter results by UUID. :param query: Initial query to add filter to. :param model: Model for filter. :param values: Values for filtering results by. :return: tuple (Modified query, filter field name). """ if not values: raise exception.InvalidIdentity(identity=values) value = values[0] if utils.is_int_like(value): return query.filter(getattr(model, 'id').in_(values)), 'id' elif utils.is_uuid_like(value): return query.filter(getattr(model, 'uuid').in_(values)), 'uuid' else: raise exception.InvalidIdentity(identity=value)
def get(cls, context, chassis_id): """Find a chassis based on its id or uuid and return a Chassis object. :param chassis_id: the id *or* uuid of a chassis. :returns: a :class:`Chassis` object. """ if strutils.is_int_like(chassis_id): return cls.get_by_id(context, chassis_id) elif uuidutils.is_uuid_like(chassis_id): return cls.get_by_uuid(context, chassis_id) else: raise exception.InvalidIdentity(identity=chassis_id)
def get(cls, context, node_id): """Find a node based on its id or uuid and return a Node object. :param node_id: the id *or* uuid of a node. :returns: a :class:`Node` object. """ if strutils.is_int_like(node_id): return cls.get_by_id(context, node_id) elif uuidutils.is_uuid_like(node_id): return cls.get_by_uuid(context, node_id) else: raise exception.InvalidIdentity(identity=node_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 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 add_identity_filter(query, value): """Adds an identity filter to a query. Filters results by ID, if supplied value is a valid integer. Otherwise attempts to filter results by UUID. :param query: Initial query to add filter to. :param value: Value for filtering results by. :return: Modified query. """ if utils.is_int_like(value): return query.filter_by(id=value) elif utils.is_uuid_like(value): return query.filter_by(uuid=value) else: raise exception.InvalidIdentity(identity=value)
def get(cls, context, allocation_ident): """Find an allocation by its ID, UUID or name. :param allocation_ident: The ID, UUID or name of an allocation. :param context: Security context :returns: An :class:`Allocation` object. :raises: InvalidIdentity """ if strutils.is_int_like(allocation_ident): return cls.get_by_id(context, allocation_ident) elif uuidutils.is_uuid_like(allocation_ident): return cls.get_by_uuid(context, allocation_ident) elif utils.is_valid_logical_name(allocation_ident): return cls.get_by_name(context, allocation_ident) else: raise exception.InvalidIdentity(identity=allocation_ident)
def get(cls, context, ident): """Find a volume connector based on its ID or UUID. :param context: security context :param ident: the database primary key ID *or* the UUID of a volume connector :returns: a :class:`VolumeConnector` object :raises: InvalidIdentity if ident is neither an integer ID nor a UUID :raises: VolumeConnectorNotFound if no volume connector exists with the specified ident """ if strutils.is_int_like(ident): return cls.get_by_id(context, ident) elif uuidutils.is_uuid_like(ident): return cls.get_by_uuid(context, ident) else: raise exception.InvalidIdentity(identity=ident)
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 get(cls, context, port_id): """Find a port. Find a port based on its id or uuid or name or MAC address and return a Port object. :param context: Security context :param port_id: the id *or* uuid *or* name *or* MAC address of a port. :returns: a :class:`Port` object. :raises: InvalidIdentity """ 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 netutils.is_valid_mac(port_id): return cls.get_by_address(context, port_id) elif utils.is_valid_logical_name(port_id): return cls.get_by_name(context, port_id) else: raise exception.InvalidIdentity(identity=port_id)