[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