summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2010-04-20 11:49:27 +0200
committerDaniel Veillard <veillard@redhat.com>2010-04-20 11:49:27 +0200
commit37f24b06c0f96539f8964e0b41010f4ebe514f5f (patch)
treeaff148090f9c563bfcb63e203d9d0414ae40ab00
parent73d5ccb8d2792ddf11c58e337039dd27f65923e2 (diff)
Fixup python binding for virDomainSnapshot APIs
The generator code was totally wrong for the virDomainSnapshot APIs, not generating the wrapper class, and giving methods the wrong names * generator.py: Set metadata for virDomainSnapshot type & APIs * libvirt-override-api.xml, libvirt-override.c: Hand-code the virDomainSnapshotListNames glue layer
-rwxr-xr-xgenerator.py27
-rw-r--r--libvirt-override-api.xml6
-rw-r--r--libvirt-override.c46
3 files changed, 78 insertions, 1 deletions
diff --git a/generator.py b/generator.py
index cb9f3d9..6f082e8 100755
--- a/generator.py
+++ b/generator.py
@@ -243,6 +243,9 @@ py_types = {
'const virStream *': ('O', "virStream", "virStreamPtr", "virStreamPtr"),
'virDomainSnapshotPtr': ('O', "virDomainSnapshot", "virDomainSnapshotPtr", "virDomainSnapshotPtr"),
+ 'const virDomainSnapshotPtr': ('O', "virDomainSnapshot", "virDomainSnapshotPtr", "virDomainSnapshotPtr"),
+ 'virDomainSnapshot *': ('O', "virDomainSnapshot", "virDomainSnapshotPtr", "virDomainSnapshotPtr"),
+ 'const virDomainSnapshot *': ('O', "virDomainSnapshot", "virDomainSnapshotPtr", "virDomainSnapshotPtr"),
}
py_return_types = {
@@ -277,6 +280,7 @@ skip_impl = (
'virConnectListDefinedStorageVols',
'virConnectListDefinedInterfaces',
'virConnectListNWFilters',
+ 'virDomainSnapshotListNames',
'virConnGetLastError',
'virGetLastError',
'virDomainGetInfo',
@@ -643,6 +647,8 @@ classes_type = {
"virStream *": ("._o", "virStream(self, _obj=%s)", "virStream"),
"virConnectPtr": ("._o", "virConnect(_obj=%s)", "virConnect"),
"virConnect *": ("._o", "virConnect(_obj=%s)", "virConnect"),
+ "virDomainSnapshotPtr": ("._o", "virDomainSnapshot(self,_obj=%s)", "virDomainSnapshot"),
+ "virDomainSnapshot *": ("._o", "virDomainSnapshot(self, _obj=%s)", "virDomainSnapshot"),
}
converter_type = {
@@ -651,7 +657,7 @@ converter_type = {
primary_classes = ["virDomain", "virNetwork", "virInterface",
"virStoragePool", "virStorageVol",
"virConnect", "virNodeDevice", "virSecret",
- "virStream"]
+ "virStream", "virDomainSnapshot"]
classes_ancestor = {
}
@@ -663,6 +669,7 @@ classes_destructors = {
"virStorageVol": "virStorageVolFree",
"virNodeDevice" : "virNodeDeviceFree",
"virSecret": "virSecretFree",
+ "virDomainSnapshot": "virDomainSnapshotFree",
# We hand-craft __del__ for this one
#"virStream": "virStreamFree",
}
@@ -767,6 +774,24 @@ def nameFixup(name, classe, type, file):
elif name[0:12] == "virDomainGet":
func = name[12:]
func = string.lower(func[0:1]) + func[1:]
+ elif name[0:29] == "virDomainSnapshotLookupByName":
+ func = name[9:]
+ func = string.lower(func[0:1]) + func[1:]
+ elif name[0:26] == "virDomainSnapshotListNames":
+ func = name[9:]
+ func = string.lower(func[0:1]) + func[1:]
+ elif name[0:20] == "virDomainSnapshotNum":
+ func = name[9:]
+ func = string.lower(func[0:1]) + func[1:]
+ elif name[0:26] == "virDomainSnapshotCreateXML":
+ func = name[9:]
+ func = string.lower(func[0:1]) + func[1:]
+ elif name[0:24] == "virDomainSnapshotCurrent":
+ func = name[9:]
+ func = string.lower(func[0:1]) + func[1:]
+ elif name[0:17] == "virDomainSnapshot":
+ func = name[17:]
+ func = string.lower(func[0:1]) + func[1:]
elif name[0:9] == "virDomain":
func = name[9:]
func = string.lower(func[0:1]) + func[1:]
diff --git a/libvirt-override-api.xml b/libvirt-override-api.xml
index e95c46a..6f1bc04 100644
--- a/libvirt-override-api.xml
+++ b/libvirt-override-api.xml
@@ -243,5 +243,11 @@
<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='virDomainSnapshotListNames' file='python'>
+ <info>collect the list of snapshots for the given domain</info>
+ <arg name='dom' type='virDomainPtr' info='pointer to the domain'/>
+ <arg name='flags' type='unsigned int' info='flags, curently unused'/>
+ <return type='str *' info='the list of Names of None in case of error'/>
+ </function>
</symbols>
</api>
diff --git a/libvirt-override.c b/libvirt-override.c
index 02bc313..ce21f60 100644
--- a/libvirt-override.c
+++ b/libvirt-override.c
@@ -943,6 +943,51 @@ libvirt_virConnectListDefinedDomains(PyObject *self ATTRIBUTE_UNUSED,
}
static PyObject *
+libvirt_virDomainSnapshotListNames(PyObject *self ATTRIBUTE_UNUSED,
+ PyObject *args) {
+ PyObject *py_retval;
+ char **names = NULL;
+ int c_retval, i;
+ virDomainPtr dom;
+ PyObject *pyobj_dom;
+ int flags;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:virDomainSnapshotListNames", &pyobj_dom, &flags))
+ return(NULL);
+ dom = (virDomainPtr) PyvirDomain_Get(pyobj_dom);
+
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ c_retval = virDomainSnapshotNum(dom, flags);
+ LIBVIRT_END_ALLOW_THREADS;
+ if (c_retval < 0)
+ return VIR_PY_NONE;
+
+ if (c_retval) {
+ names = malloc(sizeof(*names) * c_retval);
+ if (!names)
+ return VIR_PY_NONE;
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ c_retval = virDomainSnapshotListNames(dom, names, c_retval, flags);
+ LIBVIRT_END_ALLOW_THREADS;
+ if (c_retval < 0) {
+ free(names);
+ return VIR_PY_NONE;
+ }
+ }
+ py_retval = PyList_New(c_retval);
+
+ if (names) {
+ for (i = 0;i < c_retval;i++) {
+ PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(names[i]));
+ free(names[i]);
+ }
+ free(names);
+ }
+
+ return(py_retval);
+}
+
+static PyObject *
libvirt_virDomainGetInfo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
PyObject *py_retval;
int c_retval;
@@ -3275,6 +3320,7 @@ static PyMethodDef libvirtMethods[] = {
{(char *) "virConnectListDefinedInterfaces", libvirt_virConnectListDefinedInterfaces, METH_VARARGS, NULL},
{(char *) "virConnectBaselineCPU", libvirt_virConnectBaselineCPU, METH_VARARGS, NULL},
{(char *) "virDomainGetJobInfo", libvirt_virDomainGetJobInfo, METH_VARARGS, NULL},
+ {(char *) "virDomainSnapshotListNames", libvirt_virDomainSnapshotListNames, METH_VARARGS, NULL},
{NULL, NULL, 0, NULL}
};