The Database Layer

The nova.db.api Module

Defines interface for DB access.

The underlying driver is loaded as a LazyPluggable.

Functions in this module are imported into the nova.db namespace. Call these functions from nova.db namespace, not the nova.db.api namespace.

All functions in this module return objects that implement a dictionary-like interface. Currently, many of these objects are sqlalchemy objects that implement a dictionary interface. However, a future goal is to have all of these objects be simple dictionaries.

Related Flags

db_backend:string to lookup in the list of LazyPluggable backends. sqlalchemy is the only supported backend right now.
connection:string specifying the sqlalchemy connection to use, like: sqlite:///var/lib/nova/nova.sqlite.
enable_new_services:
 when adding a new service to the database, is it in the pool of available hardware (Default: True)
exception NoMoreNetworks(message=None, **kwargs)

Bases: nova.exception.NovaException

No more available networks.

exception NoMoreTargets(message=None, **kwargs)

Bases: nova.exception.NovaException

No more available targets.

action_event_finish(context, values)

Finish an event on an instance action.

action_event_get_by_id(context, action_id, event_id)
action_event_start(context, values)

Start an event on an instance action.

action_events_get(context, action_id)

Get the events by action id.

action_finish(context, values)

Finish an action for an instance.

action_get_by_request_id(context, uuid, request_id)

Get the action by request_id and given instance.

action_start(context, values)

Start an action for an instance.

actions_get(context, uuid)

Get all instance actions for the provided instance.

agent_build_create(context, values)

Create a new agent build entry.

agent_build_destroy(context, agent_update_id)

Destroy agent build entry.

agent_build_get_all(context, hypervisor=None)

Get all agent builds.

agent_build_get_by_triple(context, hypervisor, os, architecture)

Get agent build by hypervisor/OS/architecture triple.

agent_build_update(context, agent_build_id, values)

Update agent build entry.

aggregate_create(context, values, metadata=None)

Create a new aggregate with metadata.

aggregate_delete(context, aggregate_id)

Delete an aggregate.

aggregate_get(context, aggregate_id)

Get a specific aggregate by id.

aggregate_get_all(context)

Get all aggregates.

aggregate_get_by_host(context, host, key=None)

Get a list of aggregates that host belongs to.

aggregate_host_add(context, aggregate_id, host)

Add host to the aggregate.

aggregate_host_delete(context, aggregate_id, host)

Delete the given host from the aggregate.

aggregate_host_get_all(context, aggregate_id)

Get hosts for the specified aggregate.

aggregate_host_get_by_metadata_key(context, key)

Get hosts with a specific metadata key metadata for all aggregates.

Returns a dictionary where each key is a hostname and each value is a set of the key values return value: {machine: set( az1, az2 )}

aggregate_metadata_add(context, aggregate_id, metadata, set_delete=False)

Add/update metadata. If set_delete=True, it adds only.

aggregate_metadata_delete(context, aggregate_id, key)

Delete the given metadata key.

aggregate_metadata_get(context, aggregate_id)

Get metadata for the specified aggregate.

aggregate_metadata_get_by_host(context, host, key=None)

Get metadata for all aggregates that host belongs to.

Returns a dictionary where each value is a set, this is to cover the case where there two aggregates have different values for the same key. Optional key filter

aggregate_metadata_get_by_metadata_key(context, aggregate_id, key)

Get metadata for an aggregate by metadata key.

aggregate_update(context, aggregate_id, values)

Update the attributes of an aggregates.

If values contains a metadata key, it updates the aggregate metadata too.

archive_deleted_rows(context, max_rows=None)

Move up to max_rows rows from production tables to corresponding shadow tables.

Returns:number of rows archived.
archive_deleted_rows_for_table(context, tablename, max_rows=None)

Move up to max_rows rows from tablename to corresponding shadow table.

Returns:number of rows archived.
block_device_mapping_create(context, values, legacy=True)

Create an entry of block device mapping.

block_device_mapping_destroy(context, bdm_id)

Destroy the block device mapping.

block_device_mapping_destroy_by_instance_and_device(context, instance_uuid, device_name)

Destroy the block device mapping.

block_device_mapping_destroy_by_instance_and_volume(context, instance_uuid, volume_id)

Destroy the block device mapping.

block_device_mapping_get_all_by_instance(context, instance_uuid)

Get all block device mapping belonging to an instance.

block_device_mapping_get_by_volume_id(context, volume_id, columns_to_join=None)

Get block device mapping for a given volume.

block_device_mapping_update(context, bdm_id, values, legacy=True)

Update an entry of block device mapping.

block_device_mapping_update_or_create(context, values, legacy=True)

Update an entry of block device mapping.

If not existed, create a new entry

bw_usage_get(context, uuid, start_period, mac)

Return bw usage for instance and mac in a given audit period.

bw_usage_get_by_uuids(context, uuids, start_period)

Return bw usages for instance(s) in a given audit period.

bw_usage_update(context, uuid, mac, start_period, bw_in, bw_out, last_ctr_in, last_ctr_out, last_refreshed=None, update_cells=True)

Update cached bandwidth usage for an instance’s network based on mac address. Creates new record if needed.

cell_create(context, values)

Create a new child Cell entry.

