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 <[email protected]>
> ---
> 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
--
libvir-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list