This Page

Psst... hey. You're reading the latest content, but it might be out of sync with code. You can read Nova 2011.2 docs or all OpenStack docs too.

The nova.virt.libvirt.connection Module

A connection to a hypervisor through libvirt.

Supports KVM, LXC, QEMU, UML, and XEN.

Related Flags

libvirt_type:Libvirt domain type. Can be kvm, qemu, uml, xen (default: kvm).
libvirt_uri:Override for the default libvirt URI (depends on libvirt_type).
libvirt_xml_template:
 Libvirt XML Template.
rescue_image_id:
 Rescue ami image (None = original image).
rescue_kernel_id:
 Rescue aki image (None = original image).
rescue_ramdisk_id:
 Rescue ari image (None = original image).
injected_network_template:
 Template file for injected network
allow_same_net_traffic:
 Whether to allow in project network traffic
class nova.virt.libvirt.connection.ConsoleLogger(fifo_path, ringbuffer_path)

Bases: object

close()
peek()
class nova.virt.libvirt.connection.LibvirtConnection(read_only)

Bases: nova.virt.driver.ComputeDriver

attach_volume(*args, **kw)
block_stats(instance_name, disk)

Note that this function takes an instance name.

compare_cpu(cpu_info)

Checks the host cpu is compatible to a cpu given by xml.

“xml” must be a part of libvirt.openReadonly().getCapabilities(). return values follows by virCPUCompareResult. if 0 > return value, do live migration. ‘http://libvirt.org/html/libvirt-libvirt.html#virCPUCompareResult

Parameters:cpu_info – json string that shows cpu feature(see get_cpu_info())
Returns:None. if given cpu info is not compatible to this server, raise exception.
destroy(instance, network_info, cleanup=True)
detach_volume(*args, **kw)
ensure_filtering_rules_for_instance(instance_ref, network_info, time=None)

Setting up filtering rules and waiting for its completion.

To migrate an instance, filtering rules to hypervisors and firewalls are inevitable on destination host. ( Waiting only for filterling rules to hypervisor, since filtering rules to firewall rules can be set faster).

Concretely, the below method must be called. - setup_basic_filtering (for nova-basic, etc.) - prepare_instance_filter(for nova-instance-instance-xxx, etc.)

to_xml may have to be called since it defines PROJNET, PROJMASK. but libvirt migrates those value through migrateToURI(), so , no need to be called.

Don’t use thread for this method since migration should not be started when setting-up filtering rules operations are not completed.

Params instance_ref:
 nova.db.sqlalchemy.models.Instance object
get_ajax_console(*args, **kw)
get_console_output(*args, **kw)
get_console_pool_info(console_type)
get_cpu_info()

Get cpuinfo information.

Obtains cpu feature from virConnect.getCapabilities, and returns as a json string.

Returns:see above description
get_diagnostics(instance_name)
get_disks(instance_name)

Note that this function takes an instance name.

Returns a list of all block devices for this domain.

get_host_ip_addr()
get_host_stats(refresh=False)

See xenapi_conn.py implementation.

get_hypervisor_type()

Get hypervisor type.

Returns:hypervisor type (ex. qemu)
get_hypervisor_version()

Get hypervisor version.

Returns:hypervisor version (ex. 12003)
get_info(instance_name)

Retrieve information from libvirt for a specific instance name.

If a libvirt error is encountered during lookup, we might raise a NotFound exception or Error exception depending on how severe the libvirt error is.

get_instance_disk_info(ctxt, instance_ref)

Preparation block migration.

Params ctxt:security context
Params instance_ref:
 nova.db.sqlalchemy.models.Instance object instance object that is migrated.
Returns:
json strings with below format.

“[{‘path’:’disk’, ‘type’:’raw’, ‘local_gb’:‘10G’},...]”

get_interfaces(instance_name)

Note that this function takes an instance name.

Returns a list of all network interfaces for this instance.

get_local_gb_total()

Get the total hdd size(GB) of physical computer.