cell_delete(context, cell_name)

Delete a child Cell.

cell_get(context, cell_name)

Get a specific child Cell.

cell_get_all(context)

Get all child Cells.

cell_update(context, cell_name, values)

Update a child Cell entry.

certificate_create(context, values)

Create a certificate from the values dictionary.

certificate_get_all_by_project(context, project_id)

Get all certificates for a project.

certificate_get_all_by_user(context, user_id)

Get all certificates for a user.

certificate_get_all_by_user_and_project(context, user_id, project_id)

Get all certificates for a user and project.

compute_node_create(context, values)

Create a computeNode from the values dictionary.

compute_node_delete(context, compute_id)

Delete a computeNode from the database.

Raises ComputeHostNotFound if computeNode does not exist.

compute_node_get(context, compute_id)

Get a computeNode.

compute_node_get_all(context, no_date_fields=False)

Get all computeNodes.

Parameters:
  • context – The security context
  • no_date_fields – If set to True, excludes ‘created_at’, ‘updated_at’, ‘deteled_at’ and ‘deleted’ fields from the output, thus significantly reducing its size. Set to False by default
Returns:

List of dictionaries each containing compute node properties, including corresponding service and stats

compute_node_get_by_service_id(context, service_id)

Get a computeNode by its associated service’s id.

compute_node_search_by_hypervisor(context, hypervisor_match)

Get computeNodes given a hypervisor hostname match string.

compute_node_statistics(context)
compute_node_update(context, compute_id, values, prune_stats=False)

Set the given properties on a computeNode and update it.

Raises ComputeHostNotFound if computeNode does not exist.

console_create(context, values)

Create a console.

console_delete(context, console_id)

Delete a console.

console_get(context, console_id, instance_uuid=None)

Get a specific console (possibly on a given instance).

console_get_all_by_instance(context, instance_uuid, columns_to_join=None)

Get consoles for a given instance.

console_get_by_pool_instance(context, pool_id, instance_uuid)

Get console entry for a given instance and pool.

console_pool_create(context, values)

Create console pool.

console_pool_get_all_by_host_type(context, host, console_type)

Fetch all pools for given proxy host and type.

console_pool_get_by_host_type(context, compute_host, proxy_host, console_type)

Fetch a console pool for a given proxy host, compute host, and type.

constraint(**conditions)

Return a constraint object suitable for use with some updates.

dnsdomain_get(context, fqdomain)

Get the db record for the specified domain.

dnsdomain_list(context)

Get a list of all zones in our database, public and private.

dnsdomain_register_for_project(context, fqdomain, project)

Associated a DNS domain with a project id.

dnsdomain_register_for_zone(context, fqdomain, zone)

Associated a DNS domain with an availability zone.

dnsdomain_unregister(context, fqdomain)

Purge associations for the specified DNS zone.

ec2_instance_create(context, instance_uuid, id=None)

Create the ec2 id to instance uuid mapping on demand.

ec2_snapshot_create(context, snapshot_id, forced_id=None)
ec2_volume_create(context, volume_id, forced_id=None)
equal_any(*values)

Return an equality condition object suitable for use in a constraint.

Equal_any conditions require that a model object’s attribute equal any one of the given values.

fixed_ip_associate(context, address, instance_uuid, network_id=None, reserved=False)

Associate fixed ip to instance.

Raises if fixed ip is not available.

fixed_ip_associate_pool(context, network_id, instance_uuid=None, host=None)

Find free ip in network and associate it to instance or host.

Raises if one is not available.

fixed_ip_bulk_create(context, ips)

Create a lot of fixed ips from the values dictionary.

fixed_ip_create(context, values)

Create a fixed ip from the values dictionary.

fixed_ip_disassociate(context, address)

Disassociate a fixed ip from an instance by address.

fixed_ip_disassociate_all_by_timeout(context, host, time)

Disassociate old fixed ips from host.

fixed_ip_get(context, id, get_network=False)

Get fixed ip by id or raise if it does not exist.

If get_network is true, also return the assocated network.

fixed_ip_get_all(context)

Get all defined fixed ips.

fixed_ip_get_by_address(context, address)

Get a fixed ip by address or raise if it does not exist.

fixed_ip_get_by_address_detailed(context, address)

Get detailed fixed ip info by address or raise if it does not exist.

fixed_ip_get_by_floating_address(context, floating_address)

Get a fixed ip by a floating address.

fixed_ip_get_by_host(context, host)

Get fixed ips by compute host.

fixed_ip_get_by_instance(context, instance_uuid)

Get fixed ips by instance or raise if none exist.

fixed_ip_get_by_network_host(context, network_uuid, host)

Get fixed ip for a host in a network.

fixed_ip_update(context, address, values)

Create a fixed ip from the values dictionary.

fixed_ips_by_virtual_interface(context, vif_id)

Get fixed ips by virtual interface or raise if none exist.

flavor_access_add(context, flavor_id, project_id)

Add flavor access for project.

flavor_access_get_by_flavor_id(context, flavor_id)

Get flavor access by flavor id.

flavor_access_remove(context, flavor_id, project_id)

Remove flavor access for project.

flavor_create(context, values)

Create a new instance type.

