ironic.db.api module

Base classes for storage engines

class ironic.db.api.Connection[source]

Bases: object

Base class for storage system connections.

abstract 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.

abstract 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.

abstract bulk_delete_node_history_records(node_id, limit)[source]

Utility method to bulk delete node history entries.

Parameters:

entries – A list of node history entry id’s to be queried for deletion.

abstract check_node_list(idents)[source]

Check a list of node identities and map it to UUIDs.

This call takes a list of node names and/or UUIDs and tries to convert them to UUIDs. It fails early if any identities cannot possible be used as names or UUIDs.

Parameters:

idents – List of identities.

Returns:

A mapping from requests identities to node UUIDs.

Raises:

NodeNotFound if some identities were not found or cannot be valid names or UUIDs.

abstract check_versions(ignore_models=())[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.

Parameters:

ignore_models – List of model names to skip.

Returns:

A Boolean. True if all the objects have supported versions; False otherwise.

abstract count_nodes_in_provision_state(state)[source]

Count the number of nodes in given provision state.

Parameters:

state – A provision_state value to match for the count operation. This can be a single provision state value or a list of values.

abstract create_allocation(values)[source]

Create a new allocation.

Parameters:

values – Dict of values to create an allocation with

Returns:

An allocation

Raises:

AllocationDuplicateName

Raises:

AllocationAlreadyExists

abstract create_bios_setting_list(node_id, settings, version)[source]

Create a list of BIOSSetting records for a given node.

Parameters:
  • node_id – The node id.

  • settings

    A list of BIOS Settings to be created.

    [
      {
       'name': String,
       'value': String,
       additional settings from BIOS registry
      },
      {
       'name': String,
       'value': String,
       additional settings from BIOS registry
      },
      ...
    ]
    

  • version – the version of the object.BIOSSetting.

Returns:

A list of BIOSSetting object.

Raises:

NodeNotFound if the node is not found.

Raises:

BIOSSettingAlreadyExists if any of the setting records already exists.

abstract create_chassis(values)[source]

Create a new chassis.

Parameters:

values – Dict of values.

abstract create_deploy_template(values)[source]

Create a deployment template.

Parameters:

values

A dict describing the deployment template. For example:

{
 'uuid': uuidutils.generate_uuid(),
 'name': 'CUSTOM_DT1',
}

Raises:

DeployTemplateDuplicateName if a deploy template with the same name exists.

Raises:

DeployTemplateAlreadyExists if a deploy template with the same UUID exists.

Returns:

A deploy template.

abstract classmethod create_firmware_component(values)[source]

Create a FirmwareComponent record for a given node.

Parameters:

values

a dictionary with the necessary information to create a FirmwareComponent.

{
  'component': String,
  'initial_version': String,
  'current_version': String,
  'last_version_flashed': String
}

Returns:

A FirmwareComponent object.

Raises:

FirmwareComponentAlreadyExists if any of the component records already exists.

abstract 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': 'ipmi',
 'driver_info': { ... },
 'properties': { ... },
 'extra': { ... },
}

Raises:

InvalidParameterValue if ‘values’ contains ‘tags’ or ‘traits’.

Returns:

A node.

abstract create_node_history(values)[source]

Create a new history record.

Parameters:

values – Dict of values.

abstract create_node_inventory(values)[source]

Create a new inventory record.

Parameters:

values – Dict of values.

abstract create_port(values)[source]

Create a new port.

Parameters:

values – Dict of values.

abstract 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

abstract create_runbook(values)[source]

Create a runbook.

Parameters:

values

A dict describing the runbook. For example:

{
 'uuid': uuidutils.generate_uuid(),
 'name': 'CUSTOM_DT1',
}

Raises:

RunbookDuplicateName if a runbook with the same name exists.

Raises:

RunbookAlreadyExists if a runbook with the same UUID exists.

Returns:

A runbook.

abstract 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.

abstract 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.

abstract delete_bios_setting_list(node_id, names)[source]

Delete a list of BIOS settings.

Parameters:
  • node_id – The node id.

  • names – List of BIOS setting names to be deleted.

Raises:

NodeNotFound if the node is not found.

Raises:

BIOSSettingNotFound if any of BIOS setting name is not found.

abstract 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.

abstract 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.

abstract destroy_allocation(allocation_id)[source]

Destroy an allocation.

Parameters:

allocation_id – Allocation ID

Raises:

AllocationNotFound

abstract destroy_chassis(chassis_id)[source]

Destroy a chassis.

Parameters:

