Compute
Documentation for the compute manager and related files. For reading about
a specific virtualization backend, read Drivers.
Handles all processes relating to instances (guest vms).
The ComputeManager class is a nova.manager.Manager that
handles RPC calls relating to creating instances. It is responsible for
building a disk image, launching it via the underlying virtualization driver,
responding to calls to check its state, attaching persistent storage, and
terminating it.
-
class ComputeManager(compute_driver=None, *args, **kwargs)
Bases: nova.manager.SchedulerDependentManager
Manages the running instances from creation to destruction.
-
ComputeManager.RPC_API_VERSION = '2.27'
-
ComputeManager.add_aggregate_host(context, *args, **kw)
Notify hypervisor of change (for hypervisor pools).
-
ComputeManager.add_fixed_ip_to_instance(context, *args, **kw)
Calls network_api to add new fixed_ip to instance
then injects the new network info and resets instance networking.
-
ComputeManager.attach_interface(context, instance, network_id, port_id, requested_ip=None)
Use hotplug to add an network adapter to an instance.
-
ComputeManager.attach_volume(context, *args, **kw)
Attach a volume to an instance.
-
ComputeManager.change_instance_metadata(context, *args, **kw)
Update the metadata published to the instance.
-
ComputeManager.check_can_live_migrate_destination(context, *args, **kw)
Check if it is possible to execute live migration.
This runs checks on the destination host, and then calls
back to the source host to check the results.
Parameters: |
- context – security context
- instance – dict of instance data
- block_migration – if true, prepare for block migration
- disk_over_commit – if true, allow disk over commit
|
Returns a mapping of values required in case of block migration
and None otherwise.
-
ComputeManager.check_can_live_migrate_source(context, *args, **kw)
Check if it is possible to execute live migration.
This checks if the live migration can succeed, based on the
results from check_can_live_migrate_destination.
Parameters: |
- context – security context
- instance – dict of instance data
- dest_check_data – result of check_can_live_migrate_destination
|
Returns a dict values required for live migration without shared
storage.
-
ComputeManager.confirm_resize(context, *args, **kw)
Destroys the source instance.
-
ComputeManager.detach_interface(context, instance, port_id)
Detach an network adapter from an instance.
-
ComputeManager.detach_volume(context, *args, **kw)
Detach a volume from an instance.
-
ComputeManager.finish_resize(context, *args, **kw)
Completes the migration process.
Sets up the newly transferred disk and turns on the instance at its
new host machine.
-
ComputeManager.finish_revert_resize(context, *args, **kw)
Finishes the second half of reverting a resize.
Power back on the source instance and revert the resized attributes
in the database.
-
ComputeManager.get_backdoor_port(context)
Return backdoor port for eventlet_backdoor.
-
ComputeManager.get_console_output(context, *args, **kw)
Send the console output for the given instance.
-
ComputeManager.get_console_pool_info(context, console_type)
-
ComputeManager.get_console_topic(context)
Retrieves the console host for a project on this host.
Currently this is just set in the flags for each compute host.
-
ComputeManager.get_diagnostics(context, *args, **kw)
Retrieve diagnostics for an instance on this host.
-
ComputeManager.get_host_uptime(context, *args, **kw)
Returns the result of calling “uptime” on the target host.
-
ComputeManager.get_spice_console(*args, **kwargs)
-
ComputeManager.get_vnc_console(*args, **kwargs)
-
ComputeManager.handle_events(event)
-
ComputeManager.handle_lifecycle_event(event)
-
ComputeManager.host_maintenance_mode(context, *args, **kw)
Start/Stop host maintenance window. On start, it triggers
guest VMs evacuation.
-
ComputeManager.host_power_action(context, *args, **kw)
Reboots, shuts down or powers up the host.
-
ComputeManager.init_host()
Initialization for a standalone compute service.
-
ComputeManager.init_virt_events()
-
ComputeManager.inject_file(context, *args, **kw)
Write a file to the specified path in an instance on this host.
-
ComputeManager.inject_network_info(context, *args, **kwargs)
Inject network info, but don’t return the info.
-
ComputeManager.live_migration(context, dest, instance, block_migration=False, migrate_data=None)
Executing live migration.
Parameters: |
- context – security context
- instance – instance dict
- dest – destination host
- block_migration – if true, prepare for block migration
- migrate_data – implementation specific params
|
-
ComputeManager.pause_instance(context, *args, **kw)
Pause an instance on this host.
-
ComputeManager.post_live_migration_at_destination(context, instance, block_migration=False)
Post operations for live migration .
Parameters: |
- context – security context
- instance – Instance dict
- block_migration – if true, prepare for block migration
|
-
ComputeManager.power_off_instance(context, *args, **kw)
Power off an instance on this host.
-
ComputeManager.power_on_instance(context, *args, **kw)
Power on an instance on this host.
-
ComputeManager.pre_live_migration(context, instance, block_migration=False, disk=None, migrate_data=None)
Preparations for live migration at dest host.
Parameters: |
- context – security context
- instance – dict of instance data
- block_migration – if true, prepare for block migration
|
:param migrate_data : if not None, it is a dict which holds data
required for live migration without shared storage.
-
ComputeManager.pre_start_hook(**kwargs)
After the service is initialized, but before we fully bring
the service up by listening on RPC queues, make sure to update
our available resources.
-
ComputeManager.prep_resize(context, *args, **kw)
Initiates the process of moving a running instance to another host.
Possibly changes the RAM and disk size in the process.
-
ComputeManager.reboot_instance(context, *args, **kw)
Reboot an instance on this host.
-
ComputeManager.rebuild_instance(context, *args, **kw)
Destroy and re-make this instance.
A ‘rebuild’ effectively purges all existing data from the system and
remakes the VM with given ‘metadata’ and ‘personalities’.
Parameters: |
- context – nova.RequestContext object
- instance – Instance dict
- orig_image_ref – Original image_ref before rebuild
- image_ref – New image_ref for rebuild
- injected_files – Files to inject
- new_pass – password to set on rebuilt instance
- orig_sys_metadata – instance system metadata from pre-rebuild
- bdms – block-device-mappings to use for rebuild
- recreate – True if instance should be recreated with same disk
- on_shared_storage – True if instance files on shared storage
|
-
ComputeManager.refresh_instance_security_rules(context, *args, **kw)
Tell the virtualization driver to refresh security rules for
an instance.
Passes straight through to the virtualization driver.
Synchronise the call beacuse we may still be in the middle of
creating the instance.
-
ComputeManager.refresh_provider_fw_rules(context, *args, **kw)
This call passes straight through to the virtualization driver.
-
ComputeManager.refresh_security_group_members(context, *args, **kw)
Tell the virtualization driver to refresh security group members.
Passes straight through to the virtualization driver.
-
ComputeManager.refresh_security_group_rules(context, *args, **kw)
Tell the virtualization driver to refresh security group rules.
Passes straight through to the virtualization driver.
-
ComputeManager.remove_aggregate_host(context, *args, **kw)
Removes a host from a physical hypervisor pool.
-
ComputeManager.remove_fixed_ip_from_instance(context, *args, **kw)
Calls network_api to remove existing fixed_ip from instance
by injecting the altered network info and resetting
instance networking.
-
ComputeManager.remove_volume_connection(context, *args, **kw)
Remove a volume connection using the volume api.
-
ComputeManager.rescue_instance(context, *args, **kw)
Rescue an instance on this host.
:param rescue_password: password to set on rescue instance
-
ComputeManager.reserve_block_device_name(context, *args, **kw)
-
ComputeManager.reset_network(context, *args, **kwargs)
Reset networking on the given instance.
-
ComputeManager.resize_instance(context, *args, **kw)
Starts the migration of a running instance to another host.
-
ComputeManager.restore_instance(context, *args, **kw)
Restore a soft-deleted instance on this host.
-
ComputeManager.resume_instance(context, *args, **kw)
Resume the given suspended instance.
-
ComputeManager.revert_resize(context, *args, **kw)
Destroys the new instance on the destination machine.
Reverts the model changes, and powers on the old instance on the
source machine.
-
ComputeManager.rollback_live_migration_at_destination(context, instance)
Cleaning up image directory that is created pre_live_migration.
Parameters: |
- context – security context
- instance – an Instance dict sent over rpc
|
-
ComputeManager.run_instance(context, *args, **kw)
-
ComputeManager.set_admin_password(context, *args, **kw)
Set the root/admin password for an instance on this host.
This is generally only called by API password resets after an
image has been built.
-
ComputeManager.set_host_enabled(context, *args, **kw)
Sets the specified host’s ability to accept new instances.
-
ComputeManager.snapshot_instance(context, *args, **kw)
Snapshot an instance on this host.
Parameters: |
- context – security context
- instance – an Instance dict
- image_id – glance.db.sqlalchemy.models.Image.Id
- image_type – snapshot | backup
- backup_type – daily | weekly
- rotation – int representing how many backups to keep around;
None if rotation shouldn’t be used (as in the case of snapshots)
|
-
ComputeManager.soft_delete_instance(context, *args, **kw)
Soft delete an instance on this host.
-
ComputeManager.start_instance(context, *args, **kw)
Starting an instance on this host.
-
ComputeManager.stop_instance(context, *args, **kw)
Stopping an instance on this host.
-
ComputeManager.suspend_instance(context, *args, **kw)
Suspend the given instance.
-
ComputeManager.terminate_instance(context, *args, **kw)
Terminate an instance on this host.
-
ComputeManager.unpause_instance(context, *args, **kw)
Unpause a paused instance on this host.
-
ComputeManager.unrescue_instance(context, *args, **kw)
Rescue an instance on this host.
-
ComputeManager.update_available_resource(context)
See driver.get_available_resource()
Periodic process that keeps that the compute host’s understanding of
resource availability and usage in sync with the underlying hypervisor.
Parameters: | context – security context |
-
ComputeManager.validate_console_port(*args, **kwargs)
-
class ComputeVirtAPI(compute)
Bases: nova.virt.virtapi.VirtAPI
-
ComputeVirtAPI.agent_build_get_by_triple(context, hypervisor, os, architecture)
-
ComputeVirtAPI.aggregate_get_by_host(context, host, key=None)
-
ComputeVirtAPI.aggregate_metadata_add(context, aggregate, metadata, set_delete=False)
-
ComputeVirtAPI.aggregate_metadata_delete(context, aggregate, key)
-
ComputeVirtAPI.instance_get_all_by_host(context, host)
-
ComputeVirtAPI.instance_get_by_uuid(context, instance_uuid)
-
ComputeVirtAPI.instance_type_get(context, instance_type_id)
-
ComputeVirtAPI.instance_update(context, instance_uuid, updates)
-
ComputeVirtAPI.provider_fw_rule_get_all(context)
-
ComputeVirtAPI.security_group_get_by_instance(context, instance)
-
ComputeVirtAPI.security_group_rule_get_by_security_group(context, security_group)
-
publisher_id(host=None)
-
reverts_task_state(function)
Decorator to revert task_state on failure.
-
wrap_instance_event(function)
Wraps a method to log the event taken on the instance, and result.
This decorator wraps a method to log the start and result of an event, as
part of an action taken on an instance.
-
wrap_instance_fault(function)
Wraps a method to catch exceptions related to instances.
This decorator wraps a method to catch any exceptions having to do with
an instance that may get thrown. It then logs an instance fault in the db.
The nova.virt.connection Module
The nova.compute.disk Module
Handling of VM disk images.
-
class QemuImgInfo(cmd_output=None)
Bases: object
-
QemuImgInfo.BACKING_FILE_RE = <_sre.SRE_Pattern object at 0xa84cd88>
-
QemuImgInfo.SIZE_RE = <_sre.SRE_Pattern object at 0xa6a02f0>
-
QemuImgInfo.TOP_LEVEL_RE = <_sre.SRE_Pattern object at 0xa7379c0>
-
convert_image(source, dest, out_format, run_as_root=False)
Convert image to other format.
-
fetch(context, image_href, path, _user_id, _project_id)
-
fetch_to_raw(context, image_href, path, user_id, project_id)
-
qemu_img_info(path)
Return an object containing the parsed output from qemu-img info.
Built-in instance properties.
-
add_instance_type_access(flavorid, projectid, ctxt=None)
Add instance type access for project.
-
create(name, memory, vcpus, root_gb, ephemeral_gb=None, flavorid=None, swap=None, rxtx_factor=None, is_public=True)
Creates instance types.
-
delete_instance_type_info(metadata, *prefixes)
Delete instance_type information from instance’s system_metadata
by prefix.
-
destroy(name)
Marks instance types as deleted.
-
extract_instance_type(instance, prefix='')
Create an InstanceType-like object from instance’s system_metadata
information.
-
get_all_flavors(ctxt=None, inactive=False, filters=None)
Get all non-deleted instance_types.
Pass true as argument if you want deleted instance types returned also.
-
get_all_types(ctxt=None, inactive=False, filters=None)
Get all non-deleted instance_types.
Pass true as argument if you want deleted instance types returned also.
-
get_default_instance_type()
Get the default instance type.
-
get_instance_type(instance_type_id, ctxt=None, inactive=False)
Retrieves single instance type by id.
-
get_instance_type_access_by_flavor_id(flavorid, ctxt=None)
Retrieve instance type access list by flavor id.
-
get_instance_type_by_flavor_id(flavorid, ctxt=None, read_deleted='yes')
Retrieve instance type by flavorid.
-
get_instance_type_by_name(name, ctxt=None)
Retrieves single instance type by name.
-
remove_instance_type_access(flavorid, projectid, ctxt=None)
Remove instance type access for project.
-
save_instance_type_info(metadata, instance_type, prefix='')
Save properties from instance_type into instance’s system_metadata,
in the format of:
[prefix]instance_type_[key]
This can be used to update system_metadata in place from a type, as well
as stash information about another instance_type for later use (such as
during resize).
Power state is the state we get by calling virt driver on a particular
domain. The hypervisor is always considered the authority on the status
of a particular VM, and the power_state in the DB should be viewed as a
snapshot of the VMs’s state in the (recent) past. It can be periodically
updated, and should also be updated at the end of a task if the task is
supposed to affect power_state.
-
name(code)
-
valid_states()
Drivers
The nova.virt.libvirt_conn Driver
The nova.virt.xenapi Driver
xenapi – Nova support for XenServer and XCP through XenAPI
A fake (in-memory) hypervisor+api.
Allows nova testing w/o a hypervisor. This module also documents the
semantics of real hypervisor connections.
-
class FakeDriver(virtapi, read_only=False)
Bases: nova.virt.driver.ComputeDriver
-
FakeDriver.attach_interface(instance, image_meta, network_info)
-
FakeDriver.attach_volume(connection_info, instance, mountpoint)
Attach the disk to the instance at mountpoint using info.
-
FakeDriver.block_stats(instance_name, disk_id)
-
FakeDriver.capabilities = {'supports_recreate': True, 'has_imagecache': True}
Fake hypervisor driver.
-
FakeDriver.check_can_live_migrate_destination(ctxt, instance_ref, src_compute_info, dst_compute_info, block_migration=False, disk_over_commit=False)
-
FakeDriver.check_can_live_migrate_destination_cleanup(ctxt, dest_check_data)
-
FakeDriver.check_can_live_migrate_source(ctxt, instance_ref, dest_check_data)
-
FakeDriver.confirm_migration(migration, instance, network_info)
-
FakeDriver.destroy(instance, network_info, block_device_info=None, destroy_disks=True)
-
FakeDriver.detach_interface(instance, network_info)
-
FakeDriver.detach_volume(connection_info, instance, mountpoint)
Detach the disk attached to the instance.
-
FakeDriver.ensure_filtering_rules_for_instance(instance_ref, network_info)
This method is supported only by libvirt.
-
FakeDriver.finish_migration(context, migration, instance, disk_info, network_info, image_meta, resize_instance, block_device_info=None)
-
FakeDriver.finish_revert_migration(instance, network_info, block_device_info=None)
-
FakeDriver.get_all_bw_counters(instances)
Return bandwidth usage counters for each interface on each
running VM
-
FakeDriver.get_all_volume_usage(context, instances, start_time, stop_time=None)
Return usage info for volumes attached to vms on
a given host
-
FakeDriver.get_available_nodes()
-
FakeDriver.get_available_resource(nodename)
Updates compute manager resource info on ComputeNode table.
Since we don’t have a real hypervisor, pretend we have lots of
disk and ram.
-
FakeDriver.get_console_output(instance)
-
FakeDriver.get_console_pool_info(console_type)
-
FakeDriver.get_diagnostics(instance_name)
-
FakeDriver.get_disk_available_least()
-
static FakeDriver.get_host_ip_addr()
-
FakeDriver.get_host_stats(refresh=False)
Return fake Host Status of ram, disk, network.
-
FakeDriver.get_info(instance)
-
FakeDriver.get_instance_disk_info(instance_name)
-
FakeDriver.get_spice_console(instance)
-
FakeDriver.get_vnc_console(instance)
-
FakeDriver.get_volume_connector(instance)
-
FakeDriver.host_maintenance_mode(host, mode)
Start/Stop host maintenance window. On start, it triggers
guest VMs evacuation.
-
FakeDriver.host_power_action(host, action)
Reboots, shuts down or powers up the host.
-
FakeDriver.init_host(host)
-
FakeDriver.inject_file(instance, b64_path, b64_contents)
-
FakeDriver.instance_on_disk(instance)
-
FakeDriver.interface_stats(instance_name, iface_id)
-
FakeDriver.legacy_nwinfo()
-
FakeDriver.list_instance_uuids()
-
FakeDriver.list_instances()
-
FakeDriver.live_migration(context, instance_ref, dest, post_method, recover_method, block_migration=False, migrate_data=None)
-
FakeDriver.migrate_disk_and_power_off(context, instance, dest, instance_type, network_info, block_device_info=None)
-
FakeDriver.pause(instance)
-
FakeDriver.plug_vifs(instance, network_info)
Plug VIFs into networks.
-
FakeDriver.poll_rebooting_instances(timeout, instances)
-
FakeDriver.post_live_migration_at_destination(context, instance, network_info, block_migration=False, block_device_info=None)
-
FakeDriver.power_off(instance)
-
FakeDriver.power_on(instance)
-
FakeDriver.pre_live_migration(context, instance_ref, block_device_info, network_info, migrate_data=None)
-
FakeDriver.reboot(context, instance, network_info, reboot_type, block_device_info=None, bad_volumes_callback=None)
-
FakeDriver.refresh_instance_security_rules(instance)
-
FakeDriver.refresh_provider_fw_rules()
-
FakeDriver.refresh_security_group_members(security_group_id)
-
FakeDriver.refresh_security_group_rules(security_group_id)
-
FakeDriver.rescue(context, instance, network_info, image_meta, rescue_password)
-
FakeDriver.restore(instance)
-
FakeDriver.resume(instance, network_info, block_device_info=None)
-
FakeDriver.resume_state_on_host_boot(context, instance, network_info, block_device_info=None)
-
FakeDriver.set_admin_password(instance, new_pass)
-
FakeDriver.set_host_enabled(host, enabled)
Sets the specified host’s ability to accept new instances.
-
FakeDriver.snapshot(context, instance, name, update_task_state)
-
FakeDriver.soft_delete(instance)
-
FakeDriver.spawn(context, instance, image_meta, injected_files, admin_password, network_info=None, block_device_info=None)
-
FakeDriver.suspend(instance)
-
FakeDriver.test_remove_vm(instance_name)
Removes the named VM, as if it crashed. For testing.
-
FakeDriver.unfilter_instance(instance_ref, network_info)
This method is supported only by libvirt.
-
FakeDriver.unpause(instance)
-
FakeDriver.unplug_vifs(instance, network_info)
Unplug VIFs from networks.
-
FakeDriver.unrescue(instance, network_info)
-
class FakeInstance(name, state)
Bases: object
-
class FakeVirtAPI
Bases: nova.virt.virtapi.VirtAPI
-
FakeVirtAPI.agent_build_get_by_triple(context, hypervisor, os, architecture)
-
FakeVirtAPI.aggregate_get_by_host(context, host, key=None)
-
FakeVirtAPI.aggregate_metadata_add(context, aggregate, metadata, set_delete=False)
-
FakeVirtAPI.aggregate_metadata_delete(context, aggregate, key)
-
FakeVirtAPI.instance_get_all_by_host(context, host)
-
FakeVirtAPI.instance_get_by_uuid(context, instance_uuid)
-
FakeVirtAPI.instance_type_get(context, instance_type_id)
-
FakeVirtAPI.instance_update(context, instance_uuid, updates)
-
FakeVirtAPI.provider_fw_rule_get_all(context)
-
FakeVirtAPI.security_group_get_by_instance(context, instance)
-
FakeVirtAPI.security_group_rule_get_by_security_group(context, security_group)
-
restore_nodes()
Resets FakeDriver’s node list modified by set_nodes().
Usually called from tearDown().
-
set_nodes(nodes)
Sets FakeDriver’s node.list.
- It has effect on the following methods:
- get_available_nodes()
get_available_resource
get_host_stats()
To restore the change, call restore_nodes()