flavor_destroy(context, name)

Delete an instance type.

flavor_extra_specs_delete(context, flavor_id, key)

Delete the given extra specs item.

flavor_extra_specs_get(context, flavor_id)

Get all extra specs for an instance type.

flavor_extra_specs_get_item(context, flavor_id, key)

Get extra specs by key and flavor_id.

flavor_extra_specs_update_or_create(context, flavor_id, extra_specs)

Create or update instance type extra specs.

This adds or modifies the key/value pairs specified in the extra specs dict argument

flavor_get(context, id)

Get instance type by id.

flavor_get_all(context, inactive=False, filters=None, sort_key='flavorid', sort_dir='asc', limit=None, marker=None)

Get all instance flavors.

flavor_get_by_flavor_id(context, id, read_deleted=None)

Get instance type by flavor id.

flavor_get_by_name(context, name)

Get instance type by name.

floating_ip_allocate_address(context, project_id, pool, auto_assigned=False)

Allocate free floating ip from specified pool and return the address.

Raises if one is not available.

floating_ip_bulk_create(context, ips)

Create a lot of floating ips from the values dictionary.

floating_ip_bulk_destroy(context, ips)

Destroy a lot of floating ips from the values dictionary.

floating_ip_create(context, values)

Create a floating ip from the values dictionary.

floating_ip_deallocate(context, address)

Deallocate a floating ip by address.

floating_ip_destroy(context, address)

Destroy the floating_ip or raise if it does not exist.

floating_ip_disassociate(context, address)

Disassociate a floating ip from a fixed ip by address.

Returns:the fixed ip record joined to network record or None if the ip was not associated to an ip.
floating_ip_fixed_ip_associate(context, floating_address, fixed_address, host)

Associate a floating ip to a fixed_ip by address.

Returns:the fixed ip record joined to network record or None if the ip was already associated to the fixed ip.
floating_ip_get(context, id)
floating_ip_get_all(context)

Get all floating ips.

floating_ip_get_all_by_host(context, host)

Get all floating ips by host.

floating_ip_get_all_by_project(context, project_id)

Get all floating ips by project.

floating_ip_get_by_address(context, address)

Get a floating ip by address or raise if it doesn’t exist.

floating_ip_get_by_fixed_address(context, fixed_address)

Get a floating ips by fixed address.

floating_ip_get_by_fixed_ip_id(context, fixed_ip_id)

Get a floating ips by fixed address.

floating_ip_get_pools(context)

Returns a list of floating ip pools.

floating_ip_set_auto_assigned(context, address)

Set auto_assigned flag to floating ip.

floating_ip_update(context, address, values)

Update a floating ip by address or raise if it doesn’t exist.

get_ec2_instance_id_by_uuid(context, instance_id)

Get ec2 id through uuid from instance_id_mappings table.

get_ec2_snapshot_id_by_uuid(context, snapshot_id)
get_ec2_volume_id_by_uuid(context, volume_id)
get_instance_uuid_by_ec2_id(context, ec2_id)

Get uuid through ec2 id from instance_id_mappings table.

get_snapshot_uuid_by_ec2_id(context, ec2_id)
get_volume_uuid_by_ec2_id(context, ec2_id)
instance_add_security_group(context, instance_id, security_group_id)

Associate the given security group with the given instance.

instance_create(context, values)

Create an instance from the values dictionary.

instance_destroy(context, instance_uuid, constraint=None, update_cells=True)

Destroy the instance or raise if it does not exist.

instance_fault_create(context, values, update_cells=True)

Create a new Instance Fault.

instance_fault_get_by_instance_uuids(context, instance_uuids)

Get all instance faults for the provided instance_uuids.

instance_floating_address_get_all(context, instance_uuid)

Get all floating ip addresses of an instance.

instance_get(context, instance_id, columns_to_join=None)

Get an instance or raise if it does not exist.

instance_get_active_by_window_joined(context, begin, end=None, project_id=None, host=None)

Get instances and joins active during a certain time window.

Specifying a project_id will filter for a certain project. Specifying a host will filter for instances on a given compute host.

instance_get_all(context, columns_to_join=None)

Get all instances.

instance_get_all_by_filters(context, filters, sort_key='created_at', sort_dir='desc', limit=None, marker=None, columns_to_join=None)

Get all instances that match all filters.

instance_get_all_by_host(context, host, columns_to_join=None)

Get all instances belonging to a host.

instance_get_all_by_host_and_node(context, host, node)

Get all instances belonging to a node.

instance_get_all_by_host_and_not_type(context, host, type_id=None)

Get all instances belonging to a host with a different type_id.

instance_get_all_hung_in_rebooting(context, reboot_window)

Get all instances stuck in a rebooting state.

instance_get_by_uuid(context, uuid, columns_to_join=None)

Get an instance or raise if it does not exist.

instance_get_floating_address(context, instance_id)

Get the first floating ip address of an instance.

instance_group_create(context, values, policies=None, metadata=None, members=None)

Create a new group with metadata.

Each group will receive a unique uuid. This will be used for access to the group.

instance_group_delete(context, group_uuid)

Delete an group.

instance_group_get(context, group_uuid)

Get a specific group by id.

instance_group_get_all(context)