chassis_id – The id or the uuid of a chassis.

abstract destroy_deploy_template(template_id)[source]

Destroy a deployment template.

Parameters:

template_id – ID of the deployment template to destroy.

Raises:

DeployTemplateNotFound if the deploy template does not exist.

abstract 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.

abstract destroy_node_history_by_uuid(history_uuid)[source]

Destroy a history record.

Parameters:

history_uuid – The uuid of a history record

abstract destroy_node_inventory_by_node_id(inventory_node_id)[source]

Destroy a inventory record.

Parameters:

inventory_uuid – The uuid of a inventory record

abstract destroy_port(port_id)[source]

Destroy an port.

Parameters:

port_id – The id or MAC of a port.

abstract destroy_portgroup(portgroup_id)[source]

Destroy a portgroup.

Parameters:

portgroup_id – The UUID or MAC of a portgroup.

Raises:

PortgroupNotEmpty

Raises:

PortgroupNotFound

abstract destroy_runbook(runbook_id)[source]

Destroy a runbook.

Parameters:

runbook_id – ID of the runbook to destroy.

Raises:

RunbookNotFound if the runbook does not exist.

abstract 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.

abstract 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.

abstract get_active_hardware_type_dict(use_groups=False)[source]

Retrieve hardware types for the registered and active conductors.

Parameters:

use_groups – Whether to factor conductor_group into the keys.

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])}

abstract get_allocation_by_id(allocation_id)[source]

Return an allocation representation.

Parameters:

allocation_id – The id of an allocation.

Returns:

An allocation.

Raises:

AllocationNotFound

abstract get_allocation_by_name(name)[source]

Return an allocation representation.

Parameters:

name – The logical name of an allocation.

Returns:

An allocation.

Raises:

AllocationNotFound

abstract get_allocation_by_uuid(allocation_uuid)[source]

Return an allocation representation.

Parameters:

allocation_uuid – The uuid of an allocation.

Returns:

An allocation.

Raises:

AllocationNotFound

abstract get_allocation_list(filters=None, limit=None, marker=None, sort_key=None, sort_dir=None)[source]

Return a list of allocations.

Parameters:
  • filters

    Filters to apply. Defaults to None.

    node_uuid:

    uuid of node

    state:

    allocation state

    resource_class:

    requested resource class

  • limit – Maximum number of allocations 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 allocations.

abstract get_bios_setting(node_id, name)[source]

Retrieve BIOS setting value.

Parameters:
  • node_id – The node id.

  • name – String containing name of BIOS setting to be retrieved.

Returns:

The BIOSSetting object.

Raises:

NodeNotFound if the node is not found.

Raises:

BIOSSettingNotFound if the BIOS setting is not found.

abstract get_bios_setting_list(node_id)[source]

Retrieve BIOS settings of a given node.

Parameters:

node_id – The node id.

Returns:

A list of BIOSSetting objects.

Raises:

NodeNotFound if the node is not found.

abstract get_chassis_by_id(chassis_id)[source]

Return a chassis representation.

Parameters:

chassis_id – The id of a chassis.

Returns:

A chassis.

abstract get_chassis_by_uuid(chassis_uuid)[source]

Return a chassis representation.

Parameters:

chassis_uuid – The uuid of a chassis.

Returns:

A chassis.

abstract 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)

abstract classmethod get_child_node_ids_by_parent_uuid(node_uuid, exclude_dedicated_power=False)[source]

Retrieve a list of child node IDs for a given parent UUID.

This is an “internal” method, intended for use with power management logic to facilitate power actions upon nodes, where we obtain a list of nodes which requires additional actions, and return only the required node IDs in order to launch new tasks for power management activities.

Parameters:
  • node_uuid – The uuid of the parent node, in order to directly match the “parent_node” field.

  • exclude_dedicated_power – Boolean, False, if the list should include child nodes with their own power supplies.

Returns:

A list of tuples.

abstract get_conductor(hostname, online=True)[source]

Retrieve a conductor’s service record from the database.

Parameters:
  • hostname – The hostname of the conductor service.

  • online – Specify the filter value on the online field when querying conductors. The online field is ignored if this value is set to None.

Returns:

A conductor.

Raises:

ConductorNotFound if the conductor with given hostname does not exist or doesn’t meet the specified online expectation.

abstract get_conductor_list(limit=None, marker=None, sort_key=None, sort_dir=None)[source]

Return a list of conductors.

Parameters:
  • limit – Maximum number of conductors 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)

abstract get_deploy_template_by_id(template_id)[source]

