The ironic.db.api
Module¶
Base classes for storage engines
-
class
ironic.db.api.
Connection
[source]¶ Bases:
object
Base class for storage system connections.
-
add_node_tag
(node_id, tag)[source]¶ Add tag to the node.
If the node_id and tag pair already exists, this should still succeed.
Parameters: - node_id – The id of a node.
- tag – A tag string.
Returns: the NodeTag object.
Raises: NodeNotFound if the node is not found.
-
create_node
(values)[source]¶ Create a new node.
Parameters: values – A dict containing several items used to identify and track the node, and several dicts which are passed into the Drivers when managing this node. For example:
{ 'uuid': uuidutils.generate_uuid(), 'instance_uuid': None, 'power_state': states.POWER_OFF, 'provision_state': states.AVAILABLE, 'driver': 'pxe_ipmitool', 'driver_info': { ... }, 'properties': { ... }, 'extra': { ... }, }
Raises: InvalidParameterValue if create a node with tags. Returns: A node.
-
create_portgroup
(values)[source]¶ Create a new portgroup.
Parameters: values – Dict of values with the following keys: ‘id’ ‘uuid’ ‘name’ ‘node_id’ ‘address’ ‘extra’ ‘created_at’ ‘updated_at’ Returns: A portgroup Raises: PortgroupDuplicateName Raises: PortgroupMACAlreadyExists Raises: PortgroupAlreadyExists
-
create_volume_connector
(connector_info)[source]¶ Create a new volume connector.
Parameters: connector_info – Dictionary containing information about the connector. Example:
{ 'uuid': '000000-..', 'type': 'wwnn', 'connector_id': '00:01:02:03:04:05:06', 'node_id': 2 }
Returns: A volume connector. Raises: VolumeConnectorTypeAndIdAlreadyExists If a connector already exists with a matching type and connector_id. Raises: VolumeConnectorAlreadyExists If a volume connector with the same UUID already exists.
-
create_volume_target
(target_info)[source]¶ Create a new volume target.
Parameters: target_info – Dictionary containing the information about the volume target. Example:
{ 'uuid': '000000-..', 'node_id': 2, 'boot_index': 0, 'volume_id': '12345678-...' 'volume_type': 'some type', }
Returns: A volume target. Raises: VolumeTargetBootIndexAlreadyExists if a volume target already exists with the same boot index and node ID. Raises: VolumeTargetAlreadyExists if a volume target with the same UUID exists.
-
delete_node_tag
(node_id, tag)[source]¶ Delete specified tag from the node.
Parameters: - node_id – The id of a node.
- tag – A tag string.
Raises: NodeNotFound if the node is not found.
Raises: NodeTagNotFound if the tag is not found.
-
destroy_chassis
(chassis_id)[source]¶ Destroy a chassis.
Parameters: chassis_id – The id or the uuid of a chassis.
-
destroy_node
(node_id)[source]¶ Destroy a node and its associated resources.
Destroy a node, including any associated ports, port groups, tags, volume connectors, and volume targets.
Parameters: node_id – The ID or UUID of a node.
-
destroy_portgroup
(portgroup_id)[source]¶ Destroy a portgroup.
Parameters: portgroup_id – The UUID or MAC of a portgroup. Raises: PortgroupNotEmpty Raises: PortgroupNotFound
-
destroy_volume_connector
(ident)[source]¶ Destroy a volume connector.
Parameters: ident – The UUID or integer ID of a volume connector. Raises: VolumeConnectorNotFound If a volume connector with the specified ident does not exist.
-
destroy_volume_target
(ident)[source]¶ Destroy a volume target.
Parameters: ident – The UUID or integer ID of a volume target. Raises: VolumeTargetNotFound if a volume target with the specified ident does not exist.
-
get_active_driver_dict
(interval)[source]¶ Retrieve drivers for the registered and active conductors.
Parameters: interval – Seconds since last check-in of a conductor. Returns: A dict which maps driver names to the set of hosts which support them. For example: {driverA: set([host1, host2]), driverB: set([host2, host3])}
-
get_active_hardware_type_dict
()[source]¶ Retrieve hardware types for the registered and active conductors.
Returns: A dict which maps hardware type names to the set of hosts which support them. For example: {hardware-type-a: set([host1, host2]), hardware-type-b: set([host2, host3])}
-
get_chassis_by_id
(chassis_id)[source]¶ Return a chassis representation.
Parameters: chassis_id – The id of a chassis. Returns: A chassis.
-
get_chassis_by_uuid
(chassis_uuid)[source]¶ Return a chassis representation.
Parameters: chassis_uuid – The uuid of a chassis. Returns: A chassis.
-
get_chassis_list
(limit=None, marker=None, sort_key=None, sort_dir=None)[source]¶ Return a list of chassis.
Parameters: - limit – Maximum number of chassis to return.
- marker – the last item of the previous page; we return the next result set.
- sort_key – Attribute by which results should be sorted.
- sort_dir – direction in which results should be sorted. (asc, desc)
-
get_conductor
(hostname)[source]¶ Retrieve a conductor’s service record from the database.
Parameters: hostname – The hostname of the conductor service. Returns: A conductor. Raises: ConductorNotFound
-
get_node_by_id
(node_id)[source]¶ Return a node.
Parameters: node_id – The id of a node. Returns: A node.
-
get_node_by_instance
(instance)[source]¶ Return a node.
Parameters: instance – The instance uuid to search for. Returns: A node. Raises: InstanceNotFound if the instance is not found. Raises: InvalidUUID if the instance uuid is invalid.
-
get_node_by_name
(node_name)[source]¶ Return a node.
Parameters: node_name – The logical name of a node. Returns: A node.
-
get_node_by_port_addresses
(addresses)[source]¶ Find a node by any matching port address.
Parameters: addresses – list of port addresses (e.g. MACs). Returns: Node object. Raises: NodeNotFound if none or several nodes are found.
-
get_node_by_uuid
(node_uuid)[source]¶ Return a node.
Parameters: node_uuid – The uuid of a node. Returns: A node.
-
get_node_list
(filters=None, limit=None, marker=None, sort_key=None, sort_dir=None)[source]¶ Return a list of nodes.
Parameters: - filters –
Filters to apply. Defaults to None.
associated: True | False reserved: True | False maintenance: True | False chassis_uuid: uuid of chassis driver: driver’s name provision_state: provision state of node provisioned_before: nodes with provision_updated_at field before this interval in seconds - limit – Maximum number of nodes to return.
- marker – the last item of the previous page; we return the next result set.
- sort_key – Attribute by which results should be sorted.
- sort_dir – direction in which results should be sorted. (asc, desc)
- filters –
Get node tags based on its id.
Parameters: node_id – The id of a node. Returns: A list of NodeTag objects. Raises: NodeNotFound if the node is not found.
-
get_nodeinfo_list
(columns=None, filters=None, limit=None, marker=None, sort_key=None, sort_dir=None)[source]¶ Get specific columns for matching nodes.
Return a list of the specified columns for all nodes that match the specified filters.
Parameters: - columns – List of column names to return. Defaults to ‘id’ column when columns == None.
- filters –
Filters to apply. Defaults to None.
associated: True | False reserved: True | False reserved_by_any_of: [conductor1, conductor2] maintenance: True | False chassis_uuid: uuid of chassis driver: driver’s name provision_state: provision state of node provisioned_before: nodes with provision_updated_at field before this interval in seconds - limit – Maximum number of nodes to return.
- marker – the last item of the previous page; we return the next result set.
- sort_key – Attribute by which results should be sorted.
- sort_dir – direction in which results should be sorted. (asc, desc)
Returns: A list of tuples of the specified columns.
-
get_offline_conductors
()[source]¶ Get a list conductor hostnames that are offline (dead).
Returns: A list of conductor hostnames.
-
get_port_by_address
(address)[source]¶ Return a network port representation.
Parameters: address – The MAC address of a port. Returns: A port.
-
get_port_by_id
(port_id)[source]¶ Return a network port representation.
Parameters: port_id – The id of a port. Returns: A port.
-
get_port_by_uuid
(port_uuid)[source]¶ Return a network port representation.
Parameters: port_uuid – The uuid of a port. Returns: A port.
-
get_port_list
(limit=None, marker=None, sort_key=None, sort_dir=None)[source]¶ Return a list of ports.
Parameters: - limit – Maximum number of ports to return.
- marker – the last item of the previous page; we return the next result set.
- sort_key – Attribute by which results should be sorted.
- sort_dir – direction in which results should be sorted. (asc, desc)
-
get_portgroup_by_address
(address)[source]¶ Return a network portgroup representation.
Parameters: address – The MAC address of a portgroup. Returns: A portgroup. Raises: PortgroupNotFound
-
get_portgroup_by_id
(portgroup_id)[source]¶ Return a network portgroup representation.
Parameters: portgroup_id – The id of a portgroup. Returns: A portgroup. Raises: PortgroupNotFound
-
get_portgroup_by_name
(name)[source]¶ Return a network portgroup representation.
Parameters: name – The logical name of a portgroup. Returns: A portgroup. Raises: PortgroupNotFound
-
get_portgroup_by_uuid
(portgroup_uuid)[source]¶ Return a network portgroup representation.
Parameters: portgroup_uuid – The uuid of a portgroup. Returns: A portgroup. Raises: PortgroupNotFound
-
get_portgroup_list
(limit=None, marker=None, sort_key=None, sort_dir=None)[source]¶ Return a list of portgroups.
Parameters: - limit – Maximum number of portgroups to return.
- marker – The last item of the previous page; we return the next result set.
- sort_key – Attribute by which results should be sorted.
- sort_dir – Direction in which results should be sorted. (asc, desc)
Returns: A list of portgroups.
-
get_portgroups_by_node_id
(node_id, limit=None, marker=None, sort_key=None, sort_dir=None)[source]¶ List all the portgroups for a given node.
Parameters: - node_id – The integer node ID.
- limit – Maximum number of portgroups to return.
- marker – The last item of the previous page; we return the next result set.
- sort_key – Attribute by which results should be sorted
- sort_dir – Direction in which results should be sorted (asc, desc)
Returns: A list of portgroups.
-
get_ports_by_node_id
(node_id, limit=None, marker=None, sort_key=None, sort_dir=None)[source]¶ List all the ports for a given node.
Parameters: - node_id – The integer node ID.
- limit – Maximum number of ports to return.
- marker – the last item of the previous page; we return the next result set.
- sort_key – Attribute by which results should be sorted
- sort_dir – direction in which results should be sorted (asc, desc)
Returns: A list of ports.
-
get_ports_by_portgroup_id
(portgroup_id, limit=None, marker=None, sort_key=None, sort_dir=None)[source]¶ List all the ports for a given portgroup.
Parameters: - portgroup_id – The integer portgroup ID.
- limit – Maximum number of ports to return.
- marker – The last item of the previous page; we return the next result set.
- sort_key – Attribute by which results should be sorted
- sort_dir – Direction in which results should be sorted (asc, desc)
Returns: A list of ports.
-
get_volume_connector_by_id
(db_id)[source]¶ Return a volume connector representation.
Parameters: db_id – The integer database ID of a volume connector. Returns: A volume connector with the specified ID. Raises: VolumeConnectorNotFound If a volume connector with the specified ID is not found.
-
get_volume_connector_by_uuid
(connector_uuid)[source]¶ Return a volume connector representation.
Parameters: connector_uuid – The UUID of a connector. Returns: A volume connector with the specified UUID. Raises: VolumeConnectorNotFound If a volume connector with the specified UUID is not found.
-
get_volume_connector_list
(limit=None, marker=None, sort_key=None, sort_dir=None)[source]¶ Return a list of volume connectors.
Parameters: - limit – Maximum number of volume connectors to return.
- marker – The last item of the previous page; we return the next result set.
- sort_key – Attribute by which results should be sorted.
- sort_dir – Direction in which results should be sorted. (asc, desc)
Returns: A list of volume connectors.
Raises: InvalidParameterValue If sort_key does not exist.
-
get_volume_connectors_by_node_id
(node_id, limit=None, marker=None, sort_key=None, sort_dir=None)[source]¶ List all the volume connectors for a given node.
Parameters: - node_id – The integer node ID.
- limit – Maximum number of volume connectors to return.
- marker – The last item of the previous page; we return the next result set.
- sort_key – Attribute by which results should be sorted
- sort_dir – Direction in which results should be sorted (asc, desc)
Returns: A list of volume connectors.
Raises: InvalidParameterValue If sort_key does not exist.
-
get_volume_target_by_id
(db_id)[source]¶ Return a volume target representation.
Parameters: db_id – The database primary key (integer) ID of a volume target. Returns: A volume target. Raises: VolumeTargetNotFound if no volume target with this ID exists.
-
get_volume_target_by_uuid
(uuid)[source]¶ Return a volume target representation.
Parameters: uuid – The UUID of a volume target. Returns: A volume target. Raises: VolumeTargetNotFound if no volume target with this UUID exists.
-
get_volume_target_list
(limit=None, marker=None, sort_key=None, sort_dir=None)[source]¶ Return a list of volume targets.
Parameters: - limit – Maximum number of volume targets to return.
- marker – the last item of the previous page; we return the next result set.
- sort_key – Attribute by which results should be sorted.
- sort_dir – direction in which results should be sorted. (asc, desc)
Returns: A list of volume targets.
Raises: InvalidParameterValue if sort_key does not exist.
-
get_volume_targets_by_node_id
(node_id, limit=None, marker=None, sort_key=None, sort_dir=None)[source]¶ List all the volume targets for a given node.
Parameters: - node_id – The integer node ID.
- limit – Maximum number of volume targets to return.
- marker – the last item of the previous page; we return the next result set.
- sort_key – Attribute by which results should be sorted
- sort_dir – direction in which results should be sorted (asc, desc)
Returns: A list of volume targets.
Raises: InvalidParameterValue if sort_key does not exist.
-
get_volume_targets_by_volume_id
(volume_id, limit=None, marker=None, sort_key=None, sort_dir=None)[source]¶ List all the volume targets for a given volume id.
Parameters: - volume_id – The UUID of the volume.
- limit – Maximum number of volume targets to return.
- marker – the last item of the previous page; we return the next result set.
- sort_key – Attribute by which results should be sorted
- sort_dir – direction in which results should be sorted (asc, desc)
Returns: A list of volume targets.
Raises: InvalidParameterValue if sort_key does not exist.
-
list_conductor_hardware_interfaces
(conductor_id)[source]¶ List all registered hardware interfaces for a conductor.
Parameters: conductor_id – Database ID of conductor. Returns: List of ConductorHardwareInterfaces
objects.
-
list_hardware_type_interfaces
(hardware_types)[source]¶ List registered hardware interfaces for given hardware types.
This is restricted to only active conductors. :param hardware_types: list of hardware types to filter by. :returns: list of
ConductorHardwareInterfaces
objects.
-
node_tag_exists
(node_id, tag)[source]¶ Check if the specified tag exist on the node.
Parameters: - node_id – The id of a node.
- tag – A tag string.
Returns: True if the tag exists otherwise False.
-
register_conductor
(values, update_existing=False)[source]¶ Register an active conductor with the cluster.
Parameters: - values –
A dict of values which must contain the following:
{ 'hostname': the unique hostname which identifies this Conductor service. 'drivers': a list of supported drivers. }
- update_existing – When false, registration will raise an exception when a conflicting online record is found. When true, will overwrite the existing record. Default: False.
Returns: A conductor.
Raises: ConductorAlreadyRegistered
- values –
-
register_conductor_hardware_interfaces
(conductor_id, hardware_type, interface_type, interfaces, default_interface)[source]¶ Registers hardware interfaces for a conductor.
Parameters: - conductor_id – Database ID of conductor to register for.
- hardware_type – Name of hardware type for the interfaces.
- interface_type – Type of interfaces, e.g. ‘deploy’ or ‘boot’.
- interfaces – List of interface names to register.
- default_interface – String, the default interface for this hardware type and interface type.
Raises: ConductorHardwareInterfacesAlreadyRegistered if at least one of the interfaces in the combination of all parameters is already registered.
-
release_node
(tag, node_id)[source]¶ Release the reservation on a node.
Parameters: - tag – A string uniquely identifying the reservation holder.
- node_id – A node id or uuid.
Raises: NodeNotFound if the node is not found.
Raises: NodeLocked if the node is reserved by another host.
Raises: NodeNotLocked if the node was found to not have a reservation at all.
-
reserve_node
(tag, node_id)[source]¶ Reserve a node.
To prevent other ManagerServices from manipulating the given Node while a Task is performed, mark it reserved by this host.
Parameters: - tag – A string uniquely identifying the reservation holder.
- node_id – A node id or uuid.
Returns: A Node object.
Raises: NodeNotFound if the node is not found.
Raises: NodeLocked if the node is already reserved.
Replace all of the node tags with specified list of tags.
This ignores duplicate tags in the specified list.
Parameters: - node_id – The id of a node.
- tags – List of tags.
Returns: A list of NodeTag objects.
Raises: NodeNotFound if the node is not found.
-
touch_conductor
(hostname)[source]¶ Mark a conductor as active by updating its ‘updated_at’ property.
Parameters: hostname – The hostname of this conductor service. Raises: ConductorNotFound
-
touch_node_provisioning
(node_id)[source]¶ Mark the node’s provisioning as running.
Mark the node’s provisioning as running by updating its ‘provision_updated_at’ property.
Parameters: node_id – The id of a node. Raises: NodeNotFound
-
unregister_conductor
(hostname)[source]¶ Remove this conductor from the service registry immediately.
Parameters: hostname – The hostname of this conductor service. Raises: ConductorNotFound
-
unregister_conductor_hardware_interfaces
(conductor_id)[source]¶ Unregisters all hardware interfaces for a conductor.
Parameters: conductor_id – Database ID of conductor to unregister for.
Remove all tags of the node.
Parameters: node_id – The id of a node. Raises: NodeNotFound if the node is not found.
-
update_chassis
(chassis_id, values)[source]¶ Update properties of an chassis.
Parameters: - chassis_id – The id or the uuid of a chassis.
- values – Dict of values to update.
Returns: A chassis.
-
update_node
(node_id, values)[source]¶ Update properties of a node.
Parameters: - node_id – The id or uuid of a node.
- values –
Dict of values to update. May be a partial list, eg. when setting the properties for a driver. For example:
{ 'driver_info': { 'my-field-1': val1, 'my-field-2': val2, } }
Returns: A node.
Raises: NodeAssociated
Raises: NodeNotFound
-
update_port
(port_id, values)[source]¶ Update properties of an port.
Parameters: - port_id – The id or MAC of a port.
- values – Dict of values to update.
Returns: A port.
-
update_portgroup
(portgroup_id, values)[source]¶ Update properties of a portgroup.
Parameters: - portgroup_id – The UUID or MAC of a portgroup.
- values – Dict of values to update. May contain the following keys: ‘uuid’ ‘name’ ‘node_id’ ‘address’ ‘extra’ ‘created_at’ ‘updated_at’
Returns: A portgroup.
Raises: InvalidParameterValue
Raises: PortgroupNotFound
Raises: PortgroupDuplicateName
Raises: PortgroupMACAlreadyExists
-
update_volume_connector
(ident, connector_info)[source]¶ Update properties of a volume connector.
Parameters: - ident – The UUID or integer ID of a volume connector.
- connector_info – Dictionary containing the information about connector to update.
Returns: A volume connector.
Raises: VolumeConnectorTypeAndIdAlreadyExists If another connector already exists with a matching type and connector_id field.
Raises: VolumeConnectorNotFound If a volume connector with the specified ident does not exist.
Raises: InvalidParameterValue When a UUID is included in connector_info.
-
update_volume_target
(ident, target_info)[source]¶ Update information for a volume target.
Parameters: - ident – The UUID or integer ID of a volume target.
- target_info – Dictionary containing the information about volume target to update.
Returns: A volume target.
Raises: InvalidParameterValue if a UUID is included in target_info.
Raises: VolumeTargetBootIndexAlreadyExists if a volume target already exists with the same boot index and node ID.
Raises: VolumeTargetNotFound if no volume target with this ident exists.
-