Get all groups.

instance_group_get_all_by_project_id(context, project_id)

Get all groups for a specific project_id.

instance_group_member_delete(context, group_uuid, instance_id)

Delete a specific member from the group.

instance_group_members_add(context, group_uuid, members, set_delete=False)

Add members to the group.

instance_group_members_get(context, group_uuid)

Get the members from the group.

instance_group_metadata_add(context, group_uuid, metadata, set_delete=False)

Add metadata to the group.

instance_group_metadata_delete(context, group_uuid, key)

Delete metadata from the group.

instance_group_metadata_get(context, group_uuid)

Get the metadata from the group.

instance_group_policies_add(context, group_uuid, policies, set_delete=False)

Add policies to the group.

instance_group_policies_get(context, group_uuid)

Get the policies from the group.

instance_group_policy_delete(context, group_uuid, policy)

Delete a specific policy from the group.

instance_group_update(context, group_uuid, values)

Update the attributes of an group.

instance_info_cache_delete(context, instance_uuid)

Deletes an existing instance_info_cache record

Parameters:instance_uuid – = uuid of the instance tied to the cache record
instance_info_cache_get(context, instance_uuid)

Gets an instance info cache from the table.

Parameters:instance_uuid – = uuid of the info cache’s instance
instance_info_cache_update(context, instance_uuid, values)

Update an instance info cache record in the table.

Parameters:
  • instance_uuid – = uuid of info cache’s instance
  • values – = dict containing column values to update
instance_metadata_delete(context, instance_uuid, key)

Delete the given metadata item.

instance_metadata_get(context, instance_uuid)

Get all metadata for an instance.

instance_metadata_update(context, instance_uuid, metadata, delete)

Update metadata if it exists, otherwise create it.

instance_remove_security_group(context, instance_id, security_group_id)

Disassociate the given security group from the given instance.

instance_system_metadata_get(context, instance_uuid)

Get all system metadata for an instance.

instance_system_metadata_update(context, instance_uuid, metadata, delete)

Update metadata if it exists, otherwise create it.

instance_type_access_add(context, flavor_id, project_id)

Add flavor access for project.

instance_type_access_get_by_flavor_id(context, flavor_id)

Get flavor access by flavor id.

instance_type_access_remove(context, flavor_id, project_id)

Remove flavor access for project.

instance_type_create(context, values)

Create a new instance type.

instance_type_destroy(context, name)

Delete an instance type.

instance_type_extra_specs_delete(context, flavor_id, key)

Delete the given extra specs item.

instance_type_extra_specs_get(context, flavor_id)

Get all extra specs for an instance type.

instance_type_extra_specs_get_item(context, flavor_id, key)

Get extra specs by key and flavor_id.

instance_type_extra_specs_update_or_create(context, flavor_id, extra_specs)

Create or update instance type extra specs.

This adds or modifies the key/value pairs specified in the extra specs dict argument

instance_type_get(context, id)

Get instance type by id.

instance_type_get_all(context, inactive=False, filters=None, sort_key='flavorid', sort_dir='asc', limit=None, marker=None)

Get all instance flavors.

instance_type_get_by_flavor_id(context, id, read_deleted=None)

Get instance type by flavor id.

instance_type_get_by_name(context, name)

Get instance type by name.

instance_update(context, instance_uuid, values, update_cells=True)

Set the given properties on an instance and update it.

Raises NotFound if instance does not exist.

instance_update_and_get_original(context, instance_uuid, values, update_cells=True, columns_to_join=None)

Set the given properties on an instance and update it. Return a shallow copy of the original instance reference, as well as the updated one.

Parameters:
  • context – = request context object
  • instance_id – = instance id or uuid
  • values – = dict containing column values
Returns:

a tuple of the form (old_instance_ref, new_instance_ref)

Raises NotFound if instance does not exist.

key_pair_count_by_user(context, user_id)

Count number of key pairs for the given user ID.

key_pair_create(context, values)

Create a key_pair from the values dictionary.

key_pair_destroy(context, user_id, name)

Destroy the key_pair or raise if it does not exist.

key_pair_get(context, user_id, name)

Get a key_pair or raise if it does not exist.

key_pair_get_all_by_user(context, user_id)

Get all key_pairs by user.

migration_create(context, values)

Create a migration record.

migration_get(context, migration_id)

Finds a migration by the id.

migration_get_all_by_filters(context, filters)

Finds all migrations in progress.

migration_get_by_instance_and_status(context, instance_uuid, status)

Finds a migration by the instance uuid its migrating.

migration_get_in_progress_by_host_and_node(context, host, node)

Finds all migrations for the given host + node that are not yet confirmed or reverted.

migration_get_unconfirmed_by_dest_compute(context, confirm_window, dest_compute)

Finds all unconfirmed migrations within the confirmation window for a specific destination compute host.

migration_update(context, id, values)

Update a migration instance.

network_associate(context, project_id, network_id=None, force=False)

Associate a free network to a project.

network_count_reserved_ips(context, network_id)

Return the number of reserved ips in the network.

network_create_safe(context, values)

Create a network from the values dict.

The network is only returned if the create succeeds. If the create violates constraints because the network already exists, no exception is raised.

network_delete_safe(context, network_id)