Retrieve a deployment template by ID.

Parameters:

template_id – ID of the deployment template to retrieve.

Raises:

DeployTemplateNotFound if the deploy template does not exist.

Returns:

A deploy template.

abstract get_deploy_template_by_name(template_name)[source]

Retrieve a deployment template by name.

Parameters:

template_name – name of the deployment template to retrieve.

Raises:

DeployTemplateNotFound if the deploy template does not exist.

Returns:

A deploy template.

abstract get_deploy_template_by_uuid(template_uuid)[source]

Retrieve a deployment template by UUID.

Parameters:

template_uuid – UUID of the deployment template to retrieve.

Raises:

DeployTemplateNotFound if the deploy template does not exist.

Returns:

A deploy template.

abstract get_deploy_template_list(limit=None, marker=None, sort_key=None, sort_dir=None)[source]

Retrieve a list of deployment templates.

Parameters:
  • limit – Maximum number of deploy templates 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 deploy templates.

abstract get_deploy_template_list_by_names(names)[source]

Return a list of deployment templates with one of a list of names.

Parameters:

names – List of names to filter by.

Returns:

A list of deploy templates.

abstract get_firmware_component(node_id, name)[source]

Retrieve Firmware Component.

Parameters:
  • node_id – The node id.

  • name – name of Firmware component.

Returns:

The FirmwareComponent object.

Raises:

NodeNotFound if the node is not found.

Raises:

FirmwareComponentNotFound if the Firmware component is not found.

abstract classmethod get_firmware_component_list(node_id)[source]

Retrieve a list Firmware Components of a given node.

Parameters:

node_id – The node id.

Returns:

A list of FirmwareComponent objects.

Raises:

NodeNotFound if the node is not found.

abstract get_node_by_id(node_id)[source]

Return a node.

Parameters:

node_id – The id of a node.

Returns:

A node.

abstract 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.

abstract get_node_by_name(node_name)[source]

Return a node.

Parameters:

node_name – The logical name of a node.

Returns:

A node.

abstract 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.

abstract get_node_by_uuid(node_uuid)[source]

Return a node.

Parameters:

node_uuid – The uuid of a node.

Returns:

A node.

abstract get_node_history_by_id(history_id)[source]

Return a node history representation.

Parameters:

history_id – The id of a history record.

Returns:

A history.

abstract get_node_history_by_node_id(node_id, limit=None, marker=None, sort_key=None, sort_dir=None)[source]

List all the history records for a given node.

Parameters:
  • node_id – The integer node ID.

  • limit – Maximum number of history records 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 histories.

abstract get_node_history_by_uuid(history_uuid)[source]

Return a node history representation.

Parameters:

history_uuid – The uuid of a history record

Returns:

A history.

abstract get_node_history_list(limit=None, marker=None, sort_key=None, sort_dir=None)[source]

Return a list of node history records

Parameters:
  • limit – Maximum number of history records 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)

abstract get_node_inventory_by_node_id(node_id)[source]

Get the node inventory for a given node.

Parameters:

node_id – The integer node ID.

Returns:

An inventory of a node.

abstract get_node_list(filters=None, limit=None, marker=None, sort_key=None, sort_dir=None, fields=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

    shard:

    nodes with the given shard

  • 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)

  • fields – Comma separated field list to return, to allow for only specific fields to be returned to have maximum API performance calls where not all columns are needed from the database.

abstract 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.

abstract 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.

abstract 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

    chassis_uuid:

    uuid of chassis

    conductor_group:

    conductor group name

    console_enabled:

    True | False

    description_contains:

    substring in description

    driver:

    driver’s name

    fault:

    current fault type

    id:

    numeric ID

    inspection_started_before:

    nodes with inspection_started_at field before this interval in seconds

    instance_uuid:

    uuid of instance

    lessee:

    node’s lessee (e.g. project ID)

    maintenance:

    True | False

    owner:

    node’s owner (e.g. project ID)

    project:

    either owner or lessee

    reserved:

    True | False

    reserved_by_any_of:

    [conductor1, conductor2]

    resource_class:

    resource class name

    retired:

    True | False

    shard_in:

    shard (multiple possibilities)

    provision_state:

    provision state of node

    provision_state_in:

    provision state of node (multiple possibilities)

    provisioned_before:

    nodes with provision_updated_at field before this interval in seconds

    uuid:

    uuid of node

    uuid_in:

    uuid of node (multiple possibilities)

    with_power_state:

    True | False

  • 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.

abstract get_offline_conductors(field='hostname')[source]

