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_chassis(values)[source]

Create a new chassis.

Parameters:values – Dict of values.
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_port(values)[source]

Create a new port.

Parameters:values – Dict of values.
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_port(port_id)[source]

Destroy an port.

Parameters:port_id – The id or MAC of a port.
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)
get_node_tags_by_node_id(node_id)[source]

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.

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

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.

set_node_tags(node_id, tags)[source]

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.
unset_node_tags(node_id)[source]

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.