Delete network with key network_id.

This method assumes that the network is not associated with any project

network_disassociate(context, network_id, disassociate_host=True, disassociate_project=True)

Disassociate the network from project or host

Raises if it does not exist.

network_get(context, network_id, project_only='allow_none')

Get a network or raise if it does not exist.

network_get_all(context, project_only='allow_none')

Return all defined networks.

network_get_all_by_host(context, host)

All networks for which the given host is the network host.

network_get_all_by_uuids(context, network_uuids, project_only='allow_none')

Return networks by ids.

network_get_associated_fixed_ips(context, network_id, host=None)

Get all network’s ips that have been associated.

network_get_by_cidr(context, cidr)

Get a network by cidr or raise if it does not exist.

network_get_by_uuid(context, uuid)

Get a network by uuid or raise if it does not exist.

network_in_use_on_host(context, network_id, host=None)

Indicates if a network is currently in use on host.

network_set_host(context, network_id, host_id)

Safely set the host for network.

network_update(context, network_id, values)

Set the given properties on a network and update it.

Raises NotFound if network does not exist.

not_equal(*values)

Return an inequality condition object suitable for use in a constraint.

Not_equal conditions require that a model object’s attribute differs from all of the given values.

pci_device_destroy(context, node_id, address)

Delete a PCI device record.

pci_device_get_all_by_instance_uuid(context, instance_uuid)

Get PCI devices allocated to instance.

pci_device_get_all_by_node(context, node_id)

Get all PCI devices for one host.

pci_device_get_by_addr(context, node_id, dev_addr)

Get PCI device by address.

pci_device_get_by_id(context, id)

Get PCI device by id.

pci_device_update(context, node_id, address, value)

Update a pci device.

project_get_networks(context, project_id, associate=True)

Return the network associated with the project.

If associate is true, it will attempt to associate a new network if one is not found, otherwise it returns None.

provider_fw_rule_create(context, rule)

Add a firewall rule at the provider level (all hosts & instances).

provider_fw_rule_destroy(context, rule_id)

Delete a provider firewall rule from the database.

provider_fw_rule_get_all(context)

Get all provider-level firewall rules.

quota_class_create(context, class_name, resource, limit)

Create a quota class for the given name and resource.

quota_class_get(context, class_name, resource)

Retrieve a quota class or raise if it does not exist.

quota_class_get_all_by_name(context, class_name)

Retrieve all quotas associated with a given quota class.

quota_class_get_default(context)

Retrieve all default quotas.

quota_class_update(context, class_name, resource, limit)

Update a quota class or raise if it does not exist.

quota_create(context, project_id, resource, limit, user_id=None)

Create a quota for the given project and resource.

quota_destroy_all_by_project(context, project_id)

Destroy all quotas associated with a given project.

quota_destroy_all_by_project_and_user(context, project_id, user_id)

Destroy all quotas associated with a given project and user.

quota_get(context, project_id, resource, user_id=None)

Retrieve a quota or raise if it does not exist.

quota_get_all(context, project_id)

Retrieve all user quotas associated with a given project.

quota_get_all_by_project(context, project_id)

Retrieve all quotas associated with a given project.

quota_get_all_by_project_and_user(context, project_id, user_id)

Retrieve all quotas associated with a given project and user.

quota_reserve(context, resources, quotas, user_quotas, deltas, expire, until_refresh, max_age, project_id=None, user_id=None)

Check quotas and create appropriate reservations.

quota_update(context, project_id, resource, limit, user_id=None)

Update a quota or raise if it does not exist.

quota_usage_get(context, project_id, resource, user_id=None)

Retrieve a quota usage or raise if it does not exist.

quota_usage_get_all_by_project(context, project_id)

Retrieve all usage associated with a given resource.

quota_usage_get_all_by_project_and_user(context, project_id, user_id)

Retrieve all usage associated with a given resource.

quota_usage_update(context, project_id, user_id, resource, **kwargs)

Update a quota usage or raise if it does not exist.

reservation_commit(context, reservations, project_id=None, user_id=None)

Commit quota reservations.

reservation_create(context, uuid, usage, project_id, user_id, resource, delta, expire)

Create a reservation for the given project and resource.

reservation_expire(context)

Roll back any expired reservations.

reservation_get(context, uuid)

Retrieve a reservation or raise if it does not exist.

reservation_rollback(context, reservations, project_id=None, user_id=None)

Roll back quota reservations.

s3_image_create(context, image_uuid)

Create local s3 image represented by provided uuid.

s3_image_get(context, image_id)

Find local s3 image represented by the provided id.

s3_image_get_by_uuid(context, image_uuid)

Find local s3 image represented by the provided uuid.

security_group_create(context, values)

Create a new security group.

security_group_default_rule_create(context, values)
security_group_default_rule_destroy(context, security_group_rule_default_id)
security_group_default_rule_get(context, security_group_rule_default_id)
security_group_default_rule_list(context)
security_group_destroy(context, security_group_id)

Deletes a security group.

security_group_ensure_default(context)

Ensure default security group exists for a project_id.

Returns a tuple with the first element being a bool indicating if the default security group previously existed. Second element is the dict used to create the default security group.

