org.libvirt
Class Domain
public
class
Domain
extends Object
A virtual machine defined within libvirt.
| Method Summary |
| void | attachDevice(String xmlDesc)
Creates a virtual device attachment to backend.
|
| DomainBlockStats | blockStats(String path)
Returns block device (disk) stats for block devices attached to this
domain. |
| void | coreDump(String to, int flags)
Dumps the core of this domain on a given file for analysis. |
| int | cpuMapLength(int maxCpus)
It returns the length (in bytes) required to store the complete CPU map
between a single virtual & all physical CPUs of a domain. |
| void | create()
Launches this defined domain. |
| void | destroy()
Destroys this domain object. |
| void | detachDevice(String xmlDesc)
Destroys a virtual device attachment to backend.
|
| int | free()
Frees this domain object. |
| boolean | getAutostart()
Provides a boolean value indicating whether the network is configured to
be automatically started when the host machine boots.
|
| Connect | getConnect()
Provides the connection object associated with a domain.
|
| int | getID()
Gets the hypervisor ID number for the domain
|
| DomainInfo | getInfo()
Extract information about a domain. |
| long | getMaxMemory()
Retrieve the maximum amount of physical memory allocated to a domain.
|
| int | getMaxVcpus()
Provides the maximum number of virtual CPUs supported for the guest VM.
|
| String | getName()
Gets the public name for this domain
|
| String | getOSType()
Gets the type of domain operation system.
|
| SchedParameter[] | getSchedulerParameters()
Gets the scheduler parameters.
|
| String[] | getSchedulerType()
Gets the scheduler type.
|
| int[] | getUUID()
Get the UUID for this domain.
|
| String | getUUIDString()
Gets the UUID for this domain as string.
|
| int[] | getVcpusCpuMaps()
Returns the cpumaps for this domain Only the lower 8 bits of each int in
the array contain information.
|
| VcpuInfo[] | getVcpusInfo()
Extracts information about virtual CPUs of this domain
|
| String | getXMLDesc(int flags)
Provides an XML description of the domain. |
| DomainInterfaceStats | interfaceStats(String path)
Returns network interface stats for interfaces attached to this domain.
|
| Domain | migrate(Connect dconn, long flags, String dname, String uri, long bandwidth)
Migrate this domain object from its current host to the destination host
given by dconn (a connection to the destination host). |
| void | pinVcpu(int vcpu, int[] cpumap)
Dynamically changes the real CPUs which can be allocated to a virtual
CPU. |
| protected void | processError()
Error handling logic to throw errors. |
| void | reboot(int flags)
Reboot this domain, the domain object is still usable there after but the
domain OS is being stopped for a restart. |
| void | resume()
Resume this suspended domain, the process is restarted from the state
where it was frozen by calling virSuspendDomain(). |
| void | save(String to)
Suspends this domain and saves its memory contents to a file on disk.
|
| void | setAutostart(boolean autostart)
Configures the network to be automatically started when the host machine
boots.
|
| void | setMaxMemory(long memory)
* Dynamically change the maximum amount of physical memory allocated to a
domain. |
| void | setMemory(long memory)
Dynamically changes the target amount of physical memory allocated to
this domain. |
| void | setSchedulerParameters(SchedParameter[] params)
Changes the scheduler parameters
|
| void | setVcpus(int nvcpus)
Dynamically changes the number of virtual CPUs used by this domain. |
| void | shutdown()
Shuts down this domain, the domain object is still usable there after but
the domain OS is being stopped. |
| void | suspend()
Suspends this active domain, the process is frozen without further access
to CPU resources and I/O but the memory used by the domain at the
hypervisor level will stay allocated. |
| void | undefine()
undefines this domain but does not stop it if it is running
|
The libvirt connection from the hypervisor
public void attachDevice(String xmlDesc)
Creates a virtual device attachment to backend.
Parameters: xmlDesc
XML description of one device
Throws: LibvirtException
Returns block device (disk) stats for block devices attached to this
domain. The path parameter is the name of the block device. Get this by
calling virDomainGetXMLDesc and finding the
attribute
within //domain/devices/disk. (For example, "xvda"). Domains may have
more than one block device. To get stats for each you should make
multiple calls to this function. Individual fields within the
DomainBlockStats object may be returned as -1, which indicates that the
hypervisor does not support that particular statistic.
Parameters: path
path to the block device
Returns: the statistics in a DomainBlockStats object
Throws: LibvirtException
public void coreDump(String to, int flags)
Dumps the core of this domain on a given file for analysis. Note that for
remote Xen Daemon the file path will be interpreted in the remote host.
Parameters: to
path for the core file flags
extra flags, currently unused
Throws: LibvirtException
public int cpuMapLength(int maxCpus)
It returns the length (in bytes) required to store the complete CPU map
between a single virtual & all physical CPUs of a domain.
public void create()
Launches this defined domain. If the call succeed the domain moves from
the defined to the running domains pools.
Throws: LibvirtException
public void destroy()
Destroys this domain object. The running instance is shutdown if not down
already and all resources used by it are given back to the hypervisor.
The data structure is freed and should not be used thereafter if the call
does not return an error. This function may requires priviledged access
Throws: LibvirtException
public void detachDevice(String xmlDesc)
Destroys a virtual device attachment to backend.
Parameters: xmlDesc
XML description of one device
Throws: LibvirtException
public int free()
Frees this domain object. The running instance is kept alive. The data
structure is freed and should not be used thereafter.
Throws: LibvirtException
UNKNOWN: 0 for success, -1 for failure.
public boolean getAutostart()
Provides a boolean value indicating whether the network is configured to
be automatically started when the host machine boots.
Returns: the result
Throws: LibvirtException
Provides the connection object associated with a domain.
Returns: the Connect object
public int getID()
Gets the hypervisor ID number for the domain
Returns: the hypervisor ID
Throws: LibvirtException
Extract information about a domain. Note that if the connection used to
get the domain is limited only a partial set of the information can be
extracted.
Returns: a DomainInfo object describing this domain
Throws: LibvirtException
public long getMaxMemory()
Retrieve the maximum amount of physical memory allocated to a domain.
Returns: the memory in kilobytes
Throws: LibvirtException
public int getMaxVcpus()
Provides the maximum number of virtual CPUs supported for the guest VM.
If the guest is inactive, this is basically the same as
virConnectGetMaxVcpus. If the guest is running this will reflect the
maximum number of virtual CPUs the guest was booted with.
Returns: the number of VCPUs
Throws: LibvirtException
public String getName()
Gets the public name for this domain
Returns: the name
Throws: LibvirtException
public String getOSType()
Gets the type of domain operation system.
Returns: the type
Throws: LibvirtException
Gets the scheduler parameters.
Returns: an array of SchedParameter objects
Throws: LibvirtException
public String[] getSchedulerType()
Gets the scheduler type.
Returns: the type of the scheduler
Throws: LibvirtException
public int[] getUUID()
Get the UUID for this domain.
Returns: the UUID as an unpacked int array
Throws: LibvirtException
See Also: rfc4122
public String getUUIDString()
Gets the UUID for this domain as string.
Returns: the UUID in canonical String format
Throws: LibvirtException
See Also: rfc4122
public int[] getVcpusCpuMaps()
Returns the cpumaps for this domain Only the lower 8 bits of each int in
the array contain information.
Returns: a bitmap of real CPUs for all vcpus of this domain
Throws: LibvirtException
Extracts information about virtual CPUs of this domain
Returns: an array of VcpuInfo object describing the VCPUs
Throws: LibvirtException
public String getXMLDesc(int flags)
Provides an XML description of the domain. The description may be reused
later to relaunch the domain with createLinux().
Parameters: flags
not used
Returns: the XML description String
Throws: LibvirtException
See Also: The XML
Description format
Returns network interface stats for interfaces attached to this domain.
The path parameter is the name of the network interface. Domains may have
more than network interface. To get stats for each you should make
multiple calls to this function. Individual fields within the
DomainInterfaceStats object may be returned as -1, which indicates that
the hypervisor does not support that particular statistic.
Parameters: path
path to the interface
Returns: the statistics in a DomainInterfaceStats object
Throws: LibvirtException
public
Domain migrate(
Connect dconn, long flags, String dname, String uri, long bandwidth)
Migrate this domain object from its current host to the destination host
given by dconn (a connection to the destination host). Flags may be one
of more of the following: Domain.VIR_MIGRATE_LIVE Attempt a live
migration. If a hypervisor supports renaming domains during migration,
then you may set the dname parameter to the new name (otherwise it keeps
the same name). If this is not supported by the hypervisor, dname must be
NULL or else you will get an error. Since typically the two hypervisors
connect directly to each other in order to perform the migration, you may
need to specify a path from the source to the destination. This is the
purpose of the uri parameter.If uri is NULL, then libvirt will try to
find the best method. Uri may specify the hostname or IP address of the
destination host as seen from the source, or uri may be a URI giving
transport, hostname, user, port, etc. in the usual form. Uri should only
be specified if you want to migrate over a specific interface on the
remote host. For Qemu/KVM, the uri should be of the form
"tcp://hostname[:port]". This does not require TCP auth to be setup
between the connections, since migrate uses a straight TCP connection
(unless using the PEER2PEER flag, in which case URI should be a full
fledged libvirt URI). Refer also to driver documentation for the
particular URIs supported. If set to 0, libvirt will choose a suitable
default. Some hypervisors do not support this feature and will return an
error if bandwidth is not 0. To see which features are supported by the
current hypervisor, see Connect.getCapabilities,
/capabilities/host/migration_features. There are many limitations on
migration imposed by the underlying technology - for example it may not
be possible to migrate between different processors even with the same
architecture, or between different types of hypervisor.
Parameters: dconn
destination host (a Connect object) flags
flags dname
(optional) rename domain to this at destination uri
(optional) dest hostname/URI as seen from the source host bandwidth
optional) specify migration bandwidth limit in Mbps
Returns: the new domain object if the migration was successful, or NULL in
case of error. Note that the new domain object exists in the
scope of the destination connection (dconn).
Throws: LibvirtException
public void pinVcpu(int vcpu, int[] cpumap)
Dynamically changes the real CPUs which can be allocated to a virtual
CPU. This function requires priviledged access to the hypervisor.
Parameters: vcpu
virtual cpu number cpumap
bit map of real CPUs represented by the the lower 8 bits of
each int in the array. Each bit set to 1 means that
corresponding CPU is usable. Bytes are stored in little-endian
order: CPU0-7, 8-15... In each byte, lowest CPU number is
least significant bit.
Throws: LibvirtException
protected void processError()
Error handling logic to throw errors. Must be called after every libvirt
call.
public void reboot(int flags)
Reboot this domain, the domain object is still usable there after but the
domain OS is being stopped for a restart. Note that the guest OS may
ignore the request.
Parameters: flags
extra flags for the reboot operation, not used yet
Throws: LibvirtException
public void resume()
Resume this suspended domain, the process is restarted from the state
where it was frozen by calling virSuspendDomain(). This function may
requires privileged access
Throws: LibvirtException
public void save(String to)
Suspends this domain and saves its memory contents to a file on disk.
After the call, if successful, the domain is not listed as running
anymore (this may be a problem). Use Connect.virDomainRestore() to
restore a domain after saving.
Parameters: to
path for the output file
Throws: LibvirtException
public void setAutostart(boolean autostart)
Configures the network to be automatically started when the host machine
boots.
Parameters: autostart
Throws: LibvirtException
public void setMaxMemory(long memory)
* Dynamically change the maximum amount of physical memory allocated to a
domain. This function requires priviledged access to the hypervisor.
Parameters: memory
the amount memory in kilobytes
Throws: LibvirtException
public void setMemory(long memory)
Dynamically changes the target amount of physical memory allocated to
this domain. This function may requires priviledged access to the
hypervisor.
Parameters: memory
in kilobytes
Throws: LibvirtException
Changes the scheduler parameters
Parameters: params
an array of SchedParameter objects to be changed
Throws: LibvirtException
public void setVcpus(int nvcpus)
Dynamically changes the number of virtual CPUs used by this domain. Note
that this call may fail if the underlying virtualization hypervisor does
not support it or if growing the number is arbitrary limited. This
function requires priviledged access to the hypervisor.
Parameters: nvcpus
the new number of virtual CPUs for this domain
Throws: LibvirtException
public void shutdown()
Shuts down this domain, the domain object is still usable there after but
the domain OS is being stopped. Note that the guest OS may ignore the
request. TODO: should we add an option for reboot, knowing it may not be
doable in the general case ?
Throws: LibvirtException
public void suspend()
Suspends this active domain, the process is frozen without further access
to CPU resources and I/O but the memory used by the domain at the
hypervisor level will stay allocated. Use Domain.resume() to reactivate
the domain. This function requires priviledged access.
Throws: LibvirtException
public void undefine()
undefines this domain but does not stop it if it is running
Throws: LibvirtException