mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-08-30 05:50:08 +03:00
* src/libvirt.c: fixing a bug before the release of 0.0.5
* python/generator.py python/libvir.c python/libvirt-python-api.xml: also fixing the binding for getting a domain UUID * python/tests/Makefile.am python/tests/uuid.py: added a test for the new UUID API Daniel
This commit is contained in:
@ -1,3 +1,11 @@
|
|||||||
|
Thu Feb 23 06:24:46 EST 2006 Daniel Veillard <veillard@redhat.com>
|
||||||
|
|
||||||
|
* src/libvirt.c: fixing a bug before the release of 0.0.5
|
||||||
|
* python/generator.py python/libvir.c python/libvirt-python-api.xml:
|
||||||
|
also fixing the binding for getting a domain UUID
|
||||||
|
* python/tests/Makefile.am python/tests/uuid.py: added a test
|
||||||
|
for the new UUID API
|
||||||
|
|
||||||
Thu Feb 23 11:41:06 CET 2006 Daniel Veillard <veillard@redhat.com>
|
Thu Feb 23 11:41:06 CET 2006 Daniel Veillard <veillard@redhat.com>
|
||||||
|
|
||||||
* NEWS configure.in docs/libvir.html docs/news.html: preparing the
|
* NEWS configure.in docs/libvir.html docs/news.html: preparing the
|
||||||
|
@ -29,15 +29,15 @@
|
|||||||
<includes>
|
<includes>
|
||||||
</includes>
|
</includes>
|
||||||
<uses>
|
<uses>
|
||||||
<function line='30' file='libvirt' name='virDomainGetInfo'/>
|
<function line='31' file='libvirt' name='virDomainGetInfo'/>
|
||||||
<function line='110' file='libvirt' name='virConnectListDomains'/>
|
<function line='111' file='libvirt' name='virConnectListDomains'/>
|
||||||
<function line='92' file='libvirt' name='virDomainFree'/>
|
<function line='93' file='libvirt' name='virDomainFree'/>
|
||||||
<function line='72' file='libvirt' name='virDomainResume'/>
|
<function line='73' file='libvirt' name='virDomainResume'/>
|
||||||
<function line='49' file='libvirt' name='virDomainLookupByID'/>
|
<function line='50' file='libvirt' name='virDomainLookupByID'/>
|
||||||
<function line='131' file='libvirt' name='virConnectClose'/>
|
<function line='132' file='libvirt' name='virConnectClose'/>
|
||||||
<struct line='27' file='libvirt' name='virDomainInfo'/>
|
<struct line='28' file='libvirt' name='virDomainInfo'/>
|
||||||
<function line='61' file='libvirt' name='virDomainSuspend'/>
|
<function line='62' file='libvirt' name='virDomainSuspend'/>
|
||||||
<function line='99' file='libvirt' name='virConnectOpenReadOnly'/>
|
<function line='100' file='libvirt' name='virConnectOpenReadOnly'/>
|
||||||
</uses>
|
</uses>
|
||||||
</example>
|
</example>
|
||||||
<symbols>
|
<symbols>
|
||||||
|
@ -203,7 +203,9 @@ def enum(type, name, value):
|
|||||||
#######################################################################
|
#######################################################################
|
||||||
|
|
||||||
functions_failed = []
|
functions_failed = []
|
||||||
functions_skipped = []
|
functions_skipped = [
|
||||||
|
"virConnectListDomains" , "virDomainGetUUID"
|
||||||
|
]
|
||||||
|
|
||||||
skipped_modules = {
|
skipped_modules = {
|
||||||
}
|
}
|
||||||
@ -259,6 +261,7 @@ foreign_encoding_args = (
|
|||||||
skip_impl = (
|
skip_impl = (
|
||||||
'virConnectListDomainsID',
|
'virConnectListDomainsID',
|
||||||
'virDomainGetInfo',
|
'virDomainGetInfo',
|
||||||
|
'virDomainGetUUID',
|
||||||
)
|
)
|
||||||
|
|
||||||
def skip_function(name):
|
def skip_function(name):
|
||||||
@ -568,6 +571,8 @@ def nameFixup(name, classe, type, file):
|
|||||||
func = name
|
func = name
|
||||||
if func == "iD":
|
if func == "iD":
|
||||||
func = "ID"
|
func = "ID"
|
||||||
|
if func == "uUID":
|
||||||
|
func = "UUID"
|
||||||
if func == "oSType":
|
if func == "oSType":
|
||||||
func = "OSType"
|
func = "OSType"
|
||||||
if func == "xMLDesc":
|
if func == "xMLDesc":
|
||||||
|
@ -100,6 +100,31 @@ libvirt_virDomainGetInfo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
|
|||||||
return(py_retval);
|
return(py_retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyObject *
|
||||||
|
libvirt_virDomainGetUUID(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
|
||||||
|
PyObject *py_retval;
|
||||||
|
unsigned char uuid[16];
|
||||||
|
virDomainPtr domain;
|
||||||
|
PyObject *pyobj_domain;
|
||||||
|
virDomainInfo info;
|
||||||
|
|
||||||
|
if (!PyArg_ParseTuple(args, (char *)"O:virDomainGetUUID", &pyobj_domain))
|
||||||
|
return(NULL);
|
||||||
|
domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
|
||||||
|
|
||||||
|
if (domain == NULL) {
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return(Py_None);
|
||||||
|
}
|
||||||
|
if (virDomainGetUUID(domain, &uuid[0]) < 0) {
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return(Py_None);
|
||||||
|
}
|
||||||
|
py_retval = PyString_FromStringAndSize((char *) &uuid[0], 16);
|
||||||
|
|
||||||
|
return(py_retval);
|
||||||
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* *
|
* *
|
||||||
* The registration stuff *
|
* The registration stuff *
|
||||||
@ -111,6 +136,7 @@ static PyMethodDef libvirtMethods[] = {
|
|||||||
{(char *) "virConnectClose", libvirt_virConnectClose, METH_VARARGS, NULL},
|
{(char *) "virConnectClose", libvirt_virConnectClose, METH_VARARGS, NULL},
|
||||||
{(char *) "virConnectListDomainsID", libvirt_virConnectListDomainsID, METH_VARARGS, NULL},
|
{(char *) "virConnectListDomainsID", libvirt_virConnectListDomainsID, METH_VARARGS, NULL},
|
||||||
{(char *) "virDomainGetInfo", libvirt_virDomainGetInfo, METH_VARARGS, NULL},
|
{(char *) "virDomainGetInfo", libvirt_virDomainGetInfo, METH_VARARGS, NULL},
|
||||||
|
{(char *) "virDomainGetUUID", libvirt_virDomainGetUUID, METH_VARARGS, NULL},
|
||||||
{NULL, NULL, 0, NULL}
|
{NULL, NULL, 0, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -6,10 +6,15 @@
|
|||||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||||
<return type='int *' info="the list of ID or None in case of error"/>
|
<return type='int *' info="the list of ID or None in case of error"/>
|
||||||
</function>
|
</function>
|
||||||
<function name='virDomainGetInfo' file='libvir' module='libvir'>
|
<function name='virDomainGetInfo' file='libvir' module='python'>
|
||||||
<info>Extract information about a domain. Note that if the connection used to get the domain is limited only a partial set of the informations can be extracted.</info>
|
<info>Extract information about a domain. Note that if the connection used to get the domain is limited only a partial set of the informations can be extracted.</info>
|
||||||
<return type='int *' info='the list of informations or None in case of error'/>
|
<return type='int *' info='the list of informations or None in case of error'/>
|
||||||
<arg name='domain' type='virDomainPtr' info='a domain object'/>
|
<arg name='domain' type='virDomainPtr' info='a domain object'/>
|
||||||
</function>
|
</function>
|
||||||
|
<function name='virDomainGetUUID' file='libvir' module='python'>
|
||||||
|
<info>Extract the UUID unique Identifier of a domain.</info>
|
||||||
|
<return type='char *' info='the 16 bytes string or None in case of error'/>
|
||||||
|
<arg name='domain' type='virDomainPtr' info='a domain object'/>
|
||||||
|
</function>
|
||||||
</symbols>
|
</symbols>
|
||||||
</api>
|
</api>
|
||||||
|
@ -2,7 +2,8 @@ EXAMPLE_DIR = $(datadir)/doc/libvirt-python-$(LIBVIRT_VERSION)/examples
|
|||||||
|
|
||||||
PYTESTS= \
|
PYTESTS= \
|
||||||
basic.py \
|
basic.py \
|
||||||
create.py
|
create.py \
|
||||||
|
uuid.py
|
||||||
|
|
||||||
EXTRA_DIST = $(PYTESTS)
|
EXTRA_DIST = $(PYTESTS)
|
||||||
|
|
||||||
|
39
python/tests/uuid.py
Executable file
39
python/tests/uuid.py
Executable file
@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/python -u
|
||||||
|
import libvirt
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
if not os.access("/proc/xen", os.R_OK):
|
||||||
|
print 'System is not running a Xen kernel'
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
conn = libvirt.openReadOnly(None)
|
||||||
|
if conn == None:
|
||||||
|
print 'Failed to open connection to the hypervisor'
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
ids = conn.listDomainsID()
|
||||||
|
if ids == None or len(ids) == 0:
|
||||||
|
print 'Failed to list running domains'
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
id = ids[-1]
|
||||||
|
|
||||||
|
dom = conn.lookupByID(id)
|
||||||
|
if dom == None:
|
||||||
|
print 'Failed to find the domain %d'
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
name0 = dom.name()
|
||||||
|
uuid = dom.UUID()
|
||||||
|
print "Using domain %s" % (name0)
|
||||||
|
dom2 = conn.lookupByUUID(uuid)
|
||||||
|
if dom2 == None:
|
||||||
|
print 'Failed to lookup domain %d based on its UUID'
|
||||||
|
sys.exit(1)
|
||||||
|
if dom2.name() != name0:
|
||||||
|
print 'lookup of %s based on UUID brings a different domain %s' % (
|
||||||
|
name0, dom2.name())
|
||||||
|
|
||||||
|
print "OK"
|
||||||
|
sys.exit(0)
|
@ -103,6 +103,7 @@ virConnectOpen(const char *name) {
|
|||||||
ret = (virConnectPtr) malloc(sizeof(virConnect));
|
ret = (virConnectPtr) malloc(sizeof(virConnect));
|
||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
goto failed;
|
goto failed;
|
||||||
|
memset(ret, 0, sizeof(virConnect));
|
||||||
ret->magic = VIR_CONNECT_MAGIC;
|
ret->magic = VIR_CONNECT_MAGIC;
|
||||||
ret->handle = handle;
|
ret->handle = handle;
|
||||||
ret->xshandle = xshandle;
|
ret->xshandle = xshandle;
|
||||||
@ -158,6 +159,7 @@ virConnectOpenReadOnly(const char *name) {
|
|||||||
ret = (virConnectPtr) malloc(sizeof(virConnect));
|
ret = (virConnectPtr) malloc(sizeof(virConnect));
|
||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
goto failed;
|
goto failed;
|
||||||
|
memset(ret, 0, sizeof(virConnect));
|
||||||
ret->magic = VIR_CONNECT_MAGIC;
|
ret->magic = VIR_CONNECT_MAGIC;
|
||||||
ret->handle = handle;
|
ret->handle = handle;
|
||||||
ret->xshandle = xshandle;
|
ret->xshandle = xshandle;
|
||||||
@ -644,6 +646,7 @@ virDomainLookupByID(virConnectPtr conn, int id) {
|
|||||||
if (ret == NULL) {
|
if (ret == NULL) {
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
memset(ret, 0, sizeof(virDomain));
|
||||||
ret->magic = VIR_DOMAIN_MAGIC;
|
ret->magic = VIR_DOMAIN_MAGIC;
|
||||||
ret->conn = conn;
|
ret->conn = conn;
|
||||||
ret->handle = id;
|
ret->handle = id;
|
||||||
@ -719,10 +722,12 @@ virDomainLookupByUUID(virConnectPtr conn, const unsigned char *uuid) {
|
|||||||
free(name);
|
free(name);
|
||||||
return(NULL);
|
return(NULL);
|
||||||
}
|
}
|
||||||
|
memset(ret, 0, sizeof(virDomain));
|
||||||
ret->magic = VIR_DOMAIN_MAGIC;
|
ret->magic = VIR_DOMAIN_MAGIC;
|
||||||
ret->conn = conn;
|
ret->conn = conn;
|
||||||
ret->handle = id;
|
ret->handle = id;
|
||||||
ret->name = name;
|
ret->name = name;
|
||||||
|
ret->path = 0;
|
||||||
memcpy(ret->uuid, uuid, 16);
|
memcpy(ret->uuid, uuid, 16);
|
||||||
|
|
||||||
return(ret);
|
return(ret);
|
||||||
@ -794,6 +799,7 @@ do_found:
|
|||||||
ret = (virDomainPtr) malloc(sizeof(virDomain));
|
ret = (virDomainPtr) malloc(sizeof(virDomain));
|
||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
goto done;
|
goto done;
|
||||||
|
memset(ret, 0, sizeof(virDomain));
|
||||||
ret->magic = VIR_DOMAIN_MAGIC;
|
ret->magic = VIR_DOMAIN_MAGIC;
|
||||||
ret->conn = conn;
|
ret->conn = conn;
|
||||||
ret->handle = id;
|
ret->handle = id;
|
||||||
|
Reference in New Issue
Block a user