[libvirt] [PATCH java] Add support for Libvirt Qemu Library
Wido den Hollander
wido at widodh.nl
Fri Nov 13 13:59:52 UTC 2015
On 12-11-15 23:04, Claudio Bley wrote:
> Hi.
>
> At Mon, 9 Nov 2015 13:48:18 +0100,
> Wido den Hollander wrote:
>>
>> This allows us to send Qemu Guest Agent commands to running domains.
>>
>> Signed-off-by: Wido den Hollander <wido at widodh.nl>
>> ---
>> src/main/java/org/libvirt/Domain.java | 36 ++++++++++++++++++++++++++
>> src/main/java/org/libvirt/Library.java | 3 +++
>> src/main/java/org/libvirt/jna/LibvirtQemu.java | 16 ++++++++++++
>> 3 files changed, 55 insertions(+)
>> create mode 100644 src/main/java/org/libvirt/jna/LibvirtQemu.java
>>
>> diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java
>> index 83a500c..c24df48 100644
>> --- a/src/main/java/org/libvirt/Domain.java
>> +++ b/src/main/java/org/libvirt/Domain.java
>> @@ -141,6 +143,23 @@ public class Domain {
>> public static final int NO_METADATA = (1 << 4);
>> }
>>
>> + static final class QemuAgentFlags {
>> + /**
>> + * Do not wait for a result
>> + */
>> + public static final int VIR_DOMAIN_QEMU_AGENT_COMMAND_NOWAIT = 0;
>> +
>> + /**
>> + * Use default timeout value
>> + */
>> + public static final int VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT = -1;
>> +
>> + /**
>> + * Block forever waiting for a result
>> + */
>> + public static final int VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK = -2;
>> + }
>> +
>
> I would much prefer an Enum instead of some integer constants. Also,
> those flags are currently of little use since the QemuAgentFlags class
> is package private.
>
> Also, which version are you targeting? Seems there's also a shutdown flag:
>
> typedef enum {
> VIR_DOMAIN_QEMU_AGENT_COMMAND_MIN = -2,
> VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK = -2,
> VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT = -1,
> VIR_DOMAIN_QEMU_AGENT_COMMAND_NOWAIT = 0,
> VIR_DOMAIN_QEMU_AGENT_COMMAND_SHUTDOWN = 60,
> } virDomainQemuAgentCommandTimeoutValues;
>
> And why are those flags mixed up? Seems like a bad idea to me. Are
> those "values" intended to go into the "timeout" parameter or into the
> flags?
>
> And since which release is this actually available in libvirt?
>
Hmm, I looked at the master branch on Git. I didn't find the ones you
send. Let me work on that.
>> diff --git a/src/main/java/org/libvirt/Library.java b/src/main/java/org/libvirt/Library.java
>> index 8e054c6..30f15be 100644
>> --- a/src/main/java/org/libvirt/Library.java
>> +++ b/src/main/java/org/libvirt/Library.java
>> @@ -2,6 +2,7 @@ package org.libvirt;
>>
>> import org.libvirt.jna.Libvirt;
>> import org.libvirt.jna.Libvirt.VirEventTimeoutCallback;
>> +import org.libvirt.jna.LibvirtQemu;
>> import org.libvirt.jna.CString;
>> import static org.libvirt.ErrorHandler.processError;
>>
>> @@ -34,6 +35,7 @@ public final class Library {
>> };
>>
>> final static Libvirt libvirt;
>> + final static LibvirtQemu libvirtqemu;
>>
>> // an empty string array constant
>> // prefer this over creating empty arrays dynamically.
>> @@ -47,6 +49,7 @@ public final class Library {
>> } catch (Exception e) {
>> e.printStackTrace();
>> }
>> + libvirtqemu = LibvirtQemu.INSTANCE;
>> }
>
> I doubt that we always should load that library. In case the user has
> an old version this would fail, wouldn't it?
>
Yes, that would indeed fail. What do you suggest? Load when required? My
JNA foo is not that good to get this implemented.
Wido
> --
> Claudio
>
More information about the libvir-list
mailing list