[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [PATCH 4/5] Add virDomainQemuAgentCommand() support function to python module



    Add virDomainQemuAgentCommand() support function to python module.

 generator.py                  |    1 +
 libvirt-qemu-override-api.xml |    8 ++++++++
 libvirt-qemu-override.c       |   31 +++++++++++++++++++++++++++++++
 3 files changed, 40 insertions(+)

diff --git a/python/generator.py b/python/generator.py
index 6559ece..3cec12b 100755
--- a/python/generator.py
+++ b/python/generator.py
@@ -431,6 +431,7 @@ skip_impl = (

 qemu_skip_impl = (
     'virDomainQemuMonitorCommand',
+    'virDomainQemuAgentCommand',
 )


diff --git a/python/libvirt-qemu-override-api.xml b/python/libvirt-qemu-override-api.xml
index d69acea..37759d0 100644
--- a/python/libvirt-qemu-override-api.xml
+++ b/python/libvirt-qemu-override-api.xml
@@ -8,5 +8,13 @@
         <arg name='cmd' type='const char *' info='the command which will be passed to QEMU monitor'/>
         <arg name='flags' type='unsigned int' info='an OR&apos;ed set of virDomainQemuMonitorCommandFlags'/>
       </function>
+      <function name='virDomainQemuAgentCommand' file='python-qemu'>
+        <info>Send a Guest Agent command to domain</info>
+        <return type='str *' info='the command output or None in case of error'/>
+        <arg name='domain' type='virDomainPtr' info='pointer to the domain'/>
+        <arg name='cmd' type='const char *' info='guest agent command on domain'/>
+        <arg name='timeout' type='int' info='timeout seconds'/>
+        <arg name='flags' type='unsigned int' info='execution flags'/>
+      </function>
   </symbols>
 </api>
diff --git a/python/libvirt-qemu-override.c b/python/libvirt-qemu-override.c
index e532416..195aadc 100644
--- a/python/libvirt-qemu-override.c
+++ b/python/libvirt-qemu-override.c
@@ -82,6 +82,36 @@ libvirt_qemu_virDomainQemuMonitorCommand(PyObject *self ATTRIBUTE_UNUSED,
     return py_retval;
 }

+static PyObject *
+libvirt_qemu_virDomainQemuAgentCommand(PyObject *self ATTRIBUTE_UNUSED,
+                                       PyObject *args)
+{
+    PyObject *py_retval;
+    char *result = NULL;
+    virDomainPtr domain;
+    PyObject *pyobj_domain;
+    int timeout;
+    unsigned int flags;
+    char *cmd;
+    int c_retval;
+
+    if (!PyArg_ParseTuple(args, (char *)"Ozii:virDomainQemuAgentCommand",
+                          &pyobj_domain, &cmd, &timeout, &flags))
+        return NULL;
+    domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
+
+    if (domain == NULL)
+        return VIR_PY_NONE;
+    LIBVIRT_BEGIN_ALLOW_THREADS;
+    c_retval = virDomainQemuAgentCommand(domain, cmd, &result, timeout, flags);
+    LIBVIRT_END_ALLOW_THREADS;
+
+    if (c_retval < 0)
+        return VIR_PY_NONE;
+
+    py_retval = PyString_FromString(result);
+    return py_retval;
+}
 /************************************************************************
  *                                                                     *
  *                     The registration stuff                          *
@@ -90,6 +120,7 @@ libvirt_qemu_virDomainQemuMonitorCommand(PyObject *self ATTRIBUTE_UNUSED,
 static PyMethodDef libvirtQemuMethods[] = {
 #include "libvirt-qemu-export.c"
     {(char *) "virDomainQemuMonitorCommand", libvirt_qemu_virDomainQemuMonitorCommand, METH_VARARGS, NULL},
+    {(char *) "virDomainQemuAgentCommand", libvirt_qemu_virDomainQemuAgentCommand, METH_VARARGS, NULL},
     {NULL, NULL, 0, NULL}
 };


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]