]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
agent: add virDrvDomainQemuAgentCommand prototype for drivers.
authorMATSUDA Daiki <matsudadik@intellilink.co.jp>
Thu, 23 Aug 2012 03:29:23 +0000 (12:29 +0900)
committerDaniel Veillard <veillard@redhat.com>
Thu, 23 Aug 2012 10:13:15 +0000 (18:13 +0800)
Add virDrvDomainQemuAgentCommand prototype for drivers.
Add virDomainQemuAgentCommand() for virDrvDomainQemuAgentCommand.

Signed-off-by: MATSUDA Daiki <matsudadik@intellilink.co.jp>
include/libvirt/libvirt-qemu.h
python/generator.py
src/driver.h
src/libvirt-qemu.c
src/libvirt_qemu.syms

index 93386ca0b7c162bc86205a763be0d462a37fa22a..d7f8703f7c067a5686ba2f4235ab42af1815b5cc 100644 (file)
@@ -51,6 +51,9 @@ typedef enum {
     VIR_DOMAIN_QEMU_AGENT_COMMAND_NOWAIT = 0,
 } virDomainQemuAgentCommandTimeoutValues;
 
+char *virDomainQemuAgentCommand(virDomainPtr domain, const char *cmd,
+                                int timeout, unsigned int flags);
+
 # ifdef __cplusplus
 }
 # endif
index 1f8719532ddcba77c23cfdb17a6485f2cec24811..7beb361256a8dd24c62eed561eba2823a6c9b0de 100755 (executable)
@@ -431,6 +431,7 @@ skip_impl = (
 
 qemu_skip_impl = (
     'virDomainQemuMonitorCommand',
+    'virDomainQemuAgentCommand',
 )
 
 
index 5fa2d365708630f4ffa927b92db9343af1dfe42c..ccb01dc8c054beffabf51d166217e405ad5be1ec 100644 (file)
@@ -701,6 +701,9 @@ typedef int
 typedef int
     (*virDrvDomainQemuMonitorCommand)(virDomainPtr domain, const char *cmd,
                                       char **result, unsigned int flags);
+typedef char *
+    (*virDrvDomainQemuAgentCommand)(virDomainPtr domain, const char *cmd,
+                                    int timeout, unsigned int flags);
 
 /* Choice of unsigned int rather than pid_t is intentional.  */
 typedef virDomainPtr
@@ -1064,6 +1067,7 @@ struct _virDriver {
     virDrvDomainGetDiskErrors           domainGetDiskErrors;
     virDrvDomainSetMetadata             domainSetMetadata;
     virDrvDomainGetMetadata             domainGetMetadata;
+    virDrvDomainQemuAgentCommand        qemuDomainArbitraryAgentCommand;
 };
 
 typedef int
index 78480bbf453279206215b36641d42f3771e91453..7a45242543cf168edbc77bf5d8e075a84a5844a4 100644 (file)
@@ -185,3 +185,57 @@ error:
     virDispatchError(conn);
     return NULL;
 }
+
+/**
+ * virDomainQemuAgentCommand:
+ * @domain: a domain object
+ * @cmd: the guest agent command string
+ * @timeout: timeout seconds
+ * @flags: execution flags
+ *
+ * Execute an arbitrary Guest Agent command.
+ *
+ * Issue @cmd to the guest agent running in @domain.
+ * @timeout must be -2, -1, 0 or positive.
+ * VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK(-2): meaning to block forever waiting for
+ * a result.
+ * VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT(-1): use default timeout value.
+ * VIR_DOMAIN_QEMU_AGENT_COMMAND_NOWAIT(0): does not wait.
+ * positive value: wait for @timeout seconds
+ *
+ * Returns strings if success, NULL in failure.
+ */
+char *
+virDomainQemuAgentCommand(virDomainPtr domain,
+                          const char *cmd,
+                          int timeout,
+                          unsigned int flags)
+{
+    virConnectPtr conn;
+
+    VIR_DEBUG("domain=%p, cmd=%s, timeout=%d, flags=%x",
+              domain, cmd, timeout, flags);
+
+    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
+        virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
+        virDispatchError(NULL);
+        return NULL;
+    }
+    if (domain->conn->flags & VIR_CONNECT_RO) {
+        virLibDomainError(NULL, VIR_ERR_OPERATION_DENIED, __FUNCTION__);
+        return NULL;
+    }
+
+    conn = domain->conn;
+
+    if (conn->driver->qemuDomainArbitraryAgentCommand) {
+        return conn->driver->qemuDomainArbitraryAgentCommand(domain, cmd,
+                                                             timeout, flags);
+    }
+
+    virLibConnError(conn, VIR_ERR_NO_SUPPORT, __FUNCTION__);
+
+    /* Copy to connection error object for back compatibility */
+    virDispatchError(conn);
+    return NULL;
+}
index 8447730fd0ee6f33160647dd48e217ccdfa06b1b..6e11509972da9fa5bf3d572048830ee1eddd7d82 100644 (file)
@@ -19,3 +19,8 @@ LIBVIRT_QEMU_0.9.4 {
     global:
         virDomainQemuAttach;
 } LIBVIRT_QEMU_0.8.3;
+
+LIBVIRT_QEMU_0.10.1 {
+    global:
+        virDomainQemuAgentCommand;
+} LIBVIRT_QEMU_0.9.4;