]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
python: add bindings for virConnectGetCPUModelNames
authorGiuseppe Scrivano <gscrivan@redhat.com>
Mon, 23 Sep 2013 09:46:04 +0000 (11:46 +0200)
committerEric Blake <eblake@redhat.com>
Mon, 23 Sep 2013 22:59:39 +0000 (16:59 -0600)
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
python/generator.py
python/libvirt-override-api.xml
python/libvirt-override.c
python/libvirt-override.py

index 73107d72b4db9945955258ab2495f5f082573971..12c14f1f6e738e342933818ea54d44cfa0f956e2 100755 (executable)
@@ -250,6 +250,7 @@ lxc_functions_failed = []
 qemu_functions_failed = []
 functions_skipped = [
     "virConnectListDomains",
+    "virConnectGetCPUModelNames",
 ]
 lxc_functions_skipped = []
 qemu_functions_skipped = []
@@ -366,7 +367,6 @@ foreign_encoding_args = (
 # Class methods which are written by hand in libvirt.c but the Python-level
 # code is still automatically generated (so they are not in skip_function()).
 skip_impl = (
-    "virConnectGetCPUModelNames",
     'virConnectGetVersion',
     'virConnectGetLibVersion',
     'virConnectListDomainsID',
index 9a8821528aff51521f26348bb27199e19345003d..1bceb0502e9c20aaacbbe57485a81ed87d45bffe 100644 (file)
       <arg name='xmlCPUs' type='const char **' info='array of XML descriptions of host CPUs'/>
       <arg name='flags' type='unsigned int' info='fine-tuning flags, currently unused, pass 0.'/>
     </function>
+    <function name='virConnectGetCPUModelNames' file='python'>
+      <info>Get the list of supported CPU models.</info>
+      <return type='char *' info='list of supported CPU models'/>
+      <arg name='conn' type='virConnectPtr' info='virConnect connection'/>
+      <arg name='arch' type='const char *' info='arch'/>
+      <arg name='flags' type='unsigned int' info='fine-tuning flags, currently unused, pass 0.'/>
+    </function>
     <function name='virDomainSnapshotListNames' file='python'>
       <info>collect the list of snapshot names for the given domain</info>
       <arg name='dom' type='virDomainPtr' info='pointer to the domain'/>
index cc76c47b046fa9db56faa40bf8d53aa588049f50..e659bae30ad01b315041e29913fb442c348ed0f6 100644 (file)
@@ -2276,6 +2276,58 @@ libvirt_virConnectGetVersion(PyObject *self ATTRIBUTE_UNUSED,
     return PyInt_FromLong(hvVersion);
 }
 
+PyObject *
+libvirt_virConnectGetCPUModelNames(PyObject *self ATTRIBUTE_UNUSED,
+                                   PyObject *args)
+{
+    int c_retval;
+    virConnectPtr conn;
+    PyObject *rv = NULL, *pyobj_conn;
+    char **models = NULL;
+    size_t i;
+    int flags = 0;
+    const char *arch = NULL;
+
+    if (!PyArg_ParseTuple(args, (char *)"Osi:virConnectGetCPUModelNames",
+                          &pyobj_conn, &arch, &flags))
+        return NULL;
+    conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn);
+
+    LIBVIRT_BEGIN_ALLOW_THREADS;
+
+    c_retval = virConnectGetCPUModelNames(conn, arch, &models, flags);
+
+    LIBVIRT_END_ALLOW_THREADS;
+
+    if (c_retval == -1)
+        return VIR_PY_INT_FAIL;
+
+    if ((rv = PyList_New(c_retval)) == NULL)
+        goto error;
+
+    for (i = 0; i < c_retval; i++) {
+        PyObject *str;
+        if ((str = PyString_FromString(models[i])) == NULL)
+            goto error;
+
+        PyList_SET_ITEM(rv, i, str);
+    }
+
+done:
+    if (models) {
+        for (i = 0; i < c_retval; i++)
+            VIR_FREE(models[i]);
+        VIR_FREE(models);
+    }
+
+    return rv;
+
+error:
+    Py_XDECREF(rv);
+    rv = VIR_PY_INT_FAIL;
+    goto done;
+}
+
 static PyObject *
 libvirt_virConnectGetLibVersion(PyObject *self ATTRIBUTE_UNUSED,
                                 PyObject *args)
@@ -7171,6 +7223,7 @@ static PyMethodDef libvirtMethods[] = {
 #include "libvirt-export.c"
     {(char *) "virGetVersion", libvirt_virGetVersion, METH_VARARGS, NULL},
     {(char *) "virConnectGetVersion", libvirt_virConnectGetVersion, METH_VARARGS, NULL},
+    {(char *) "virConnectGetCPUModelNames", libvirt_virConnectGetCPUModelNames, METH_VARARGS, NULL},
     {(char *) "virConnectGetLibVersion", libvirt_virConnectGetLibVersion, METH_VARARGS, NULL},
     {(char *) "virConnectOpenAuth", libvirt_virConnectOpenAuth, METH_VARARGS, NULL},
     {(char *) "virConnectListDomainsID", libvirt_virConnectListDomainsID, METH_VARARGS, NULL},
index ccfec4825ae25f2cf2230c3dd586a66efeaeb711..3471a43797e6f64b5f8baac406b14e1bf3f31686 100644 (file)
@@ -207,3 +207,14 @@ def virEventAddTimeout(timeout, cb, opaque):
     ret = libvirtmod.virEventAddTimeout(timeout, cbData)
     if ret == -1: raise libvirtError ('virEventAddTimeout() failed')
     return ret
+
+def getCPUModelNames(conn, arch, flags=0):
+    """
+    get the list of supported CPU models.
+    @conn: virConnect connection
+    @arch: Architecture
+    @flags: extra flags; not used yet, so callers should always pass 0.
+    """
+    ret = libvirtmod.virConnectGetCPUModelNames(conn._o, arch, flags)
+    if ret == None: raise libvirtError ('virConnectGetCPUModelNames() failed', conn=self)
+    return ret