Get a list conductors that are offline (dead).

Parameters:

field – A field to return, hostname by default.

Returns:

A list of requested fields of offline conductors.

abstract get_online_conductors()[source]

Get a list conductor hostnames that are online and active.

Returns:

A list of conductor hostnames.

abstract get_port_by_address(address)[source]

Return a network port representation.

Parameters:

address – The MAC address of a port.

Returns:

A port.

abstract get_port_by_id(port_id)[source]

Return a network port representation.

Parameters:

port_id – The id of a port.

Returns:

A port.

abstract get_port_by_name(port_name)[source]

Return a network port representation.

Parameters:

port_name – The name of a port.

Returns:

A port.

abstract get_port_by_uuid(port_uuid)[source]

Return a network port representation.

Parameters:

port_uuid – The uuid of a port.

Returns:

A port.

abstract 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)

abstract get_portgroup_by_address(address, project=None)[source]

Return a network portgroup representation.

Parameters:
  • address – The MAC address of a portgroup.

  • project – A node owner or lessee to filter by.

Returns:

A portgroup.

Raises:

PortgroupNotFound

abstract 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

abstract get_portgroup_by_name(name)[source]

Return a network portgroup representation.

Parameters:

name – The logical name of a portgroup.

Returns:

A portgroup.

Raises:

PortgroupNotFound

abstract 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

abstract get_portgroup_list(limit=None, marker=None, sort_key=None, sort_dir=None, project=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)

  • project – A node owner or lessee to filter by.

Returns:

A list of portgroups.

abstract get_portgroups_by_node_id(node_id, limit=None, marker=None, sort_key=None, sort_dir=None, project=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)

  • project – A node owner or lessee to filter by.

Returns:

A list of portgroups.

abstract 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.

abstract 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.

abstract get_ports_by_shards(shards, limit=None, marker=None, sort_key=None, sort_dir=None)[source]

Return a list of ports contained in the provided shards.

Parameters:

shard_ids – A list of shards to filter ports by.

abstract get_runbook_by_id(runbook_id)[source]

Retrieve a runbook by ID.

Parameters:

runbook_id – ID of the runbook to retrieve.

Raises:

RunbookNotFound if the runbook does not exist.

Returns:

A runbook.

abstract get_runbook_by_name(runbook_name)[source]

Retrieve a runbook by name.

Parameters:

runbook_name – name of the runbook to retrieve.

Raises:

RunbookNotFound if the runbook does not exist.

Returns:

A runbook.

abstract get_runbook_by_uuid(runbook_uuid)[source]

Retrieve a runbook by UUID.

Parameters:

runbook_uuid – UUID of the runbook to retrieve.

Raises:

RunbookNotFound if the runbook does not exist.

Returns:

A runbook.

abstract get_runbook_list(limit=None, marker=None, filters=None, sort_key=None, sort_dir=None)[source]

Retrieve a list of runbooks.

Parameters:
  • limit – Maximum number of runbooks 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 runbooks.

abstract get_runbook_list_by_names(names)[source]

Return a list of runbooks with one of a list of names.

Parameters:

names – List of names to filter by.

Returns:

A list of runbooks.

abstract get_shard_list()[source]

Retrieve a list of shards.

Returns:

list of dicts containing shard names and count

abstract 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.

abstract 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.

abstract get_volume_connector_list(limit=None, marker=None, sort_key=None, sort_dir=None, project=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)

  • project – The associated node project to search with.

Returns:

a list of VolumeConnector objects

Returns:

A list of volume connectors.

Raises:

InvalidParameterValue If sort_key does not exist.

abstract get_volume_connectors_by_node_id(node_id, limit=None, marker=None, sort_key=None, sort_dir=None, project=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)

  • project – The associated node project to search with.

Returns:

a list of VolumeConnector objects

Returns:

A list of volume connectors.

Raises:

InvalidParameterValue If sort_key does not exist.

abstract 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.

abstract 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.

abstract get_volume_target_list(limit=None, marker=None, sort_key=None, sort_dir=None, project=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)

  • project – The associated node project to search with.

Returns:

a list of VolumeConnector objects

Returns:

A list of volume targets.

Raises:

InvalidParameterValue if sort_key does not exist.

abstract get_volume_targets_by_node_id(node_id, limit=None, marker=None, sort_key=None, sort_dir=None, project=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)

  • project – The associated node project to search with.

Returns:

a list of VolumeConnector objects

Returns:

A list of volume targets.

Raises:

InvalidParameterValue if sort_key does not exist.

