The ironic.db.api Module

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.

add_node_trait(node_id, trait, version)[source]

Add trait to the node.

If the node_id and trait pair already exists, this should still succeed.

Parameters:
  • node_id – The id of a node.
  • trait – A trait string.
  • version – the version of the object.Trait.
Returns:

the NodeTrait object.

Raises:

InvalidParameterValue if adding the trait would exceed the per-node traits limit.

Raises:

NodeNotFound if the node is not found.

backfill_version_column(max_count)[source]

Backfill the Conductor version column with Pike version.

The version column was added to all the resource tables in the Pike release (via ‘ironic-dbsync upgrade’). After upgrading (from Ocata to Pike), the ‘ironic-dbsync online_data_migrations’ command would have populated (backfilled) the version column for all objects.

Unfortunately, in the Pike release, we forgot to set the value for the conductor’s version column. For the Queens release, we are setting the conductor version, however, we still need to backfill in case new conductors were added between the time the operator ran Pike’s ‘ironic-dbsync online_data_migrations’ and their upgrade to Queens. The version used will be the conductor object version from the Pike release.

Parameters:max_count – The maximum number of objects to migrate. Must be >= 0. If zero, all the objects will be migrated.
Returns:A 2-tuple, 1. the total number of objects that need to be migrated (at the beginning of this call) and 2. the number of migrated objects.
check_versions()[source]

Checks the whole database for incompatible objects.

This scans all the tables in search of objects that are not supported; i.e., those that are not specified in ironic.common.release_mappings.RELEASE_MAPPING.

Returns:A Boolean. True if all the objects have supported versions; False otherwise.
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 ‘values’ contains ‘tags’ or ‘traits’.
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.

delete_node_trait(node_id, trait)[source]

Delete specified trait from the node.

Parameters:
  • node_id – The id of a node.
  • trait – A trait string.
Raises:

NodeNotFound if the node is not found.

Raises:

NodeTraitNotFound if the trait 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, traits, 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_node_traits_by_node_id(node_id)[source]

Get node traits based on its id.

Parameters:node_id – The id of a node.
Returns:A list of NodeTrait 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.

migrate_to_hardware_types(context, max_count, reset_unsupported_interfaces=False)[source]

Migrate nodes from classic drivers to hardware types.

Go through all nodes with a classic driver and try to migrate them to a corresponding hardware type and a correct set of hardware interfaces.

Parameters:
  • context – the admin context
  • max_count – The maximum number of objects to migrate. Must be >= 0. If zero, all the objects will be migrated.
  • reset_unsupported_interfaces – whether to reset unsupported optional interfaces to their no-XXX versions.
Returns:

A 2-tuple, 1. the total number of objects that need to be migrated (at the beginning of this call) and 2. the number of migrated 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.

Raises:

NodeNotFound if the node is not found.

node_trait_exists(node_id, trait)[source]

Check if the specified trait exists on the node.

Parameters:
  • node_id – The id of a node.
  • trait – A trait string.
Returns:

True if the trait exists otherwise False.

Raises:

NodeNotFound if the node is not found.

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.
     'version': the version of the object.Conductor
    }
    
  • 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.

set_node_traits(node_id, traits, version)[source]

Replace all of the node traits with specified list of traits.

This ignores duplicate traits in the specified list.

Parameters:
  • node_id – The id of a node.
  • traits – List of traits.
  • version – the version of the object.Trait.
Returns:

A list of NodeTrait objects.

Raises:

InvalidParameterValue if setting the traits would exceed the per-node traits limit.

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

Remove all traits 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_to_latest_versions(context, max_count)[source]

Updates objects to their latest known versions.

This scans all the tables and for objects that are not in their latest version, updates them to that version.

Parameters:
  • context – the admin context
  • max_count – The maximum number of objects to migrate. Must be >= 0. If zero, all the objects will be migrated.
Returns:

A 2-tuple, 1. the total number of objects that need to be migrated (at the beginning of this call) and 2. the number of migrated objects.

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.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.