2005-12-19 16:34:11 +00:00
/*
* libvir . c : this modules implements the main part of the glue of the
* libvir library and the Python interpreter . It provides the
* entry points where an automatically generated stub is
* unpractical
*
* Copyright ( C ) 2005 Red Hat , Inc .
*
* Daniel Veillard < veillard @ redhat . com >
*/
# include <Python.h>
2006-02-09 17:45:11 +00:00
# include <libvirt.h>
# include "libvirt_wrap.h"
# include "libvirt-py.h"
2005-12-19 16:34:11 +00:00
void initlibvirmod ( void ) ;
2006-01-28 20:24:55 +00:00
static PyObject *
2006-02-09 17:45:11 +00:00
libvirt_virDomainFree ( PyObject * self ATTRIBUTE_UNUSED , PyObject * args ) {
2006-01-28 20:24:55 +00:00
PyObject * py_retval ;
int c_retval ;
virDomainPtr domain ;
PyObject * pyobj_domain ;
if ( ! PyArg_ParseTuple ( args , ( char * ) " O:virDomainFree " , & pyobj_domain ) )
return ( NULL ) ;
domain = ( virDomainPtr ) PyvirDomain_Get ( pyobj_domain ) ;
c_retval = virDomainFree ( domain ) ;
2006-02-09 17:45:11 +00:00
py_retval = libvirt_intWrap ( ( int ) c_retval ) ;
2006-01-28 20:24:55 +00:00
return ( py_retval ) ;
}
static PyObject *
2006-02-09 17:45:11 +00:00
libvirt_virConnectClose ( PyObject * self ATTRIBUTE_UNUSED , PyObject * args ) {
2006-01-28 20:24:55 +00:00
PyObject * py_retval ;
int c_retval ;
virConnectPtr conn ;
PyObject * pyobj_conn ;
if ( ! PyArg_ParseTuple ( args , ( char * ) " O:virConnectClose " , & pyobj_conn ) )
return ( NULL ) ;
conn = ( virConnectPtr ) PyvirConnect_Get ( pyobj_conn ) ;
c_retval = virConnectClose ( conn ) ;
2006-02-09 17:45:11 +00:00
py_retval = libvirt_intWrap ( ( int ) c_retval ) ;
2006-01-28 20:24:55 +00:00
return ( py_retval ) ;
}
2006-01-31 10:24:12 +00:00
static PyObject *
2006-02-09 17:45:11 +00:00
libvirt_virConnectListDomainsID ( PyObject * self ATTRIBUTE_UNUSED ,
2006-01-31 10:24:12 +00:00
PyObject * args ) {
PyObject * py_retval ;
int ids [ 500 ] , c_retval , i ;
virConnectPtr conn ;
PyObject * pyobj_conn ;
if ( ! PyArg_ParseTuple ( args , ( char * ) " O:virConnectListDomains " , & pyobj_conn ) )
return ( NULL ) ;
conn = ( virConnectPtr ) PyvirConnect_Get ( pyobj_conn ) ;
c_retval = virConnectListDomains ( conn , & ids [ 0 ] , 500 ) ;
if ( c_retval < 0 ) {
Py_INCREF ( Py_None ) ;
return ( Py_None ) ;
}
py_retval = PyList_New ( c_retval ) ;
for ( i = 0 ; i < c_retval ; i + + ) {
2006-02-09 17:45:11 +00:00
PyList_SetItem ( py_retval , i , libvirt_intWrap ( ids [ i ] ) ) ;
2006-01-31 10:24:12 +00:00
}
return ( py_retval ) ;
}
static PyObject *
2006-02-09 17:45:11 +00:00
libvirt_virDomainGetInfo ( PyObject * self ATTRIBUTE_UNUSED , PyObject * args ) {
2006-01-31 10:24:12 +00:00
PyObject * py_retval ;
int c_retval ;
virDomainPtr domain ;
PyObject * pyobj_domain ;
virDomainInfo info ;
if ( ! PyArg_ParseTuple ( args , ( char * ) " O:virDomainGetInfo " , & pyobj_domain ) )
return ( NULL ) ;
domain = ( virDomainPtr ) PyvirDomain_Get ( pyobj_domain ) ;
c_retval = virDomainGetInfo ( domain , & info ) ;
if ( c_retval < 0 ) {
Py_INCREF ( Py_None ) ;
return ( Py_None ) ;
}
py_retval = PyList_New ( 5 ) ;
2006-02-09 17:45:11 +00:00
PyList_SetItem ( py_retval , 0 , libvirt_intWrap ( ( int ) info . state ) ) ;
PyList_SetItem ( py_retval , 1 , libvirt_longWrap ( ( long ) info . maxMem ) ) ;
PyList_SetItem ( py_retval , 2 , libvirt_longWrap ( ( long ) info . memory ) ) ;
PyList_SetItem ( py_retval , 3 , libvirt_intWrap ( ( int ) info . nrVirtCpu ) ) ;
2006-01-31 10:24:12 +00:00
PyList_SetItem ( py_retval , 4 ,
2006-02-09 17:45:11 +00:00
libvirt_longlongWrap ( ( unsigned long long ) info . cpuTime ) ) ;
2006-01-31 10:24:12 +00:00
return ( py_retval ) ;
}
2006-02-23 11:26:17 +00:00
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 ) ;
}
2005-12-19 16:34:11 +00:00
/************************************************************************
* *
* The registration stuff *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2006-02-09 17:45:11 +00:00
static PyMethodDef libvirtMethods [ ] = {
# include "libvirt-export.c"
{ ( char * ) " virDomainFree " , libvirt_virDomainFree , METH_VARARGS , NULL } ,
{ ( char * ) " virConnectClose " , libvirt_virConnectClose , METH_VARARGS , NULL } ,
{ ( char * ) " virConnectListDomainsID " , libvirt_virConnectListDomainsID , METH_VARARGS , NULL } ,
{ ( char * ) " virDomainGetInfo " , libvirt_virDomainGetInfo , METH_VARARGS , NULL } ,
2006-02-23 11:26:17 +00:00
{ ( char * ) " virDomainGetUUID " , libvirt_virDomainGetUUID , METH_VARARGS , NULL } ,
2005-12-19 16:34:11 +00:00
{ NULL , NULL , 0 , NULL }
} ;
void
2006-02-10 10:31:50 +00:00
initlibvirtmod ( void )
2005-12-19 16:34:11 +00:00
{
static int initialized = 0 ;
if ( initialized ! = 0 )
return ;
/* intialize the python extension module */
2006-02-09 17:45:11 +00:00
Py_InitModule ( ( char * ) " libvirtmod " , libvirtMethods ) ;
2005-12-19 16:34:11 +00:00
initialized = 1 ;
}