Returns:The total amount of HDD(GB). Note that this value shows a partition where NOVA-INST-DIR/instances mounts.
get_local_gb_used()

Get the free hdd size(GB) of physical computer.

Returns:The total usage of HDD(GB). Note that this value shows a partition where NOVA-INST-DIR/instances mounts.
get_memory_mb_total()

Get the total memory size(MB) of physical computer.

Returns:the total amount of memory(MB).
get_memory_mb_used()

Get the free memory size(MB) of physical computer.

Returns:the total usage of memory(MB).
get_uri()
get_vcpu_total()

Get vcpu number of physical computer.

Returns:the number of cpu core.
get_vcpu_used()

Get vcpu usage number of physical computer.

Returns:The total number of vcpu that currently used.
get_vnc_console(*args, **kw)
host_power_action(host, action)

Reboots, shuts down or powers up the host.

init_host(host)
interface_stats(instance_name, interface)

Note that this function takes an instance name.

list_instances()
list_instances_detail()
live_migration(ctxt, instance_ref, dest, post_method, recover_method, block_migration=False)

Spawning live_migration operation for distributing high-load.

Params ctxt:security context
Params instance_ref:
 nova.db.sqlalchemy.models.Instance object instance object that is migrated.
Params dest:destination host
Params block_migration:
 destination host
Params post_method:
 post operation method. expected nova.compute.manager.post_live_migration.
Params recover_method:
 recovery method when any exception occurs. expected nova.compute.manager.recover_live_migration.
Params block_migration:
 if true, do block migration.
pause(*args, **kw)

Pause VM instance

plug_vifs(instance, network_info)

Plugin VIFs into networks.

poll_rescued_instances(*args, **kw)
post_live_migration_at_destination(ctxt, instance_ref, network_info, block_migration)

Post operation of live migration at destination host.

Params ctxt:security context
Params instance_ref:
 nova.db.sqlalchemy.models.Instance object instance object that is migrated.
Params network_info:
 instance network infomation

:params : block_migration: if true, post operation of block_migraiton.

pre_block_migration(ctxt, instance_ref, disk_info_json)

Preparation block migration.

Params ctxt:security context
Params instance_ref:
 nova.db.sqlalchemy.models.Instance object instance object that is migrated.
Params disk_info_json:
 json strings specified in get_instance_disk_info
reboot(*args, **kw)

Reboot a virtual machine, given an instance reference.

This method actually destroys and re-creates the domain to ensure the reboot happens, as the guest OS cannot ignore this action.

refresh_provider_fw_rules()
refresh_security_group_members(security_group_id)
refresh_security_group_rules(security_group_id)
rescue(*args, **kw)

Loads a VM using rescue images.

A rescue is normally performed when something goes wrong with the primary images and data needs to be corrected/recovered. Rescuing should not edit or over-ride the original image, only allow for data recovery.

resume(*args, **kw)

resume the specified instance

set_host_enabled(host, enabled)

Sets the specified host’s ability to accept new instances.

snapshot(*args, **kw)

Create snapshot from a running VM instance.

This command only works with qemu 0.14+

spawn(*args, **kw)
suspend(*args, **kw)

Suspend the specified instance

to_xml(instance, network_info, rescue=False, block_device_info=None)
unfilter_instance(instance_ref, network_info)

See comments of same method in firewall_driver.

unpause(*args, **kw)

Unpause paused VM instance

unrescue(*args, **kw)

Reboot the VM which is being rescued back into primary images.

Because reboot destroys and re-creates instances, unresue should simply call reboot.

update_available_resource(ctxt, host)

Updates compute manager resource info on ComputeNode table.

This method is called when nova-coompute launches, and whenever admin executes “nova-manage service update_resource”.

Parameters:
  • ctxt – security context
  • host – hostname that compute manager is currently running
update_host_status()

See xenapi_conn.py implementation.

nova.virt.libvirt.connection.get_connection(read_only)