At Sun, 13 Jan 2013 19:09:28 +0100,
Wido den Hollander wrote:
virDomainMigrate2 adds the dxml argument which makes it possible
to alter host-specific portions of the domain XML that will be
used on the destination host.
The original migrate method still uses virDomainMigrate for backwards
compatibility reasons.
Signed-off-by: Wido den Hollander <wido(a)widodh.nl>
---
src/main/java/org/libvirt/Domain.java | 58 ++++++++++++++++++++++++++++
src/main/java/org/libvirt/jna/Libvirt.java | 2 +
2 files changed, 60 insertions(+)
diff --git a/src/main/java/org/libvirt/Domain.java
b/src/main/java/org/libvirt/Domain.java
index 6bdc1df..2758747 100644
--- a/src/main/java/org/libvirt/Domain.java
+++ b/src/main/java/org/libvirt/Domain.java
@@ -778,6 +778,64 @@ public class Domain {
/**
* 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:
s/one of/one or/
+ * Domain.VIR_MIGRATE_LIVE Attempt a live migration.
Huh? Only one possible flag? Better not duplicate this information
here, this is hard to keep in sync.
+ * 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
"NULL" should be "null" in Java.
+ * 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 tofind 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.
This sentence makes no sense. To what parameter is it referring to?
There's some part of text missing before.
+ * 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.
+ *
+ * If the hypervisor supports it, @dxml can be used to alter
Don't use @dxml in order to refer to arguments. That's a libvirt doc thing.
+ * host-specific portions of the domain XML that will be used
on
+ * the destination.
Phew. That's a long comment without paragraphs. Insert a few <p>'s.
+ * @param dconn
+ * destination host (a Connect object)
+ * @param dxml
+ * (optional) XML config for launching guest on target
+ * @param flags
+ * flags
+ * @param dname
+ * (optional) rename domain to this at destination
+ * @param uri
+ * (optional) dest hostname/URI as seen from the source host
+ * @param bandwidth
+ * optional) specify migration bandwidth limit in Mbps
Missing opening paren.
+ * @return the new domain object if the migration was
successful, or NULL in
+ * case of error.
It never return NULL nor null because it will throw an exception on
error. But I can see where this is coming from.
ACK with this squashed in:
---- >8 -----
diff --git a/src/main/java/org/libvirt/Domain.java
b/src/main/java/org/libvirt/Domain.java
index 2575d7b..3d779d6 100644
--- a/src/main/java/org/libvirt/Domain.java
+++ b/src/main/java/org/libvirt/Domain.java
@@ -786,35 +786,51 @@ public class Domain {
/**
* 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.
+ * <p>
+ * Flags may be bitwise OR'ed values of
+ * {@link org.libvirt.Domain.MigrateFlags MigrateFlags}.
+ * <p>
* 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.
+ * <p>
+ * If this is not supported by the hypervisor, dname must be {@code null} or
+ * else you will get an exception.
+ * <p>
* 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 tofind the best method.
+ * <p>
+ * If uri is {@code null}, then libvirt will try to find the best method.
+ * <p>
* 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.
+ * <p>
* 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]".
+ * <p>
+ * For Qemu/KVM, the URI should be of the form {@code
"tcp://hostname[:port]"}.
+ * <p>
* 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).
+ * <p>
* Refer also to driver documentation for the particular URIs supported.
- * If set to 0, libvirt will choose a suitable default.
+ * <p>
+ * The maximum bandwidth (in Mbps) that will be used to do
+ * migration can be specified with the bandwidth parameter. If
+ * set to 0, libvirt will choose a suitable default.
+ * <p>
* 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.
+ * error if bandwidth is not 0. To see which features are
+ * supported by the current hypervisor, see
+ * Connect.getCapabilities, /capabilities/host/migration_features.
+ * <p>
* 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.
- *
- * If the hypervisor supports it, @dxml can be used to alter
+ * <p>
+ * If the hypervisor supports it, dxml can be used to alter
* host-specific portions of the domain XML that will be used on
* the destination.
*
@@ -829,11 +845,11 @@ public class Domain {
* @param uri
* (optional) dest hostname/URI as seen from the source host
* @param bandwidth
- * optional) specify migration bandwidth limit in Mbps
- * @return 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
+ * (optional) specify migration bandwidth limit in Mbps
+ * @return the new domain object if the migration was
+ * successful. Note that the new domain object exists in
+ * the scope of the destination connection (dconn).
+ * @throws LibvirtException if the migration fails
*/
public Domain migrate(Connect dconn, long flags, String dxml, String dname, String
uri, long bandwidth) throws LibvirtException {
DomainPointer newPtr = libvirt.virDomainMigrate2(VDP, dconn.VCP, dxml, new
NativeLong(flags), dname, uri, new NativeLong(bandwidth));
--
AV-Test GmbH, Henricistraße 20, 04155 Leipzig, Germany
Phone: +49 341 265 310 19
Web:<http://www.av-test.org>
Eingetragen am / Registered at: Amtsgericht Stendal (HRB 114076)
Geschaeftsfuehrer (CEO): Andreas Marx, Guido Habicht, Maik Morgenstern