security_group_get(context, security_group_id, columns_to_join=None)

Get security group by its id.

security_group_get_all(context)

Get all security groups.

security_group_get_by_instance(context, instance_uuid)

Get security groups to which the instance is assigned.

security_group_get_by_name(context, project_id, group_name)

Returns a security group with the specified name from a project.

security_group_get_by_project(context, project_id)

Get all security groups belonging to a project.

security_group_in_use(context, group_id)

Indicates if a security group is currently in use.

security_group_rule_count_by_group(context, security_group_id)

Count rules in a given security group.

security_group_rule_create(context, values)

Create a new security group.

security_group_rule_destroy(context, security_group_rule_id)

Deletes a security group rule.

security_group_rule_get(context, security_group_rule_id)

Gets a security group rule.

security_group_rule_get_by_security_group(context, security_group_id)

Get all rules for a given security group.

security_group_rule_get_by_security_group_grantee(context, security_group_id)

Get all rules that grant access to the given security group.

security_group_update(context, security_group_id, values, columns_to_join=None)

Update a security group.

service_create(context, values)

Create a service from the values dictionary.

service_destroy(context, service_id)

Destroy the service or raise if it does not exist.

service_get(context, service_id)

Get a service or raise if it does not exist.

service_get_all(context, disabled=None)

Get all services.

service_get_all_by_host(context, host)

Get all services for a given host.

service_get_all_by_topic(context, topic)

Get all services for a given topic.

service_get_by_args(context, host, binary)

Get the state of a service by node name and binary.

service_get_by_compute_host(context, host)

Get the service entry for a given compute host.

Returns the service entry joined with the compute_node entry.

service_get_by_host_and_topic(context, host, topic)

Get a service by host it’s on and topic it listens to.

service_update(context, service_id, values)

Set the given properties on a service and update it.

Raises NotFound if service does not exist.

task_log_begin_task(context, task_name, period_beginning, period_ending, host, task_items=None, message=None)

Mark a task as started for a given host/time period.

task_log_end_task(context, task_name, period_beginning, period_ending, host, errors, message=None)

Mark a task as complete for a given host/time period.

task_log_get(context, task_name, period_beginning, period_ending, host, state=None)
task_log_get_all(context, task_name, period_beginning, period_ending, host=None, state=None)
virtual_interface_create(context, values)

Create a virtual interface record in the database.

virtual_interface_delete_by_instance(context, instance_id)

Delete virtual interface records associated with instance.

virtual_interface_get(context, vif_id)

Gets a virtual interface from the table.

virtual_interface_get_all(context)

Gets all virtual interfaces from the table.

virtual_interface_get_by_address(context, address)

Gets a virtual interface from the table filtering on address.

virtual_interface_get_by_instance(context, instance_id)

Gets all virtual_interfaces for instance.

virtual_interface_get_by_instance_and_network(context, instance_id, network_id)

Gets all virtual interfaces for instance.

virtual_interface_get_by_uuid(context, vif_uuid)

Gets a virtual interface from the table filtering on vif uuid.

vol_get_usage_by_time(context, begin)

Return volumes usage that have been updated after a specified time.

vol_usage_update(context, id, rd_req, rd_bytes, wr_req, wr_bytes, instance_id, project_id, user_id, availability_zone, update_totals=False)

Update cached volume usage for a volume

Creates new record if needed.

The Sqlalchemy Driver

The nova.db.sqlalchemy.api Module

Implementation of SQLAlchemy backend.

The nova.db.sqlalchemy.models Module

SQLAlchemy models for nova data.

