
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@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