abstract get_volume_targets_by_volume_id(volume_id, limit=None, marker=None, sort_key=None, sort_dir=None, project=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.

abstract 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.

abstract 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.

abstract 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.

abstract 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.

abstract query_node_history_records_for_purge(conductor_id)[source]

Utility method to identify nodes to clean history records for.

Parameters:

conductor_id – Id value for the conductor to perform this query on behalf of.

Returns:

A dictionary with key values of node database ID values and a list of values associated with the node.

abstract 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

abstract 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.

abstract 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.

abstract 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.

abstract 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.

abstract 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.

abstract take_over_allocation(allocation_id, old_conductor_id, new_conductor_id)[source]

Do a take over for an allocation.

The allocation is only updated if the old conductor matches the provided value, thus guarding against races.

Parameters:
  • allocation_id – Allocation ID

  • old_conductor_id – The conductor ID we expect to be the current conductor_affinity of the allocation.

  • new_conductor_id – The conductor ID of the new conductor_affinity.

Returns:

True if the take over was successful, False otherwise.

Raises:

AllocationNotFound

abstract touch_conductor(hostname, online=True)[source]

Mark a conductor as active by updating its ‘updated_at’ property.

Calling periodically with online=False will result in the conductor appearing unregistered, but recently enough to prevent other conductors failing orphan nodes. This improves the behaviour of graceful and drain shutdown.

Parameters:
  • hostname – The hostname of this conductor service.

  • online – Whether the conductor is online.

Raises:

ConductorNotFound

abstract 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

abstract unregister_conductor(hostname)[source]

Remove this conductor from the service registry immediately.

Parameters:

hostname – The hostname of this conductor service.

Raises:

ConductorNotFound

abstract unregister_conductor_hardware_interfaces(conductor_id)[source]

Unregisters all hardware interfaces for a conductor.

Parameters:

conductor_id – Database ID of conductor to unregister for.

abstract 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.

abstract 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.

abstract update_allocation(allocation_id, values, update_node=True)[source]

Update properties of an allocation.

Parameters:
  • allocation_id – Allocation ID

  • values – Dict of values to update.

  • update_node – If True and node_id is updated, update the node with instance_uuid and traits from the allocation

Returns:

An allocation.

Raises:

AllocationNotFound

Raises:

AllocationDuplicateName

Raises:

InstanceAssociated

Raises:

NodeAssociated

abstract update_bios_setting_list(node_id, settings, version)[source]

Update a list of BIOSSetting records.

Parameters:
  • node_id – The node id.

  • settings

    A list of BIOS Settings to be updated.

    [
      {
       'name': String,
       'value': String,
       additional settings from BIOS registry
      },
      {
       'name': String,
       'value': String,
       additional settings from BIOS registry
      },
      ...
    ]
    

  • version – the version of the object.BIOSSetting.

Returns:

A list of BIOSSetting objects.

Raises:

NodeNotFound if the node is not found.

Raises:

BIOSSettingNotFound if any of the settings is not found.

abstract 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.

abstract update_deploy_template(template_id, values)[source]

Update a deployment template.

Parameters:
  • template_id – ID of the deployment template to update.

  • values

    A dict describing the deployment template. For example:

    {
     'uuid': uuidutils.generate_uuid(),
     'name': 'CUSTOM_DT1',
    }
    

Raises:

DeployTemplateDuplicateName if a deploy template with the same name exists.

Raises:

DeployTemplateNotFound if the deploy template does not exist.

Returns:

A deploy template.

abstract classmethod update_firmware_component(node_id, component, values)[source]

Update a FirmwareComponent record.

Parameters:
  • node_id – The node id.

  • component – The component of the node to update.

  • values

    A dictionary with the new information about the FirmwareComponent.

    {
      'current_version': String,
      'last_version_flashed': String
    }
    

Returns:

A FirmwareComponent object.

Raises:

FirmwareComponentNotFound the component is not found.

abstract 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

abstract 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.

abstract 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

abstract update_runbook(runbook_id, values)[source]

Update a runbook.

Parameters:
  • runbook_id – ID of the runbook to update.

  • values

    A dict describing the runbook. For example:

    {
     'uuid': uuidutils.generate_uuid(),
     'name': 'CUSTOM_DT1',
    }
    

Raises:

RunbookDuplicateName if a runbook with the same name exists.

Raises:

RunbookNotFound if the runbook does not exist.

Returns:

A runbook.

abstract 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.

abstract 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.

abstract 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.

ironic.db.api.get_instance()[source]

Return a DB API instance.