class AgentBuild(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents an agent build.

architecture
created_at
deleted
deleted_at
hypervisor
id
md5hash
os
updated_at
url
version
class Aggregate(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a cluster of hosts that exists in this zone.

availability_zone
created_at
deleted
deleted_at
hosts
id
metadetails
name
updated_at
class AggregateHost(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a host that is member of an aggregate.

aggregate_id
created_at
deleted
deleted_at
host
id
updated_at
class AggregateMetadata(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a metadata key/value pair for an aggregate.

aggregate_id
created_at
deleted
deleted_at
id
key
updated_at
value
class BandwidthUsage(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Cache for instance bandwidth usage data pulled from the hypervisor.

bw_in
bw_out
created_at
deleted
deleted_at
id
last_ctr_in
last_ctr_out
last_refreshed
mac
start_period
updated_at
uuid
class BlockDeviceMapping(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents block device mapping that is defined by EC2.

boot_index
connection_info
created_at
delete_on_termination
deleted
deleted_at
destination_type
device_name
device_type
disk_bus
guest_format
id
image_id
instance
instance_uuid
no_device
snapshot_id
source_type
updated_at
volume_id
volume_size
class Cell(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents parent and child cells of this cell. Cells can have multiple parents and children, so there could be any number of entries with is_parent=True or False

api_url
created_at
deleted
deleted_at
id
is_parent
name
transport_url
updated_at
weight_offset
weight_scale
class Certificate(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a x509 certificate.

created_at
deleted
deleted_at
file_name
id
project_id
updated_at
user_id
class ComputeNode(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a running compute service on a host.

cpu_info
created_at
current_workload
deleted
deleted_at
disk_available_least
free_disk_gb
free_ram_mb
host_ip
hypervisor_hostname
hypervisor_type
hypervisor_version
id
local_gb
local_gb_used
memory_mb
memory_mb_used
pci_stats
running_vms
service
service_id
supported_instances
updated_at
vcpus
vcpus_used
class ComputeNodeStat(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Stats related to the current workload of a compute host that are intended to aid in making scheduler decisions.

compute_node_id
created_at
deleted
deleted_at
id
key
primary_join = 'and_(ComputeNodeStat.compute_node_id == ComputeNode.id, ComputeNodeStat.deleted == 0)'
stats
updated_at
value
class Console(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a console session for an instance.

created_at
deleted
deleted_at
id
instance_name
instance_uuid
password
pool
pool_id
port
updated_at
class ConsolePool(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents pool of consoles on the same physical node.

address
compute_host
console_type
created_at
deleted
deleted_at
host
id
password
public_hostname
updated_at
username
class DNSDomain(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a DNS domain with availability zone or project info.

availability_zone
created_at
deleted
deleted_at
domain
project_id
scope
updated_at
class FixedIp(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a fixed ip for an instance.

address
allocated
created_at
deleted
deleted_at
host
id
instance
instance_uuid
leased
network
network_id
reserved
updated_at
virtual_interface_id
class FloatingIp(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a floating ip that dynamically forwards to a fixed ip.

address
auto_assigned
created_at
deleted
deleted_at
fixed_ip
fixed_ip_id
host
id
interface
pool
project_id
updated_at
class Instance(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a guest VM.

access_ip_v4
access_ip_v6
architecture
auto_disk_config
availability_zone
cell_name
cleaned
config_drive
created_at
default_ephemeral_device
default_swap_device
deleted
deleted_at
disable_terminate
display_description
display_name
ephemeral_gb
host
hostname
id
image_ref
injected_files = []
instance_type_id
internal_id
kernel_id
key_data
key_name
launch_index
launched_at
launched_on
locked
locked_by
memory_mb
name
node
os_type
power_state
progress
project_id
ramdisk_id
reservation_id
root_device_name
root_gb
scheduled_at
shutdown_terminate
task_state
terminated_at
updated_at
user_data
user_id
uuid
vcpus
vm_mode
vm_state
class InstanceAction(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Track client actions on an instance.

The intention is that there will only be one of these per user request. A lookup by (instance_uuid, request_id) should always return a single result.

action
created_at
deleted
deleted_at
finish_time
id
instance_uuid
message
project_id
request_id
start_time
updated_at
user_id
class InstanceActionEvent(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Track events that occur during an InstanceAction.

action_id
created_at
deleted
deleted_at
event
finish_time
id
result
start_time
traceback
updated_at
class InstanceFault(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

code
created_at
deleted
deleted_at
details
host
id
instance_uuid
message
updated_at
class InstanceGroup(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents an instance group.

A group will maintain a collection of instances and the relationship between them.

created_at
deleted
deleted_at
id
members
metadetails
name
policies
project_id
updated_at
user_id
uuid
class InstanceGroupMember(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents the members for an instance group.

created_at
deleted
deleted_at
group_id
id
instance_id
updated_at
class InstanceGroupMetadata(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a key/value pair for an instance group.

created_at
deleted
deleted_at
group_id
id
key
updated_at
value
class InstanceGroupPolicy(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents the policy type for an instance group.

created_at
deleted
deleted_at
group_id
id
policy
updated_at
class InstanceIdMapping(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Compatibility layer for the EC2 instance service.

created_at
deleted
deleted_at
id
updated_at
uuid
class InstanceInfoCache(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a cache of information about an instance

created_at
deleted
deleted_at
id
instance
instance_uuid
network_info
updated_at
class InstanceMetadata(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a user-provided metadata key/value pair for an instance.

created_at
deleted
deleted_at
id
instance
instance_uuid
key
updated_at
value
class InstanceSystemMetadata(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a system-owned metadata key/value pair for an instance.

created_at
deleted
deleted_at
id
instance
instance_uuid
key
primary_join = 'and_(InstanceSystemMetadata.instance_uuid == Instance.uuid, InstanceSystemMetadata.deleted == 0)'
updated_at
value
class InstanceTypeExtraSpecs(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents additional specs as key/value pairs for an instance_type.

created_at
deleted
deleted_at
id
instance_type
instance_type_id
key
updated_at
value
class InstanceTypeProjects(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represent projects associated instance_types.

created_at
deleted
deleted_at
id
instance_type
instance_type_id
project_id
updated_at
class InstanceTypes(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents possible flavors for instances.

Note: instance_type and flavor are synonyms and the term instance_type is deprecated and in the process of being removed.

created_at
deleted
deleted_at
disabled
ephemeral_gb
flavorid
id
is_public
memory_mb
name
root_gb
rxtx_factor
swap
updated_at
vcpu_weight
vcpus
class IscsiTarget(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents an iscsi target for a given host.

created_at
deleted
deleted_at
host
id
target_num
updated_at
volume
volume_id
class KeyPair(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a public key pair for ssh.

created_at
deleted
deleted_at
fingerprint
id
name
public_key
updated_at
user_id
MediumText()
class Migration(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a running host-to-host migration.

created_at
deleted
deleted_at
dest_compute
dest_host
dest_node
id
instance
instance_uuid
new_instance_type_id
old_instance_type_id
source_compute
source_node
status
updated_at
class Network(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a network.

bridge
bridge_interface
broadcast
cidr
cidr_v6
created_at
deleted
deleted_at
dhcp_start
dns1
dns2
gateway
gateway_v6
host
id
injected
label
multi_host
netmask
netmask_v6
priority
project_id
rxtx_base
updated_at
uuid
vlan
vpn_private_address
vpn_public_address
vpn_public_port
class NovaBase

Bases: nova.openstack.common.db.sqlalchemy.models.SoftDeleteMixin, nova.openstack.common.db.sqlalchemy.models.TimestampMixin, nova.openstack.common.db.sqlalchemy.models.ModelBase

metadata = None
class PciDevice(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a PCI host device that can be passed through to instances.

address
compute_node_id
created_at
deleted
deleted_at
dev_id
dev_type
extra_info
id
instance
instance_uuid
label
product_id
status
updated_at
vendor_id
class ProjectUserQuota(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a single quota override for a user with in a project.

created_at
deleted
deleted_at
hard_limit
id
project_id
resource
uniq_name = 'uniq_project_user_quotas0user_id0project_id0resource0deleted'
updated_at
user_id
class ProviderFirewallRule(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a rule in a security group.

cidr
created_at
deleted
deleted_at
from_port
id
protocol
to_port
updated_at
class Quota(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a single quota override for a project.

If there is no row for a given project id and resource, then the default for the quota class is used. If there is no row for a given quota class and resource, then the default for the deployment is used. If the row is present but the hard limit is Null, then the resource is unlimited.

created_at
deleted
deleted_at
hard_limit
id
project_id
resource
updated_at
class QuotaClass(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a single quota override for a quota class.

If there is no row for a given quota class and resource, then the default for the deployment is used. If the row is present but the hard limit is Null, then the resource is unlimited.

class_name
created_at
deleted
deleted_at
hard_limit
id
resource
updated_at
class QuotaUsage(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents the current usage for a given resource.

created_at
deleted
deleted_at
id
in_use
project_id
reserved
resource
total
until_refresh
updated_at
user_id
class Reservation(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a resource reservation for quotas.

created_at
deleted
deleted_at
delta
expire
id
project_id
resource
updated_at
usage
usage_id
user_id
uuid
class S3Image(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Compatibility layer for the S3 image service talking to Glance.

created_at
deleted
deleted_at
id
updated_at
uuid
class SecurityGroup(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a security group.

created_at
deleted
deleted_at
description
id
instances
name
project_id
updated_at
user_id
class SecurityGroupIngressDefaultRule(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

cidr
created_at
deleted
deleted_at
from_port
id
protocol
to_port
updated_at
class SecurityGroupIngressRule(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a rule in a security group.

cidr
created_at
deleted
deleted_at
from_port
grantee_group
group_id
id
parent_group
parent_group_id
protocol
to_port
updated_at
class SecurityGroupInstanceAssociation(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

created_at
deleted
deleted_at
id
instance_uuid
security_group_id
updated_at
class Service(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a running service on a host.

binary
created_at
deleted
deleted_at
disabled
disabled_reason
host
id
report_count
topic
updated_at
class Snapshot(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a block storage device that can be attached to a VM.

created_at
deleted
deleted_at
display_description
display_name
id
name
progress
project_id
scheduled_at
status
updated_at
user_id
volume_id
volume_name
volume_size
class SnapshotIdMapping(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Compatibility layer for the EC2 snapshot service.

created_at
deleted
deleted_at
id
updated_at
uuid
class TaskLog(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Audit log for background periodic tasks.

created_at
deleted
deleted_at
errors
host
id
message
period_beginning
period_ending
state
task_items
task_name
updated_at
class VirtualInterface(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a virtual interface on an instance.

address
created_at
deleted
deleted_at
id
instance_uuid
network_id
updated_at
uuid
class Volume(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Represents a block storage device that can be attached to a VM.

attach_status
attach_time
availability_zone
created_at
deleted
deleted_at
display_description
display_name
ec2_id
host
id
instance_uuid
launched_at
mountpoint
name
project_id
provider_auth
provider_location
scheduled_at
size
snapshot_id
status
terminated_at
updated_at
user_id
volume_type_id
class VolumeIdMapping(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Compatibility layer for the EC2 volume service.

created_at
deleted
deleted_at
id
updated_at
uuid
class VolumeUsage(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, nova.db.sqlalchemy.models.NovaBase

Cache for volume usage data pulled from the hypervisor.

availability_zone
created_at
curr_last_refreshed
curr_read_bytes
curr_reads
curr_write_bytes
curr_writes
deleted
deleted_at
id
instance_uuid
project_id
tot_last_refreshed
tot_read_bytes
tot_reads
tot_write_bytes
tot_writes
updated_at
user_id
volume_id

The nova.db.sqlalchemy.session Module

Tests

Tests are lacking for the db api layer and for the sqlalchemy driver. Failures in the drivers would be detected in other test cases, though.