2 * libvir.c: this modules implements the main part of the glue of the
3 * libvir library and the Python interpreter. It provides the
4 * entry points where an automatically generated stub is
7 * Copyright (C) 2005-2019 Red Hat, Inc.
9 * Daniel Veillard <veillard@redhat.com>
12 /* Horrible kludge to work around even more horrible name-space pollution
13 via Python.h. That file includes /usr/include/python3.x/pyconfig*.h,
14 which has over 180 autoconf-style HAVE_* definitions. Shame on them. */
17 /* We want to see *_LAST enums. */
18 #define VIR_ENUM_SENTINELS
20 #define PY_SSIZE_T_CLEAN
25 #include <libvirt/libvirt.h>
26 #include <libvirt/virterror.h>
28 #include "typewrappers.h"
29 #include "build/libvirt.h"
30 #include "libvirt-utils.h"
33 extern PyObject
*PyInit_libvirtmod(void);
35 extern PyObject
*PyInit_cygvirtmod(void);
39 # define DEBUG_ERROR 1
43 # define DEBUG(fmt, ...) \
44 printf(fmt, __VA_ARGS__)
46 # define DEBUG(fmt, ...) \
47 while (0) {printf(fmt, __VA_ARGS__);}
52 * Utility function to retrieve the number of node CPUs present.
53 * It first tries virNodeGetCPUMap, which will return the
54 * number reliably, if available.
55 * As a fallback and for compatibility with backlevel libvirt
56 * versions virNodeGetInfo will be called to calculate the
57 * CPU number, which has the potential to return a too small
58 * number if some host CPUs are offline.
61 getPyNodeCPUCount(virConnectPtr conn
)
65 #if LIBVIR_CHECK_VERSION(1, 0, 0)
66 LIBVIRT_BEGIN_ALLOW_THREADS
;
67 i_retval
= virNodeGetCPUMap(conn
, NULL
, NULL
, 0);
68 LIBVIRT_END_ALLOW_THREADS
;
69 #else /* fallback: use nodeinfo */
72 LIBVIRT_BEGIN_ALLOW_THREADS
;
73 i_retval
= virNodeGetInfo(conn
, &nodeinfo
);
74 LIBVIRT_END_ALLOW_THREADS
;
77 i_retval
= VIR_NODEINFO_MAXCPUS(nodeinfo
);
78 #endif /* LIBVIR_CHECK_VERSION(1, 0, 0) */
83 /************************************************************************
87 ************************************************************************/
90 libvirt_virDomainBlockStats(PyObject
*self ATTRIBUTE_UNUSED
,
94 PyObject
*pyobj_domain
;
97 virDomainBlockStatsStruct stats
;
100 if (!PyArg_ParseTuple(args
, (char *)"Oz:virDomainBlockStats",
101 &pyobj_domain
, &path
))
103 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
105 LIBVIRT_BEGIN_ALLOW_THREADS
;
106 c_retval
= virDomainBlockStats(domain
, path
, &stats
, sizeof(stats
));
107 LIBVIRT_END_ALLOW_THREADS
;
112 /* convert to a Python tuple of long objects */
113 if ((info
= PyTuple_New(5)) == NULL
)
116 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_longlongWrap(stats
.rd_req
), error
);
117 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_longlongWrap(stats
.rd_bytes
), error
);
118 VIR_PY_TUPLE_SET_GOTO(info
, 2, libvirt_longlongWrap(stats
.wr_req
), error
);
119 VIR_PY_TUPLE_SET_GOTO(info
, 3, libvirt_longlongWrap(stats
.wr_bytes
), error
);
120 VIR_PY_TUPLE_SET_GOTO(info
, 4, libvirt_longlongWrap(stats
.errs
), error
);
130 libvirt_virDomainBlockStatsFlags(PyObject
*self ATTRIBUTE_UNUSED
,
134 PyObject
*pyobj_domain
;
135 PyObject
*ret
= NULL
;
139 virTypedParameterPtr params
;
142 if (!PyArg_ParseTuple(args
, (char *)"OzI:virDomainBlockStatsFlags",
143 &pyobj_domain
, &path
, &flags
))
145 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
147 LIBVIRT_BEGIN_ALLOW_THREADS
;
148 i_retval
= virDomainBlockStatsFlags(domain
, path
, NULL
, &nparams
, flags
);
149 LIBVIRT_END_ALLOW_THREADS
;
157 if (VIR_ALLOC_N(params
, nparams
) < 0)
158 return PyErr_NoMemory();
160 LIBVIRT_BEGIN_ALLOW_THREADS
;
161 i_retval
= virDomainBlockStatsFlags(domain
, path
, params
, &nparams
, flags
);
162 LIBVIRT_END_ALLOW_THREADS
;
169 ret
= getPyVirTypedParameter(params
, nparams
);
172 virTypedParamsFree(params
, nparams
);
177 libvirt_virDomainGetCPUStats(PyObject
*self ATTRIBUTE_UNUSED
,
181 PyObject
*pyobj_domain
, *totalbool
;
182 PyObject
*ret
= NULL
;
183 PyObject
*error
= NULL
;
184 int ncpus
= -1, start_cpu
= 0;
185 int sumparams
= 0, nparams
= -1;
190 virTypedParameterPtr params
= NULL
, cpuparams
;
192 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainGetCPUStats",
193 &pyobj_domain
, &totalbool
, &flags
))
195 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
197 if (libvirt_boolUnwrap(totalbool
, &totalflag
) < 0)
200 if ((ret
= PyList_New(0)) == NULL
)
204 LIBVIRT_BEGIN_ALLOW_THREADS
;
205 ncpus
= virDomainGetCPUStats(domain
, NULL
, 0, 0, 0, flags
);
206 LIBVIRT_END_ALLOW_THREADS
;
213 LIBVIRT_BEGIN_ALLOW_THREADS
;
214 nparams
= virDomainGetCPUStats(domain
, NULL
, 0, 0, 1, flags
);
215 LIBVIRT_END_ALLOW_THREADS
;
222 sumparams
= nparams
* MIN(ncpus
, 128);
224 if (VIR_ALLOC_N(params
, sumparams
) < 0) {
225 error
= PyErr_NoMemory();
230 int queried_ncpus
= MIN(ncpus
, 128);
233 LIBVIRT_BEGIN_ALLOW_THREADS
;
234 i_retval
= virDomainGetCPUStats(domain
, params
,
236 queried_ncpus
, flags
);
237 LIBVIRT_END_ALLOW_THREADS
;
247 for (i
= 0; i
< queried_ncpus
; i
++) {
248 cpuparams
= ¶ms
[i
* nparams
];
249 VIR_PY_LIST_APPEND_GOTO(ret
,
250 getPyVirTypedParameter(cpuparams
,
255 start_cpu
+= queried_ncpus
;
256 ncpus
-= queried_ncpus
;
257 virTypedParamsClear(params
, sumparams
);
260 LIBVIRT_BEGIN_ALLOW_THREADS
;
261 nparams
= virDomainGetCPUStats(domain
, NULL
, 0, -1, 1, flags
);
262 LIBVIRT_END_ALLOW_THREADS
;
272 if (VIR_ALLOC_N(params
, nparams
) < 0) {
273 error
= PyErr_NoMemory();
277 LIBVIRT_BEGIN_ALLOW_THREADS
;
278 i_retval
= virDomainGetCPUStats(domain
, params
, nparams
,
280 LIBVIRT_END_ALLOW_THREADS
;
290 VIR_PY_LIST_APPEND_GOTO(ret
, getPyVirTypedParameter(params
, i_retval
),
294 virTypedParamsFree(params
, sumparams
);
298 virTypedParamsFree(params
, sumparams
);
304 libvirt_virDomainInterfaceStats(PyObject
*self ATTRIBUTE_UNUSED
,
308 PyObject
*pyobj_domain
;
311 virDomainInterfaceStatsStruct stats
;
314 if (!PyArg_ParseTuple(args
, (char *)"Oz:virDomainInterfaceStats",
315 &pyobj_domain
, &path
))
317 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
319 LIBVIRT_BEGIN_ALLOW_THREADS
;
320 c_retval
= virDomainInterfaceStats(domain
, path
, &stats
, sizeof(stats
));
321 LIBVIRT_END_ALLOW_THREADS
;
326 /* convert to a Python tuple of long objects */
327 if ((info
= PyTuple_New(8)) == NULL
)
330 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_longlongWrap(stats
.rx_bytes
), error
);
331 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_longlongWrap(stats
.rx_packets
), error
);
332 VIR_PY_TUPLE_SET_GOTO(info
, 2, libvirt_longlongWrap(stats
.rx_errs
), error
);
333 VIR_PY_TUPLE_SET_GOTO(info
, 3, libvirt_longlongWrap(stats
.rx_drop
), error
);
334 VIR_PY_TUPLE_SET_GOTO(info
, 4, libvirt_longlongWrap(stats
.tx_bytes
), error
);
335 VIR_PY_TUPLE_SET_GOTO(info
, 5, libvirt_longlongWrap(stats
.tx_packets
), error
);
336 VIR_PY_TUPLE_SET_GOTO(info
, 6, libvirt_longlongWrap(stats
.tx_errs
), error
);
337 VIR_PY_TUPLE_SET_GOTO(info
, 7, libvirt_longlongWrap(stats
.tx_drop
), error
);
347 libvirt_virDomainMemoryStats(PyObject
*self ATTRIBUTE_UNUSED
,
351 PyObject
*pyobj_domain
;
352 unsigned int nr_stats
;
354 virDomainMemoryStatStruct stats
[VIR_DOMAIN_MEMORY_STAT_NR
];
356 PyObject
*key
= NULL
, *val
= NULL
;
358 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainMemoryStats", &pyobj_domain
))
360 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
362 LIBVIRT_BEGIN_ALLOW_THREADS
;
363 nr_stats
= virDomainMemoryStats(domain
, stats
,
364 VIR_DOMAIN_MEMORY_STAT_NR
, 0);
365 LIBVIRT_END_ALLOW_THREADS
;
367 if (nr_stats
== (unsigned int)-1)
370 /* convert to a Python dictionary */
371 if ((info
= PyDict_New()) == NULL
)
374 for (i
= 0; i
< nr_stats
; i
++) {
375 switch (stats
[i
].tag
) {
376 case VIR_DOMAIN_MEMORY_STAT_SWAP_IN
:
377 key
= libvirt_constcharPtrWrap("swap_in");
379 case VIR_DOMAIN_MEMORY_STAT_SWAP_OUT
:
380 key
= libvirt_constcharPtrWrap("swap_out");
382 case VIR_DOMAIN_MEMORY_STAT_MAJOR_FAULT
:
383 key
= libvirt_constcharPtrWrap("major_fault");
385 case VIR_DOMAIN_MEMORY_STAT_MINOR_FAULT
:
386 key
= libvirt_constcharPtrWrap("minor_fault");
388 case VIR_DOMAIN_MEMORY_STAT_UNUSED
:
389 key
= libvirt_constcharPtrWrap("unused");
391 case VIR_DOMAIN_MEMORY_STAT_AVAILABLE
:
392 key
= libvirt_constcharPtrWrap("available");
394 case VIR_DOMAIN_MEMORY_STAT_ACTUAL_BALLOON
:
395 key
= libvirt_constcharPtrWrap("actual");
397 case VIR_DOMAIN_MEMORY_STAT_RSS
:
398 key
= libvirt_constcharPtrWrap("rss");
400 #if LIBVIR_CHECK_VERSION(2, 1, 0)
401 case VIR_DOMAIN_MEMORY_STAT_USABLE
:
402 key
= libvirt_constcharPtrWrap("usable");
404 case VIR_DOMAIN_MEMORY_STAT_LAST_UPDATE
:
405 key
= libvirt_constcharPtrWrap("last_update");
407 #endif /* LIBVIR_CHECK_VERSION(2, 1, 0) */
408 #if LIBVIR_CHECK_VERSION(4, 6, 0)
409 case VIR_DOMAIN_MEMORY_STAT_DISK_CACHES
:
410 key
= libvirt_constcharPtrWrap("disk_caches");
412 #endif /* LIBVIR_CHECK_VERSION(4, 6, 0) */
413 #if LIBVIR_CHECK_VERSION(5, 4, 0)
414 case VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGALLOC
:
415 key
= libvirt_constcharPtrWrap("hugetlb_pgalloc");
417 case VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGFAIL
:
418 key
= libvirt_constcharPtrWrap("hugetlb_pgfail");
420 #endif /* LIBVIR_CHECK_VERSION(5, 4, 0) */
424 val
= libvirt_ulonglongWrap(stats
[i
].val
);
426 VIR_PY_DICT_SET_GOTO(info
, key
, val
, error
);
437 libvirt_virDomainGetSchedulerType(PyObject
*self ATTRIBUTE_UNUSED
,
441 PyObject
*pyobj_domain
, *info
;
445 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetScedulerType",
448 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
450 LIBVIRT_BEGIN_ALLOW_THREADS
;
451 c_retval
= virDomainGetSchedulerType(domain
, &nparams
);
452 LIBVIRT_END_ALLOW_THREADS
;
454 if (c_retval
== NULL
)
457 /* convert to a Python tuple of long objects */
458 if ((info
= PyTuple_New(2)) == NULL
)
461 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_constcharPtrWrap(c_retval
), error
);
462 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_intWrap(nparams
), error
);
475 libvirt_virDomainGetSchedulerParameters(PyObject
*self ATTRIBUTE_UNUSED
,
479 PyObject
*pyobj_domain
;
480 PyObject
*ret
= NULL
;
484 virTypedParameterPtr params
;
486 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetScedulerParameters",
489 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
491 LIBVIRT_BEGIN_ALLOW_THREADS
;
492 c_retval
= virDomainGetSchedulerType(domain
, &nparams
);
493 LIBVIRT_END_ALLOW_THREADS
;
495 if (c_retval
== NULL
)
502 if (VIR_ALLOC_N(params
, nparams
) < 0)
503 return PyErr_NoMemory();
505 LIBVIRT_BEGIN_ALLOW_THREADS
;
506 i_retval
= virDomainGetSchedulerParameters(domain
, params
, &nparams
);
507 LIBVIRT_END_ALLOW_THREADS
;
514 ret
= getPyVirTypedParameter(params
, nparams
);
517 virTypedParamsFree(params
, nparams
);
522 libvirt_virDomainGetSchedulerParametersFlags(PyObject
*self ATTRIBUTE_UNUSED
,
526 PyObject
*pyobj_domain
;
527 PyObject
*ret
= NULL
;
532 virTypedParameterPtr params
;
534 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetScedulerParametersFlags",
535 &pyobj_domain
, &flags
))
537 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
539 LIBVIRT_BEGIN_ALLOW_THREADS
;
540 c_retval
= virDomainGetSchedulerType(domain
, &nparams
);
541 LIBVIRT_END_ALLOW_THREADS
;
543 if (c_retval
== NULL
)
550 if (VIR_ALLOC_N(params
, nparams
) < 0)
551 return PyErr_NoMemory();
553 LIBVIRT_BEGIN_ALLOW_THREADS
;
554 i_retval
= virDomainGetSchedulerParametersFlags(domain
, params
, &nparams
,
556 LIBVIRT_END_ALLOW_THREADS
;
563 ret
= getPyVirTypedParameter(params
, nparams
);
566 virTypedParamsFree(params
, nparams
);
571 libvirt_virDomainSetSchedulerParameters(PyObject
*self ATTRIBUTE_UNUSED
,
575 PyObject
*pyobj_domain
, *info
;
576 PyObject
*ret
= NULL
;
581 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
583 if (!PyArg_ParseTuple(args
, (char *)"OO:virDomainSetSchedulerParameters",
584 &pyobj_domain
, &info
))
586 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
588 if ((size
= PyDict_Size(info
)) < 0)
592 PyErr_Format(PyExc_LookupError
,
593 "Need non-empty dictionary to set attributes");
597 LIBVIRT_BEGIN_ALLOW_THREADS
;
598 c_retval
= virDomainGetSchedulerType(domain
, &nparams
);
599 LIBVIRT_END_ALLOW_THREADS
;
601 if (c_retval
== NULL
)
602 return VIR_PY_INT_FAIL
;
606 PyErr_Format(PyExc_LookupError
,
607 "Domain has no settable attributes");
611 if (VIR_ALLOC_N(params
, nparams
) < 0)
612 return PyErr_NoMemory();
614 LIBVIRT_BEGIN_ALLOW_THREADS
;
615 i_retval
= virDomainGetSchedulerParameters(domain
, params
, &nparams
);
616 LIBVIRT_END_ALLOW_THREADS
;
619 ret
= VIR_PY_INT_FAIL
;
623 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
627 LIBVIRT_BEGIN_ALLOW_THREADS
;
628 i_retval
= virDomainSetSchedulerParameters(domain
, new_params
, size
);
629 LIBVIRT_END_ALLOW_THREADS
;
632 ret
= VIR_PY_INT_FAIL
;
636 ret
= VIR_PY_INT_SUCCESS
;
639 virTypedParamsFree(params
, nparams
);
640 virTypedParamsFree(new_params
, size
);
645 libvirt_virDomainSetSchedulerParametersFlags(PyObject
*self ATTRIBUTE_UNUSED
,
649 PyObject
*pyobj_domain
, *info
;
650 PyObject
*ret
= NULL
;
656 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
658 if (!PyArg_ParseTuple(args
,
659 (char *)"OOI:virDomainSetSchedulerParametersFlags",
660 &pyobj_domain
, &info
, &flags
))
662 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
664 if ((size
= PyDict_Size(info
)) < 0)
668 PyErr_Format(PyExc_LookupError
,
669 "Need non-empty dictionary to set attributes");
673 LIBVIRT_BEGIN_ALLOW_THREADS
;
674 c_retval
= virDomainGetSchedulerType(domain
, &nparams
);
675 LIBVIRT_END_ALLOW_THREADS
;
677 if (c_retval
== NULL
)
678 return VIR_PY_INT_FAIL
;
682 PyErr_Format(PyExc_LookupError
,
683 "Domain has no settable attributes");
687 if (VIR_ALLOC_N(params
, nparams
) < 0)
688 return PyErr_NoMemory();
690 LIBVIRT_BEGIN_ALLOW_THREADS
;
691 i_retval
= virDomainGetSchedulerParametersFlags(domain
, params
, &nparams
,
693 LIBVIRT_END_ALLOW_THREADS
;
696 ret
= VIR_PY_INT_FAIL
;
700 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
704 LIBVIRT_BEGIN_ALLOW_THREADS
;
705 i_retval
= virDomainSetSchedulerParametersFlags(domain
, new_params
, size
,
707 LIBVIRT_END_ALLOW_THREADS
;
710 ret
= VIR_PY_INT_FAIL
;
714 ret
= VIR_PY_INT_SUCCESS
;
717 virTypedParamsFree(params
, nparams
);
718 virTypedParamsFree(new_params
, size
);
723 libvirt_virDomainSetBlkioParameters(PyObject
*self ATTRIBUTE_UNUSED
,
727 PyObject
*pyobj_domain
, *info
;
728 PyObject
*ret
= NULL
;
733 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
735 if (!PyArg_ParseTuple(args
,
736 (char *)"OOI:virDomainSetBlkioParameters",
737 &pyobj_domain
, &info
, &flags
))
739 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
741 if ((size
= PyDict_Size(info
)) < 0)
745 PyErr_Format(PyExc_LookupError
,
746 "Need non-empty dictionary to set attributes");
750 LIBVIRT_BEGIN_ALLOW_THREADS
;
751 i_retval
= virDomainGetBlkioParameters(domain
, NULL
, &nparams
, flags
);
752 LIBVIRT_END_ALLOW_THREADS
;
755 return VIR_PY_INT_FAIL
;
758 PyErr_Format(PyExc_LookupError
,
759 "Domain has no settable attributes");
763 if (VIR_ALLOC_N(params
, nparams
) < 0)
764 return PyErr_NoMemory();
766 LIBVIRT_BEGIN_ALLOW_THREADS
;
767 i_retval
= virDomainGetBlkioParameters(domain
, params
, &nparams
, flags
);
768 LIBVIRT_END_ALLOW_THREADS
;
771 ret
= VIR_PY_INT_FAIL
;
775 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
779 LIBVIRT_BEGIN_ALLOW_THREADS
;
780 i_retval
= virDomainSetBlkioParameters(domain
, new_params
, size
, flags
);
781 LIBVIRT_END_ALLOW_THREADS
;
784 ret
= VIR_PY_INT_FAIL
;
788 ret
= VIR_PY_INT_SUCCESS
;
791 virTypedParamsFree(params
, nparams
);
792 virTypedParamsFree(new_params
, size
);
797 libvirt_virDomainGetBlkioParameters(PyObject
*self ATTRIBUTE_UNUSED
,
801 PyObject
*pyobj_domain
;
802 PyObject
*ret
= NULL
;
806 virTypedParameterPtr params
;
808 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetBlkioParameters",
809 &pyobj_domain
, &flags
))
811 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
813 LIBVIRT_BEGIN_ALLOW_THREADS
;
814 i_retval
= virDomainGetBlkioParameters(domain
, NULL
, &nparams
, flags
);
815 LIBVIRT_END_ALLOW_THREADS
;
823 if (VIR_ALLOC_N(params
, nparams
) < 0)
824 return PyErr_NoMemory();
826 LIBVIRT_BEGIN_ALLOW_THREADS
;
827 i_retval
= virDomainGetBlkioParameters(domain
, params
, &nparams
, flags
);
828 LIBVIRT_END_ALLOW_THREADS
;
835 ret
= getPyVirTypedParameter(params
, nparams
);
838 virTypedParamsFree(params
, nparams
);
843 libvirt_virDomainSetMemoryParameters(PyObject
*self ATTRIBUTE_UNUSED
,
847 PyObject
*pyobj_domain
, *info
;
848 PyObject
*ret
= NULL
;
853 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
855 if (!PyArg_ParseTuple(args
,
856 (char *)"OOI:virDomainSetMemoryParameters",
857 &pyobj_domain
, &info
, &flags
))
859 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
861 if ((size
= PyDict_Size(info
)) < 0)
865 PyErr_Format(PyExc_LookupError
,
866 "Need non-empty dictionary to set attributes");
870 LIBVIRT_BEGIN_ALLOW_THREADS
;
871 i_retval
= virDomainGetMemoryParameters(domain
, NULL
, &nparams
, flags
);
872 LIBVIRT_END_ALLOW_THREADS
;
875 return VIR_PY_INT_FAIL
;
878 PyErr_Format(PyExc_LookupError
,
879 "Domain has no settable attributes");
883 if (VIR_ALLOC_N(params
, nparams
) < 0)
884 return PyErr_NoMemory();
886 LIBVIRT_BEGIN_ALLOW_THREADS
;
887 i_retval
= virDomainGetMemoryParameters(domain
, params
, &nparams
, flags
);
888 LIBVIRT_END_ALLOW_THREADS
;
891 ret
= VIR_PY_INT_FAIL
;
895 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
899 LIBVIRT_BEGIN_ALLOW_THREADS
;
900 i_retval
= virDomainSetMemoryParameters(domain
, new_params
, size
, flags
);
901 LIBVIRT_END_ALLOW_THREADS
;
904 ret
= VIR_PY_INT_FAIL
;
908 ret
= VIR_PY_INT_SUCCESS
;
911 virTypedParamsFree(params
, nparams
);
912 virTypedParamsFree(new_params
, size
);
917 libvirt_virDomainGetMemoryParameters(PyObject
*self ATTRIBUTE_UNUSED
,
921 PyObject
*pyobj_domain
;
922 PyObject
*ret
= NULL
;
926 virTypedParameterPtr params
;
928 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetMemoryParameters",
929 &pyobj_domain
, &flags
))
931 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
933 LIBVIRT_BEGIN_ALLOW_THREADS
;
934 i_retval
= virDomainGetMemoryParameters(domain
, NULL
, &nparams
, flags
);
935 LIBVIRT_END_ALLOW_THREADS
;
943 if (VIR_ALLOC_N(params
, nparams
) < 0)
944 return PyErr_NoMemory();
946 LIBVIRT_BEGIN_ALLOW_THREADS
;
947 i_retval
= virDomainGetMemoryParameters(domain
, params
, &nparams
, flags
);
948 LIBVIRT_END_ALLOW_THREADS
;
955 ret
= getPyVirTypedParameter(params
, nparams
);
958 virTypedParamsFree(params
, nparams
);
963 libvirt_virDomainSetNumaParameters(PyObject
*self ATTRIBUTE_UNUSED
,
967 PyObject
*pyobj_domain
, *info
;
968 PyObject
*ret
= NULL
;
973 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
975 if (!PyArg_ParseTuple(args
,
976 (char *)"OOI:virDomainSetNumaParameters",
977 &pyobj_domain
, &info
, &flags
))
979 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
981 if ((size
= PyDict_Size(info
)) < 0)
985 PyErr_Format(PyExc_LookupError
,
986 "Need non-empty dictionary to set attributes");
990 LIBVIRT_BEGIN_ALLOW_THREADS
;
991 i_retval
= virDomainGetNumaParameters(domain
, NULL
, &nparams
, flags
);
992 LIBVIRT_END_ALLOW_THREADS
;
995 return VIR_PY_INT_FAIL
;
998 PyErr_Format(PyExc_LookupError
,
999 "Domain has no settable attributes");
1003 if (VIR_ALLOC_N(params
, nparams
) < 0)
1004 return PyErr_NoMemory();
1006 LIBVIRT_BEGIN_ALLOW_THREADS
;
1007 i_retval
= virDomainGetNumaParameters(domain
, params
, &nparams
, flags
);
1008 LIBVIRT_END_ALLOW_THREADS
;
1011 ret
= VIR_PY_INT_FAIL
;
1015 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
1019 LIBVIRT_BEGIN_ALLOW_THREADS
;
1020 i_retval
= virDomainSetNumaParameters(domain
, new_params
, size
, flags
);
1021 LIBVIRT_END_ALLOW_THREADS
;
1024 ret
= VIR_PY_INT_FAIL
;
1028 ret
= VIR_PY_INT_SUCCESS
;
1031 virTypedParamsFree(params
, nparams
);
1032 virTypedParamsFree(new_params
, size
);
1037 libvirt_virDomainGetNumaParameters(PyObject
*self ATTRIBUTE_UNUSED
,
1040 virDomainPtr domain
;
1041 PyObject
*pyobj_domain
;
1042 PyObject
*ret
= NULL
;
1046 virTypedParameterPtr params
;
1048 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetNumaParameters",
1049 &pyobj_domain
, &flags
))
1051 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1053 LIBVIRT_BEGIN_ALLOW_THREADS
;
1054 i_retval
= virDomainGetNumaParameters(domain
, NULL
, &nparams
, flags
);
1055 LIBVIRT_END_ALLOW_THREADS
;
1061 return PyDict_New();
1063 if (VIR_ALLOC_N(params
, nparams
) < 0)
1064 return PyErr_NoMemory();
1066 LIBVIRT_BEGIN_ALLOW_THREADS
;
1067 i_retval
= virDomainGetNumaParameters(domain
, params
, &nparams
, flags
);
1068 LIBVIRT_END_ALLOW_THREADS
;
1075 ret
= getPyVirTypedParameter(params
, nparams
);
1078 virTypedParamsFree(params
, nparams
);
1083 libvirt_virDomainSetInterfaceParameters(PyObject
*self ATTRIBUTE_UNUSED
,
1086 virDomainPtr domain
;
1087 PyObject
*pyobj_domain
, *info
;
1088 PyObject
*ret
= NULL
;
1091 Py_ssize_t size
= 0;
1093 const char *device
= NULL
;
1094 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
1096 if (!PyArg_ParseTuple(args
,
1097 (char *)"OzOI:virDomainSetInterfaceParameters",
1098 &pyobj_domain
, &device
, &info
, &flags
))
1100 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1102 if ((size
= PyDict_Size(info
)) < 0)
1106 PyErr_Format(PyExc_LookupError
,
1107 "Need non-empty dictionary to set attributes");
1111 LIBVIRT_BEGIN_ALLOW_THREADS
;
1112 i_retval
= virDomainGetInterfaceParameters(domain
, device
, NULL
, &nparams
,
1114 LIBVIRT_END_ALLOW_THREADS
;
1117 return VIR_PY_INT_FAIL
;
1120 PyErr_Format(PyExc_LookupError
,
1121 "Domain has no settable attributes");
1125 if (VIR_ALLOC_N(params
, nparams
) < 0)
1126 return PyErr_NoMemory();
1128 LIBVIRT_BEGIN_ALLOW_THREADS
;
1129 i_retval
= virDomainGetInterfaceParameters(domain
, device
, params
, &nparams
,
1131 LIBVIRT_END_ALLOW_THREADS
;
1134 ret
= VIR_PY_INT_FAIL
;
1138 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
1142 LIBVIRT_BEGIN_ALLOW_THREADS
;
1143 i_retval
= virDomainSetInterfaceParameters(domain
, device
, new_params
, size
,
1145 LIBVIRT_END_ALLOW_THREADS
;
1148 ret
= VIR_PY_INT_FAIL
;
1152 ret
= VIR_PY_INT_SUCCESS
;
1155 virTypedParamsFree(params
, nparams
);
1156 virTypedParamsFree(new_params
, size
);
1161 libvirt_virDomainGetInterfaceParameters(PyObject
*self ATTRIBUTE_UNUSED
,
1164 virDomainPtr domain
;
1165 PyObject
*pyobj_domain
;
1166 PyObject
*ret
= NULL
;
1170 const char *device
= NULL
;
1171 virTypedParameterPtr params
;
1173 if (!PyArg_ParseTuple(args
, (char *)"OzI:virDomainGetInterfaceParameters",
1174 &pyobj_domain
, &device
, &flags
))
1176 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1178 LIBVIRT_BEGIN_ALLOW_THREADS
;
1179 i_retval
= virDomainGetInterfaceParameters(domain
, device
, NULL
, &nparams
,
1181 LIBVIRT_END_ALLOW_THREADS
;
1187 return PyDict_New();
1189 if (VIR_ALLOC_N(params
, nparams
) < 0)
1190 return PyErr_NoMemory();
1192 LIBVIRT_BEGIN_ALLOW_THREADS
;
1193 i_retval
= virDomainGetInterfaceParameters(domain
, device
, params
, &nparams
,
1195 LIBVIRT_END_ALLOW_THREADS
;
1202 ret
= getPyVirTypedParameter(params
, nparams
);
1205 virTypedParamsFree(params
, nparams
);
1210 libvirt_virDomainGetVcpus(PyObject
*self ATTRIBUTE_UNUSED
,
1213 virDomainPtr domain
;
1214 PyObject
*pyobj_domain
, *pyretval
= NULL
;
1215 PyObject
*pycpuinfo
= NULL
, *pycpumap
= NULL
;
1216 PyObject
*error
= NULL
;
1217 virDomainInfo dominfo
;
1218 virVcpuInfoPtr cpuinfo
= NULL
;
1219 unsigned char *cpumap
= NULL
;
1220 ssize_t cpumaplen
, i
;
1221 int i_retval
, cpunum
;
1223 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetVcpus",
1226 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1228 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1231 LIBVIRT_BEGIN_ALLOW_THREADS
;
1232 i_retval
= virDomainGetInfo(domain
, &dominfo
);
1233 LIBVIRT_END_ALLOW_THREADS
;
1238 if (VIR_ALLOC_N(cpuinfo
, dominfo
.nrVirtCpu
) < 0)
1239 return PyErr_NoMemory();
1241 cpumaplen
= VIR_CPU_MAPLEN(cpunum
);
1242 if (xalloc_oversized(dominfo
.nrVirtCpu
, cpumaplen
) ||
1243 VIR_ALLOC_N(cpumap
, dominfo
.nrVirtCpu
* cpumaplen
) < 0) {
1244 error
= PyErr_NoMemory();
1248 LIBVIRT_BEGIN_ALLOW_THREADS
;
1249 i_retval
= virDomainGetVcpus(domain
,
1250 cpuinfo
, dominfo
.nrVirtCpu
,
1252 LIBVIRT_END_ALLOW_THREADS
;
1255 error
= VIR_PY_NONE
;
1259 /* convert to a Python tuple of long objects */
1260 if ((pyretval
= PyTuple_New(2)) == NULL
)
1262 if ((pycpuinfo
= PyList_New(dominfo
.nrVirtCpu
)) == NULL
)
1265 VIR_PY_TUPLE_SET_GOTO(pyretval
, 0, pycpuinfo
, cleanup
);
1267 if ((pycpumap
= PyList_New(dominfo
.nrVirtCpu
)) == NULL
)
1270 VIR_PY_TUPLE_SET_GOTO(pyretval
, 1, pycpumap
, cleanup
);
1272 for (i
= 0; i
< dominfo
.nrVirtCpu
; i
++) {
1273 PyObject
*info
= PyTuple_New(4);
1278 VIR_PY_LIST_SET_GOTO(pycpuinfo
, i
, info
, cleanup
);
1280 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_intWrap(cpuinfo
[i
].number
),
1282 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_intWrap(cpuinfo
[i
].state
),
1284 VIR_PY_TUPLE_SET_GOTO(info
, 2,
1285 libvirt_ulonglongWrap(cpuinfo
[i
].cpuTime
),
1287 VIR_PY_TUPLE_SET_GOTO(info
, 3, libvirt_intWrap(cpuinfo
[i
].cpu
),
1290 for (i
= 0; i
< dominfo
.nrVirtCpu
; i
++) {
1291 PyObject
*info
= PyTuple_New(cpunum
);
1296 VIR_PY_LIST_SET_GOTO(pycpumap
, i
, info
, cleanup
);
1298 for (j
= 0; j
< cpunum
; j
++) {
1299 VIR_PY_TUPLE_SET_GOTO(info
, j
,
1300 PyBool_FromLong(VIR_CPU_USABLE(cpumap
,
1315 Py_XDECREF(pyretval
);
1321 libvirt_virDomainPinVcpu(PyObject
*self ATTRIBUTE_UNUSED
,
1324 virDomainPtr domain
;
1325 PyObject
*pyobj_domain
, *pycpumap
;
1326 PyObject
*ret
= NULL
;
1327 unsigned char *cpumap
;
1328 int cpumaplen
, vcpu
, cpunum
;
1331 if (!PyArg_ParseTuple(args
, (char *)"OiO:virDomainPinVcpu",
1332 &pyobj_domain
, &vcpu
, &pycpumap
))
1334 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1336 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1337 return VIR_PY_INT_FAIL
;
1339 if (virPyCpumapConvert(cpunum
, pycpumap
, &cpumap
, &cpumaplen
) < 0)
1342 LIBVIRT_BEGIN_ALLOW_THREADS
;
1343 i_retval
= virDomainPinVcpu(domain
, vcpu
, cpumap
, cpumaplen
);
1344 LIBVIRT_END_ALLOW_THREADS
;
1347 ret
= VIR_PY_INT_FAIL
;
1350 ret
= VIR_PY_INT_SUCCESS
;
1358 libvirt_virDomainPinVcpuFlags(PyObject
*self ATTRIBUTE_UNUSED
,
1361 virDomainPtr domain
;
1362 PyObject
*pyobj_domain
, *pycpumap
;
1363 PyObject
*ret
= NULL
;
1364 unsigned char *cpumap
;
1365 int cpumaplen
, vcpu
, cpunum
;
1369 if (!PyArg_ParseTuple(args
, (char *)"OiOI:virDomainPinVcpuFlags",
1370 &pyobj_domain
, &vcpu
, &pycpumap
, &flags
))
1372 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1374 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1375 return VIR_PY_INT_FAIL
;
1377 if (virPyCpumapConvert(cpunum
, pycpumap
, &cpumap
, &cpumaplen
) < 0)
1380 LIBVIRT_BEGIN_ALLOW_THREADS
;
1381 i_retval
= virDomainPinVcpuFlags(domain
, vcpu
, cpumap
, cpumaplen
, flags
);
1382 LIBVIRT_END_ALLOW_THREADS
;
1384 ret
= VIR_PY_INT_FAIL
;
1387 ret
= VIR_PY_INT_SUCCESS
;
1395 libvirt_virDomainGetVcpuPinInfo(PyObject
*self ATTRIBUTE_UNUSED
,
1398 virDomainPtr domain
;
1399 PyObject
*pyobj_domain
, *pycpumaps
= NULL
, *error
= NULL
;
1400 virDomainInfo dominfo
;
1401 unsigned char *cpumaps
= NULL
;
1402 ssize_t cpumaplen
, vcpu
, pcpu
;
1404 int i_retval
, cpunum
;
1406 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetVcpuPinInfo",
1407 &pyobj_domain
, &flags
))
1409 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1411 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1414 LIBVIRT_BEGIN_ALLOW_THREADS
;
1415 i_retval
= virDomainGetInfo(domain
, &dominfo
);
1416 LIBVIRT_END_ALLOW_THREADS
;
1421 cpumaplen
= VIR_CPU_MAPLEN(cpunum
);
1422 if (xalloc_oversized(dominfo
.nrVirtCpu
, cpumaplen
) ||
1423 VIR_ALLOC_N(cpumaps
, dominfo
.nrVirtCpu
* cpumaplen
) < 0)
1426 LIBVIRT_BEGIN_ALLOW_THREADS
;
1427 i_retval
= virDomainGetVcpuPinInfo(domain
, dominfo
.nrVirtCpu
,
1428 cpumaps
, cpumaplen
, flags
);
1429 LIBVIRT_END_ALLOW_THREADS
;
1432 error
= VIR_PY_NONE
;
1436 if ((pycpumaps
= PyList_New(dominfo
.nrVirtCpu
)) == NULL
)
1439 for (vcpu
= 0; vcpu
< dominfo
.nrVirtCpu
; vcpu
++) {
1440 PyObject
*mapinfo
= PyTuple_New(cpunum
);
1441 if (mapinfo
== NULL
)
1444 VIR_PY_LIST_SET_GOTO(pycpumaps
, vcpu
, mapinfo
, cleanup
);
1446 for (pcpu
= 0; pcpu
< cpunum
; pcpu
++) {
1447 VIR_PY_TUPLE_SET_GOTO(mapinfo
,
1449 PyBool_FromLong(VIR_CPU_USABLE(cpumaps
,
1464 Py_XDECREF(pycpumaps
);
1470 #if LIBVIR_CHECK_VERSION(0, 10, 0)
1472 libvirt_virDomainPinEmulator(PyObject
*self ATTRIBUTE_UNUSED
,
1475 virDomainPtr domain
;
1476 PyObject
*pyobj_domain
, *pycpumap
;
1477 unsigned char *cpumap
= NULL
;
1478 int cpumaplen
, cpunum
;
1482 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainPinEmulator",
1483 &pyobj_domain
, &pycpumap
, &flags
))
1486 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1488 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1489 return VIR_PY_INT_FAIL
;
1491 if (virPyCpumapConvert(cpunum
, pycpumap
, &cpumap
, &cpumaplen
) < 0)
1494 LIBVIRT_BEGIN_ALLOW_THREADS
;
1495 i_retval
= virDomainPinEmulator(domain
, cpumap
, cpumaplen
, flags
);
1496 LIBVIRT_END_ALLOW_THREADS
;
1501 return VIR_PY_INT_FAIL
;
1503 return VIR_PY_INT_SUCCESS
;
1508 libvirt_virDomainGetEmulatorPinInfo(PyObject
*self ATTRIBUTE_UNUSED
,
1511 virDomainPtr domain
;
1512 PyObject
*pyobj_domain
;
1514 unsigned char *cpumap
;
1521 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetEmulatorPinInfo",
1522 &pyobj_domain
, &flags
))
1525 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1527 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1530 cpumaplen
= VIR_CPU_MAPLEN(cpunum
);
1532 if (VIR_ALLOC_N(cpumap
, cpumaplen
) < 0)
1533 return PyErr_NoMemory();
1535 LIBVIRT_BEGIN_ALLOW_THREADS
;
1536 ret
= virDomainGetEmulatorPinInfo(domain
, cpumap
, cpumaplen
, flags
);
1537 LIBVIRT_END_ALLOW_THREADS
;
1544 if (!(pycpumap
= PyTuple_New(cpunum
))) {
1549 for (pcpu
= 0; pcpu
< cpunum
; pcpu
++) {
1550 VIR_PY_TUPLE_SET_GOTO(pycpumap
,
1552 PyBool_FromLong(VIR_CPU_USABLE(cpumap
,
1567 #endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
1569 #if LIBVIR_CHECK_VERSION(1, 2, 14)
1571 libvirt_virDomainGetIOThreadInfo(PyObject
*self ATTRIBUTE_UNUSED
,
1574 virDomainPtr domain
;
1575 PyObject
*pyobj_domain
;
1576 PyObject
*py_retval
= NULL
;
1577 PyObject
*py_iothrinfo
= NULL
;
1578 virDomainIOThreadInfoPtr
*iothrinfo
= NULL
;
1581 int niothreads
, cpunum
;
1583 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetIOThreadInfo",
1584 &pyobj_domain
, &flags
))
1586 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1588 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1591 LIBVIRT_BEGIN_ALLOW_THREADS
;
1592 niothreads
= virDomainGetIOThreadInfo(domain
, &iothrinfo
, flags
);
1593 LIBVIRT_END_ALLOW_THREADS
;
1595 if (niothreads
< 0) {
1596 py_retval
= VIR_PY_NONE
;
1600 /* convert to a Python list */
1601 if ((py_iothrinfo
= PyList_New(niothreads
)) == NULL
)
1604 /* NOTE: If there are zero IOThreads we will return an empty list */
1605 for (i
= 0; i
< niothreads
; i
++) {
1606 PyObject
*iothrtpl
= NULL
;
1607 PyObject
*iothrmap
= NULL
;
1608 virDomainIOThreadInfoPtr iothr
= iothrinfo
[i
];
1610 if (iothr
== NULL
) {
1611 py_retval
= VIR_PY_NONE
;
1615 if ((iothrtpl
= PyTuple_New(2)) == NULL
)
1618 VIR_PY_LIST_SET_GOTO(py_iothrinfo
, i
, iothrtpl
, cleanup
);
1620 /* 0: IOThread ID */
1621 VIR_PY_TUPLE_SET_GOTO(iothrtpl
, 0, libvirt_uintWrap(iothr
->iothread_id
),
1625 if ((iothrmap
= PyList_New(cpunum
)) == NULL
)
1628 VIR_PY_TUPLE_SET_GOTO(iothrtpl
, 1, iothrmap
, cleanup
);
1630 for (pcpu
= 0; pcpu
< cpunum
; pcpu
++)
1631 if (VIR_CPU_MAPLEN(pcpu
+ 1) > iothr
->cpumaplen
) {
1632 VIR_PY_LIST_SET_GOTO(iothrmap
, pcpu
, PyBool_FromLong(0), cleanup
);
1634 VIR_PY_LIST_SET_GOTO(iothrmap
, pcpu
,
1635 PyBool_FromLong(VIR_CPU_USED(iothr
->cpumap
,
1641 py_retval
= py_iothrinfo
;
1642 py_iothrinfo
= NULL
;
1645 if (niothreads
> 0) {
1646 for (i
= 0; i
< niothreads
; i
++)
1647 virDomainIOThreadInfoFree(iothrinfo
[i
]);
1649 VIR_FREE(iothrinfo
);
1650 Py_XDECREF(py_iothrinfo
);
1655 libvirt_virDomainPinIOThread(PyObject
*self ATTRIBUTE_UNUSED
,
1658 virDomainPtr domain
;
1659 PyObject
*pyobj_domain
, *pycpumap
;
1660 PyObject
*ret
= NULL
;
1661 unsigned char *cpumap
;
1662 int cpumaplen
, iothread_val
, cpunum
;
1666 if (!PyArg_ParseTuple(args
, (char *)"OiOI:virDomainPinIOThread",
1667 &pyobj_domain
, &iothread_val
, &pycpumap
, &flags
))
1669 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1671 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1672 return VIR_PY_INT_FAIL
;
1674 if (virPyCpumapConvert(cpunum
, pycpumap
, &cpumap
, &cpumaplen
) < 0)
1677 LIBVIRT_BEGIN_ALLOW_THREADS
;
1678 i_retval
= virDomainPinIOThread(domain
, iothread_val
,
1679 cpumap
, cpumaplen
, flags
);
1680 LIBVIRT_END_ALLOW_THREADS
;
1683 ret
= VIR_PY_INT_FAIL
;
1686 ret
= VIR_PY_INT_SUCCESS
;
1693 #endif /* LIBVIR_CHECK_VERSION(1, 2, 14) */
1695 #if LIBVIR_CHECK_VERSION(4, 10, 0)
1697 static virPyTypedParamsHint virPyDomainSetIOThreadParams
[] = {
1698 { VIR_DOMAIN_IOTHREAD_POLL_MAX_NS
, VIR_TYPED_PARAM_ULLONG
},
1699 { VIR_DOMAIN_IOTHREAD_POLL_GROW
, VIR_TYPED_PARAM_UINT
},
1700 { VIR_DOMAIN_IOTHREAD_POLL_SHRINK
, VIR_TYPED_PARAM_UINT
},
1701 # if LIBVIR_CHECK_VERSION(8, 5, 0)
1702 { VIR_DOMAIN_IOTHREAD_THREAD_POOL_MIN
, VIR_TYPED_PARAM_INT
},
1703 { VIR_DOMAIN_IOTHREAD_THREAD_POOL_MAX
, VIR_TYPED_PARAM_INT
},
1704 # endif /* LIBVIR_CHECK_VERSION(8, 5, 0) */
1708 libvirt_virDomainSetIOThreadParams(PyObject
*self ATTRIBUTE_UNUSED
,
1711 PyObject
*pyobj_dom
= NULL
;
1712 PyObject
*pyobj_dict
= NULL
;
1716 virTypedParameterPtr params
= NULL
;
1721 if (!PyArg_ParseTuple(args
, (char *)"OiOI:virDomainSetIOThreadParams",
1722 &pyobj_dom
, &iothread_val
, &pyobj_dict
, &flags
))
1725 if (PyDict_Check(pyobj_dict
)) {
1726 if (virPyDictToTypedParams(pyobj_dict
, ¶ms
, &nparams
,
1727 virPyDomainSetIOThreadParams
,
1728 VIR_N_ELEMENTS(virPyDomainSetIOThreadParams
)) < 0) {
1732 PyErr_Format(PyExc_TypeError
, "IOThread polling params must be "
1737 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
1739 LIBVIRT_BEGIN_ALLOW_THREADS
;
1740 c_retval
= virDomainSetIOThreadParams(dom
, iothread_val
,
1741 params
, nparams
, flags
);
1742 LIBVIRT_END_ALLOW_THREADS
;
1744 virTypedParamsFree(params
, nparams
);
1746 return libvirt_intWrap(c_retval
);
1748 #endif /* LIBVIR_CHECK_VERSION(4, 10, 0) */
1750 /************************************************************************
1752 * Global error handler at the Python level *
1754 ************************************************************************/
1756 static PyObject
*libvirt_virPythonErrorFuncHandler
= NULL
;
1757 static PyObject
*libvirt_virPythonErrorFuncCtxt
= NULL
;
1760 libvirt_virGetLastError(PyObject
*self ATTRIBUTE_UNUSED
,
1761 PyObject
*args ATTRIBUTE_UNUSED
)
1766 if ((err
= virGetLastError()) == NULL
)
1769 if ((info
= PyTuple_New(9)) == NULL
)
1772 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_intWrap(err
->code
), error
);
1773 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_intWrap(err
->domain
), error
);
1774 VIR_PY_TUPLE_SET_GOTO(info
, 2, libvirt_constcharPtrWrap(err
->message
), error
);
1775 VIR_PY_TUPLE_SET_GOTO(info
, 3, libvirt_intWrap(err
->level
), error
);
1776 VIR_PY_TUPLE_SET_GOTO(info
, 4, libvirt_constcharPtrWrap(err
->str1
), error
);
1777 VIR_PY_TUPLE_SET_GOTO(info
, 5, libvirt_constcharPtrWrap(err
->str2
), error
);
1778 VIR_PY_TUPLE_SET_GOTO(info
, 6, libvirt_constcharPtrWrap(err
->str3
), error
);
1779 VIR_PY_TUPLE_SET_GOTO(info
, 7, libvirt_intWrap(err
->int1
), error
);
1780 VIR_PY_TUPLE_SET_GOTO(info
, 8, libvirt_intWrap(err
->int2
), error
);
1790 libvirt_virConnGetLastError(PyObject
*self ATTRIBUTE_UNUSED
,
1796 PyObject
*pyobj_conn
;
1798 if (!PyArg_ParseTuple(args
, (char *)"O:virConGetLastError", &pyobj_conn
))
1800 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
1802 LIBVIRT_BEGIN_ALLOW_THREADS
;
1803 err
= virConnGetLastError(conn
);
1804 LIBVIRT_END_ALLOW_THREADS
;
1809 if ((info
= PyTuple_New(9)) == NULL
)
1812 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_intWrap(err
->code
), error
);
1813 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_intWrap(err
->domain
), error
);
1814 VIR_PY_TUPLE_SET_GOTO(info
, 2, libvirt_constcharPtrWrap(err
->message
), error
);
1815 VIR_PY_TUPLE_SET_GOTO(info
, 3, libvirt_intWrap(err
->level
), error
);
1816 VIR_PY_TUPLE_SET_GOTO(info
, 4, libvirt_constcharPtrWrap(err
->str1
), error
);
1817 VIR_PY_TUPLE_SET_GOTO(info
, 5, libvirt_constcharPtrWrap(err
->str2
), error
);
1818 VIR_PY_TUPLE_SET_GOTO(info
, 6, libvirt_constcharPtrWrap(err
->str3
), error
);
1819 VIR_PY_TUPLE_SET_GOTO(info
, 7, libvirt_intWrap(err
->int1
), error
);
1820 VIR_PY_TUPLE_SET_GOTO(info
, 8, libvirt_intWrap(err
->int2
), error
);
1830 libvirt_virErrorFuncHandler(ATTRIBUTE_UNUSED
void *ctx
,
1833 PyObject
*list
= NULL
, *info
= NULL
;
1836 DEBUG("libvirt_virErrorFuncHandler(%p, %s, ...) called\n", ctx
,
1839 if ((err
== NULL
) || (err
->code
== VIR_ERR_OK
))
1842 LIBVIRT_ENSURE_THREAD_STATE
;
1844 if ((libvirt_virPythonErrorFuncHandler
== NULL
) ||
1845 (libvirt_virPythonErrorFuncHandler
== Py_None
)) {
1846 virDefaultErrorFunc(err
);
1848 if ((list
= PyTuple_New(2)) == NULL
)
1851 Py_XINCREF(libvirt_virPythonErrorFuncCtxt
);
1852 VIR_PY_TUPLE_SET_GOTO(list
, 0, libvirt_virPythonErrorFuncCtxt
, cleanup
);
1854 if ((info
= PyTuple_New(9)) == NULL
)
1857 VIR_PY_TUPLE_SET_GOTO(list
, 1, info
, cleanup
);
1859 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_intWrap(err
->code
), cleanup
);
1860 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_intWrap(err
->domain
), cleanup
);
1861 VIR_PY_TUPLE_SET_GOTO(info
, 2, libvirt_constcharPtrWrap(err
->message
), cleanup
);
1862 VIR_PY_TUPLE_SET_GOTO(info
, 3, libvirt_intWrap(err
->level
), cleanup
);
1863 VIR_PY_TUPLE_SET_GOTO(info
, 4, libvirt_constcharPtrWrap(err
->str1
), cleanup
);
1864 VIR_PY_TUPLE_SET_GOTO(info
, 5, libvirt_constcharPtrWrap(err
->str2
), cleanup
);
1865 VIR_PY_TUPLE_SET_GOTO(info
, 6, libvirt_constcharPtrWrap(err
->str3
), cleanup
);
1866 VIR_PY_TUPLE_SET_GOTO(info
, 7, libvirt_intWrap(err
->int1
), cleanup
);
1867 VIR_PY_TUPLE_SET_GOTO(info
, 8, libvirt_intWrap(err
->int2
), cleanup
);
1869 /* TODO pass conn and dom if available */
1870 result
= PyObject_Call(libvirt_virPythonErrorFuncHandler
, list
, NULL
);
1876 LIBVIRT_RELEASE_THREAD_STATE
;
1880 libvirt_virRegisterErrorHandler(ATTRIBUTE_UNUSED PyObject
*self
,
1883 PyObject
*py_retval
;
1885 PyObject
*pyobj_ctx
;
1887 if (!PyArg_ParseTuple(args
, (char *) "OO:virRegisterErrorHandler",
1888 &pyobj_f
, &pyobj_ctx
))
1891 DEBUG("libvirt_virRegisterErrorHandler(%p, %p) called\n", pyobj_ctx
,
1894 virSetErrorFunc(NULL
, libvirt_virErrorFuncHandler
);
1896 Py_XDECREF(libvirt_virPythonErrorFuncHandler
);
1897 Py_XDECREF(libvirt_virPythonErrorFuncCtxt
);
1899 if ((pyobj_f
== Py_None
) && (pyobj_ctx
== Py_None
)) {
1900 libvirt_virPythonErrorFuncHandler
= NULL
;
1901 libvirt_virPythonErrorFuncCtxt
= NULL
;
1903 Py_XINCREF(pyobj_ctx
);
1904 Py_XINCREF(pyobj_f
);
1906 /* TODO: check f is a function ! */
1907 libvirt_virPythonErrorFuncHandler
= pyobj_f
;
1908 libvirt_virPythonErrorFuncCtxt
= pyobj_ctx
;
1911 py_retval
= libvirt_intWrap(1);
1916 virConnectCredCallbackWrapper(virConnectCredentialPtr cred
,
1920 PyObject
*list
= NULL
;
1922 PyObject
*pyauth
= (PyObject
*)cbdata
;
1925 PyObject
*pyret
= NULL
;
1929 LIBVIRT_ENSURE_THREAD_STATE
;
1931 pycb
= PyList_GetItem(pyauth
, 1);
1932 pycbdata
= PyList_GetItem(pyauth
, 2);
1934 if ((list
= PyTuple_New(2)) == NULL
)
1937 if ((pycred
= PyTuple_New(ncred
)) == NULL
)
1940 VIR_PY_TUPLE_SET_GOTO(list
, 0, pycred
, cleanup
);
1942 for (i
= 0; i
< ncred
; i
++) {
1943 PyObject
*pycreditem
;
1944 if ((pycreditem
= PyList_New(5)) == NULL
)
1947 VIR_PY_TUPLE_SET_GOTO(pycred
, i
, pycreditem
, cleanup
);
1949 VIR_PY_LIST_SET_GOTO(pycreditem
, 0,
1950 libvirt_intWrap(cred
[i
].type
), cleanup
);
1951 VIR_PY_LIST_SET_GOTO(pycreditem
, 1,
1952 libvirt_constcharPtrWrap(cred
[i
].prompt
), cleanup
);
1954 if (cred
[i
].challenge
) {
1955 VIR_PY_LIST_SET_GOTO(pycreditem
, 2,
1956 libvirt_constcharPtrWrap(cred
[i
].challenge
),
1959 VIR_PY_LIST_SET_GOTO(pycreditem
, 2, VIR_PY_NONE
, cleanup
);
1961 if (cred
[i
].defresult
) {
1962 VIR_PY_LIST_SET_GOTO(pycreditem
, 3,
1963 libvirt_constcharPtrWrap(cred
[i
].defresult
),
1966 VIR_PY_LIST_SET_GOTO(pycreditem
, 3, VIR_PY_NONE
, cleanup
);
1968 VIR_PY_LIST_SET_GOTO(pycreditem
, 4, VIR_PY_NONE
, cleanup
);
1971 Py_XINCREF(pycbdata
);
1972 VIR_PY_TUPLE_SET_GOTO(list
, 1, pycbdata
, cleanup
);
1975 pyret
= PyObject_Call(pycb
, list
, NULL
);
1976 if (PyErr_Occurred()) {
1981 ret
= PyLong_AsLong(pyret
);
1983 for (i
= 0; i
< ncred
; i
++) {
1984 PyObject
*pycreditem
;
1986 char *result
= NULL
;
1987 pycreditem
= PyTuple_GetItem(pycred
, i
);
1988 pyresult
= PyList_GetItem(pycreditem
, 4);
1989 if (pyresult
!= Py_None
) {
1990 libvirt_charPtrUnwrap(pyresult
, &result
);
1993 if (result
!= NULL
) {
1994 cred
[i
].result
= result
;
1995 cred
[i
].resultlen
= strlen(result
);
1997 cred
[i
].result
= NULL
;
1998 cred
[i
].resultlen
= 0;
2007 LIBVIRT_RELEASE_THREAD_STATE
;
2014 libvirt_virConnectOpenAuth(PyObject
*self ATTRIBUTE_UNUSED
,
2017 PyObject
*py_retval
;
2018 virConnectPtr c_retval
= NULL
;
2023 PyObject
*pycredtype
;
2024 virConnectAuth auth
;
2026 memset(&auth
, 0, sizeof(auth
));
2027 if (!PyArg_ParseTuple(args
, (char *)"zOI:virConnectOpenAuth",
2028 &name
, &pyauth
, &flags
))
2031 pycredtype
= PyList_GetItem(pyauth
, 0);
2032 pycredcb
= PyList_GetItem(pyauth
, 1);
2034 auth
.ncredtype
= PyList_Size(pycredtype
);
2035 if (auth
.ncredtype
) {
2037 if (VIR_ALLOC_N(auth
.credtype
, auth
.ncredtype
) < 0)
2038 return PyErr_NoMemory();
2039 for (i
= 0; i
< auth
.ncredtype
; i
++) {
2041 val
= PyList_GetItem(pycredtype
, i
);
2042 if (libvirt_intUnwrap(val
, &auth
.credtype
[i
]) < 0)
2046 if (pycredcb
&& pycredcb
!= Py_None
)
2047 auth
.cb
= virConnectCredCallbackWrapper
;
2048 auth
.cbdata
= pyauth
;
2050 LIBVIRT_BEGIN_ALLOW_THREADS
;
2051 c_retval
= virConnectOpenAuth(name
, &auth
, flags
);
2052 LIBVIRT_END_ALLOW_THREADS
;
2055 VIR_FREE(auth
.credtype
);
2056 py_retval
= libvirt_virConnectPtrWrap((virConnectPtr
) c_retval
);
2061 /************************************************************************
2063 * Wrappers for functions where generator fails *
2065 ************************************************************************/
2068 libvirt_virGetVersion(PyObject
*self ATTRIBUTE_UNUSED
,
2072 unsigned long libVer
, typeVer
= 0;
2075 if (!PyArg_ParseTuple(args
, (char *) "|s:virGetVersion", &type
))
2078 LIBVIRT_BEGIN_ALLOW_THREADS
;
2080 c_retval
= virGetVersion(&libVer
, NULL
, NULL
);
2082 c_retval
= virGetVersion(&libVer
, type
, &typeVer
);
2083 LIBVIRT_END_ALLOW_THREADS
;
2089 return libvirt_intWrap(libVer
);
2091 return Py_BuildValue((char *) "kk", libVer
, typeVer
);
2095 libvirt_virConnectGetVersion(PyObject
*self ATTRIBUTE_UNUSED
,
2098 unsigned long hvVersion
;
2101 PyObject
*pyobj_conn
;
2103 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectGetVersion",
2106 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2108 LIBVIRT_BEGIN_ALLOW_THREADS
;
2109 c_retval
= virConnectGetVersion(conn
, &hvVersion
);
2110 LIBVIRT_END_ALLOW_THREADS
;
2113 return VIR_PY_INT_FAIL
;
2115 return libvirt_intWrap(hvVersion
);
2118 #if LIBVIR_CHECK_VERSION(1, 1, 3)
2120 libvirt_virConnectGetCPUModelNames(PyObject
*self ATTRIBUTE_UNUSED
,
2125 PyObject
*rv
= NULL
, *pyobj_conn
;
2126 char **models
= NULL
;
2128 unsigned int flags
= 0;
2129 const char *arch
= NULL
;
2131 if (!PyArg_ParseTuple(args
, (char *)"OsI:virConnectGetCPUModelNames",
2132 &pyobj_conn
, &arch
, &flags
))
2134 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2136 LIBVIRT_BEGIN_ALLOW_THREADS
;
2137 c_retval
= virConnectGetCPUModelNames(conn
, arch
, &models
, flags
);
2138 LIBVIRT_END_ALLOW_THREADS
;
2143 if ((rv
= PyList_New(c_retval
)) == NULL
)
2146 for (i
= 0; i
< c_retval
; i
++)
2147 VIR_PY_LIST_SET_GOTO(rv
, i
, libvirt_constcharPtrWrap(models
[i
]), error
);
2151 for (i
= 0; i
< c_retval
; i
++)
2152 VIR_FREE(models
[i
]);
2162 #endif /* LIBVIR_CHECK_VERSION(1, 1, 3) */
2165 libvirt_virConnectGetLibVersion(PyObject
*self ATTRIBUTE_UNUSED
,
2168 unsigned long libVer
;
2171 PyObject
*pyobj_conn
;
2173 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectGetLibVersion",
2176 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2178 LIBVIRT_BEGIN_ALLOW_THREADS
;
2179 c_retval
= virConnectGetLibVersion(conn
, &libVer
);
2180 LIBVIRT_END_ALLOW_THREADS
;
2183 return VIR_PY_INT_FAIL
;
2185 return libvirt_intWrap(libVer
);
2189 libvirt_virConnectListDomainsID(PyObject
*self ATTRIBUTE_UNUSED
,
2192 PyObject
*py_retval
;
2193 int *ids
= NULL
, c_retval
;
2196 PyObject
*pyobj_conn
;
2199 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListDomains", &pyobj_conn
))
2201 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2203 LIBVIRT_BEGIN_ALLOW_THREADS
;
2204 c_retval
= virConnectNumOfDomains(conn
);
2205 LIBVIRT_END_ALLOW_THREADS
;
2211 if (VIR_ALLOC_N(ids
, c_retval
) < 0)
2212 return PyErr_NoMemory();
2214 LIBVIRT_BEGIN_ALLOW_THREADS
;
2215 c_retval
= virConnectListDomains(conn
, ids
, c_retval
);
2216 LIBVIRT_END_ALLOW_THREADS
;
2219 py_retval
= VIR_PY_NONE
;
2224 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
2228 for (i
= 0; i
< c_retval
; i
++)
2229 VIR_PY_LIST_SET_GOTO(py_retval
, i
, libvirt_intWrap(ids
[i
]), error
);
2237 Py_XDECREF(py_retval
);
2241 #if LIBVIR_CHECK_VERSION(0, 9, 13)
2243 libvirt_virConnectListAllDomains(PyObject
*self ATTRIBUTE_UNUSED
,
2246 PyObject
*pyobj_conn
;
2247 PyObject
*py_retval
= NULL
;
2249 virDomainPtr
*doms
= NULL
;
2254 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllDomains",
2255 &pyobj_conn
, &flags
))
2257 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2259 LIBVIRT_BEGIN_ALLOW_THREADS
;
2260 c_retval
= virConnectListAllDomains(conn
, &doms
, flags
);
2261 LIBVIRT_END_ALLOW_THREADS
;
2266 if (!(py_retval
= PyList_New(c_retval
)))
2269 for (i
= 0; i
< c_retval
; i
++) {
2270 VIR_PY_LIST_SET_GOTO(py_retval
, i
, libvirt_virDomainPtrWrap(doms
[i
]), error
);
2271 /* python steals the pointer */
2276 for (i
= 0; i
< c_retval
; i
++)
2278 virDomainFree(doms
[i
]);
2283 Py_CLEAR(py_retval
);
2286 #endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
2289 libvirt_virConnectListDefinedDomains(PyObject
*self ATTRIBUTE_UNUSED
,
2292 PyObject
*py_retval
;
2293 char **names
= NULL
;
2297 PyObject
*pyobj_conn
;
2300 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListDefinedDomains",
2303 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2305 LIBVIRT_BEGIN_ALLOW_THREADS
;
2306 c_retval
= virConnectNumOfDefinedDomains(conn
);
2307 LIBVIRT_END_ALLOW_THREADS
;
2313 if (VIR_ALLOC_N(names
, c_retval
) < 0)
2314 return PyErr_NoMemory();
2316 LIBVIRT_BEGIN_ALLOW_THREADS
;
2317 c_retval
= virConnectListDefinedDomains(conn
, names
, c_retval
);
2318 LIBVIRT_END_ALLOW_THREADS
;
2321 py_retval
= VIR_PY_NONE
;
2326 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
2330 for (i
= 0; i
< c_retval
; i
++)
2331 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
2332 libvirt_constcharPtrWrap(names
[i
]), error
);
2337 for (i
= 0; i
< c_retval
; i
++)
2343 Py_CLEAR(py_retval
);
2347 #if LIBVIR_CHECK_VERSION(5, 6, 0)
2349 libvirt_virDomainListAllCheckpoints(PyObject
*self ATTRIBUTE_UNUSED
,
2352 PyObject
*py_retval
= NULL
;
2353 virDomainCheckpointPtr
*chks
= NULL
;
2357 PyObject
*pyobj_dom
;
2360 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainListAllCheckpoints",
2361 &pyobj_dom
, &flags
))
2363 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
2365 LIBVIRT_BEGIN_ALLOW_THREADS
;
2366 c_retval
= virDomainListAllCheckpoints(dom
, &chks
, flags
);
2367 LIBVIRT_END_ALLOW_THREADS
;
2372 if (!(py_retval
= PyList_New(c_retval
)))
2375 for (i
= 0; i
< c_retval
; i
++) {
2376 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
2377 libvirt_virDomainCheckpointPtrWrap(chks
[i
]), error
);
2382 for (i
= 0; i
< c_retval
; i
++)
2384 virDomainCheckpointFree(chks
[i
]);
2389 Py_CLEAR(py_retval
);
2394 libvirt_virDomainCheckpointListAllChildren(PyObject
*self ATTRIBUTE_UNUSED
,
2397 PyObject
*py_retval
= NULL
;
2398 virDomainCheckpointPtr
*chks
= NULL
;
2401 virDomainCheckpointPtr parent
;
2402 PyObject
*pyobj_parent
;
2405 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainCheckpointListAllChildren",
2406 &pyobj_parent
, &flags
))
2408 parent
= (virDomainCheckpointPtr
) PyvirDomainCheckpoint_Get(pyobj_parent
);
2410 LIBVIRT_BEGIN_ALLOW_THREADS
;
2411 c_retval
= virDomainCheckpointListAllChildren(parent
, &chks
, flags
);
2412 LIBVIRT_END_ALLOW_THREADS
;
2417 if (!(py_retval
= PyList_New(c_retval
)))
2420 for (i
= 0; i
< c_retval
; i
++) {
2421 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
2422 libvirt_virDomainCheckpointPtrWrap(chks
[i
]), error
);
2427 for (i
= 0; i
< c_retval
; i
++)
2429 virDomainCheckpointFree(chks
[i
]);
2434 Py_CLEAR(py_retval
);
2437 #endif /* LIBVIR_CHECK_VERSION(5, 6, 0) */
2440 libvirt_virDomainSnapshotListNames(PyObject
*self ATTRIBUTE_UNUSED
,
2443 PyObject
*py_retval
;
2444 char **names
= NULL
;
2448 PyObject
*pyobj_dom
;
2451 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainSnapshotListNames",
2452 &pyobj_dom
, &flags
))
2454 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
2456 LIBVIRT_BEGIN_ALLOW_THREADS
;
2457 c_retval
= virDomainSnapshotNum(dom
, flags
);
2458 LIBVIRT_END_ALLOW_THREADS
;
2464 if (VIR_ALLOC_N(names
, c_retval
) < 0)
2465 return PyErr_NoMemory();
2467 LIBVIRT_BEGIN_ALLOW_THREADS
;
2468 c_retval
= virDomainSnapshotListNames(dom
, names
, c_retval
, flags
);
2469 LIBVIRT_END_ALLOW_THREADS
;
2472 py_retval
= VIR_PY_NONE
;
2476 py_retval
= PyList_New(c_retval
);
2480 for (i
= 0; i
< c_retval
; i
++)
2481 VIR_PY_LIST_SET_GOTO(py_retval
, i
, libvirt_constcharPtrWrap(names
[i
]), error
);
2485 for (i
= 0; i
< c_retval
; i
++)
2491 Py_CLEAR(py_retval
);
2495 #if LIBVIR_CHECK_VERSION(0, 9, 13)
2497 libvirt_virDomainListAllSnapshots(PyObject
*self ATTRIBUTE_UNUSED
,
2500 PyObject
*py_retval
= NULL
;
2501 virDomainSnapshotPtr
*snaps
= NULL
;
2505 PyObject
*pyobj_dom
;
2508 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainListAllSnapshots",
2509 &pyobj_dom
, &flags
))
2511 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
2513 LIBVIRT_BEGIN_ALLOW_THREADS
;
2514 c_retval
= virDomainListAllSnapshots(dom
, &snaps
, flags
);
2515 LIBVIRT_END_ALLOW_THREADS
;
2520 if (!(py_retval
= PyList_New(c_retval
)))
2523 for (i
= 0; i
< c_retval
; i
++) {
2524 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
2525 libvirt_virDomainSnapshotPtrWrap(snaps
[i
]), error
);
2530 for (i
= 0; i
< c_retval
; i
++)
2532 virDomainSnapshotFree(snaps
[i
]);
2537 Py_CLEAR(py_retval
);
2540 #endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
2543 libvirt_virDomainSnapshotListChildrenNames(PyObject
*self ATTRIBUTE_UNUSED
,
2546 PyObject
*py_retval
;
2547 char **names
= NULL
;
2550 virDomainSnapshotPtr snap
;
2551 PyObject
*pyobj_snap
;
2554 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainSnapshotListChildrenNames",
2555 &pyobj_snap
, &flags
))
2557 snap
= (virDomainSnapshotPtr
) PyvirDomainSnapshot_Get(pyobj_snap
);
2559 LIBVIRT_BEGIN_ALLOW_THREADS
;
2560 c_retval
= virDomainSnapshotNumChildren(snap
, flags
);
2561 LIBVIRT_END_ALLOW_THREADS
;
2567 if (VIR_ALLOC_N(names
, c_retval
) < 0)
2568 return PyErr_NoMemory();
2570 LIBVIRT_BEGIN_ALLOW_THREADS
;
2571 c_retval
= virDomainSnapshotListChildrenNames(snap
, names
, c_retval
,
2573 LIBVIRT_END_ALLOW_THREADS
;
2576 py_retval
= VIR_PY_NONE
;
2581 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
2584 for (i
= 0; i
< c_retval
; i
++)
2585 VIR_PY_LIST_SET_GOTO(py_retval
, i
, libvirt_constcharPtrWrap(names
[i
]), error
);
2589 for (i
= 0; i
< c_retval
; i
++)
2595 Py_CLEAR(py_retval
);
2599 #if LIBVIR_CHECK_VERSION(0, 9, 13)
2601 libvirt_virDomainSnapshotListAllChildren(PyObject
*self ATTRIBUTE_UNUSED
,
2604 PyObject
*py_retval
= NULL
;
2605 virDomainSnapshotPtr
*snaps
= NULL
;
2608 virDomainSnapshotPtr parent
;
2609 PyObject
*pyobj_parent
;
2612 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainSnapshotListAllChildren",
2613 &pyobj_parent
, &flags
))
2615 parent
= (virDomainSnapshotPtr
) PyvirDomainSnapshot_Get(pyobj_parent
);
2617 LIBVIRT_BEGIN_ALLOW_THREADS
;
2618 c_retval
= virDomainSnapshotListAllChildren(parent
, &snaps
, flags
);
2619 LIBVIRT_END_ALLOW_THREADS
;
2624 if (!(py_retval
= PyList_New(c_retval
)))
2627 for (i
= 0; i
< c_retval
; i
++) {
2628 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
2629 libvirt_virDomainSnapshotPtrWrap(snaps
[i
]), error
);
2634 for (i
= 0; i
< c_retval
; i
++)
2636 virDomainSnapshotFree(snaps
[i
]);
2641 Py_CLEAR(py_retval
);
2644 #endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
2647 libvirt_virDomainRevertToSnapshot(PyObject
*self ATTRIBUTE_UNUSED
,
2651 virDomainSnapshotPtr snap
;
2652 PyObject
*pyobj_snap
;
2653 PyObject
*pyobj_dom
;
2656 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainRevertToSnapshot",
2657 &pyobj_dom
, &pyobj_snap
, &flags
))
2659 snap
= (virDomainSnapshotPtr
) PyvirDomainSnapshot_Get(pyobj_snap
);
2661 LIBVIRT_BEGIN_ALLOW_THREADS
;
2662 c_retval
= virDomainRevertToSnapshot(snap
, flags
);
2663 LIBVIRT_END_ALLOW_THREADS
;
2666 return VIR_PY_INT_FAIL
;
2668 return libvirt_intWrap(c_retval
);
2672 libvirt_virDomainGetInfo(PyObject
*self ATTRIBUTE_UNUSED
,
2675 PyObject
*py_retval
;
2677 virDomainPtr domain
;
2678 PyObject
*pyobj_domain
;
2681 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetInfo", &pyobj_domain
))
2683 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
2685 LIBVIRT_BEGIN_ALLOW_THREADS
;
2686 c_retval
= virDomainGetInfo(domain
, &info
);
2687 LIBVIRT_END_ALLOW_THREADS
;
2692 if ((py_retval
= PyList_New(5)) == NULL
)
2695 VIR_PY_LIST_SET_GOTO(py_retval
, 0, libvirt_intWrap(info
.state
), error
);
2696 VIR_PY_LIST_SET_GOTO(py_retval
, 1, libvirt_ulongWrap(info
.maxMem
), error
);
2697 VIR_PY_LIST_SET_GOTO(py_retval
, 2, libvirt_ulongWrap(info
.memory
), error
);
2698 VIR_PY_LIST_SET_GOTO(py_retval
, 3,
2699 libvirt_intWrap(info
.nrVirtCpu
), error
);
2700 VIR_PY_LIST_SET_GOTO(py_retval
, 4,
2701 libvirt_ulonglongWrap(info
.cpuTime
), error
);
2706 Py_XDECREF(py_retval
);
2711 libvirt_virDomainGetState(PyObject
*self ATTRIBUTE_UNUSED
,
2714 PyObject
*py_retval
;
2716 virDomainPtr domain
;
2717 PyObject
*pyobj_domain
;
2722 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetState",
2723 &pyobj_domain
, &flags
))
2726 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
2728 LIBVIRT_BEGIN_ALLOW_THREADS
;
2729 c_retval
= virDomainGetState(domain
, &state
, &reason
, flags
);
2730 LIBVIRT_END_ALLOW_THREADS
;
2735 if ((py_retval
= PyList_New(2)) == NULL
)
2738 VIR_PY_LIST_SET_GOTO(py_retval
, 0, libvirt_intWrap(state
), error
);
2739 VIR_PY_LIST_SET_GOTO(py_retval
, 1, libvirt_intWrap(reason
), error
);
2744 Py_XDECREF(py_retval
);
2749 libvirt_virDomainGetControlInfo(PyObject
*self ATTRIBUTE_UNUSED
,
2752 PyObject
*py_retval
;
2754 virDomainPtr domain
;
2755 PyObject
*pyobj_domain
;
2756 virDomainControlInfo info
;
2759 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetControlInfo",
2760 &pyobj_domain
, &flags
))
2762 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
2764 LIBVIRT_BEGIN_ALLOW_THREADS
;
2765 c_retval
= virDomainGetControlInfo(domain
, &info
, flags
);
2766 LIBVIRT_END_ALLOW_THREADS
;
2771 if ((py_retval
= PyList_New(3)) == NULL
)
2774 VIR_PY_LIST_SET_GOTO(py_retval
, 0, libvirt_intWrap(info
.state
), error
);
2775 VIR_PY_LIST_SET_GOTO(py_retval
, 1, libvirt_intWrap(info
.details
), error
);
2776 VIR_PY_LIST_SET_GOTO(py_retval
, 2,
2777 libvirt_ulonglongWrap(info
.stateTime
), error
);
2782 Py_XDECREF(py_retval
);
2787 libvirt_virDomainGetBlockInfo(PyObject
*self ATTRIBUTE_UNUSED
,
2790 PyObject
*py_retval
;
2792 virDomainPtr domain
;
2793 PyObject
*pyobj_domain
;
2794 virDomainBlockInfo info
;
2798 if (!PyArg_ParseTuple(args
, (char *)"OzI:virDomainGetBlockInfo",
2799 &pyobj_domain
, &path
, &flags
))
2801 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
2803 LIBVIRT_BEGIN_ALLOW_THREADS
;
2804 c_retval
= virDomainGetBlockInfo(domain
, path
, &info
, flags
);
2805 LIBVIRT_END_ALLOW_THREADS
;
2810 if ((py_retval
= PyList_New(3)) == NULL
)
2813 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
2814 libvirt_ulonglongWrap(info
.capacity
), error
);
2815 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
2816 libvirt_ulonglongWrap(info
.allocation
), error
);
2817 VIR_PY_LIST_SET_GOTO(py_retval
, 2,
2818 libvirt_ulonglongWrap(info
.physical
), error
);
2823 Py_XDECREF(py_retval
);
2828 libvirt_virNodeGetInfo(PyObject
*self ATTRIBUTE_UNUSED
,
2831 PyObject
*py_retval
;
2834 PyObject
*pyobj_conn
;
2837 if (!PyArg_ParseTuple(args
, (char *)"O:virNodeGetInfo", &pyobj_conn
))
2839 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2841 LIBVIRT_BEGIN_ALLOW_THREADS
;
2842 c_retval
= virNodeGetInfo(conn
, &info
);
2843 LIBVIRT_END_ALLOW_THREADS
;
2848 if ((py_retval
= PyList_New(8)) == NULL
)
2851 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
2852 libvirt_constcharPtrWrap(&info
.model
[0]), error
);
2853 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
2854 libvirt_ulongWrap(info
.memory
>> 10), error
);
2855 VIR_PY_LIST_SET_GOTO(py_retval
, 2, libvirt_intWrap(info
.cpus
), error
);
2856 VIR_PY_LIST_SET_GOTO(py_retval
, 3, libvirt_intWrap(info
.mhz
), error
);
2857 VIR_PY_LIST_SET_GOTO(py_retval
, 4, libvirt_intWrap(info
.nodes
), error
);
2858 VIR_PY_LIST_SET_GOTO(py_retval
, 5, libvirt_intWrap(info
.sockets
), error
);
2859 VIR_PY_LIST_SET_GOTO(py_retval
, 6, libvirt_intWrap(info
.cores
), error
);
2860 VIR_PY_LIST_SET_GOTO(py_retval
, 7, libvirt_intWrap(info
.threads
), error
);
2865 Py_XDECREF(py_retval
);
2870 libvirt_virNodeGetSecurityModel(PyObject
*self ATTRIBUTE_UNUSED
,
2873 PyObject
*py_retval
;
2876 PyObject
*pyobj_conn
;
2877 virSecurityModel model
;
2879 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetSecurityModel",
2882 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2884 LIBVIRT_BEGIN_ALLOW_THREADS
;
2885 c_retval
= virNodeGetSecurityModel(conn
, &model
);
2886 LIBVIRT_END_ALLOW_THREADS
;
2891 if ((py_retval
= PyList_New(2)) == NULL
)
2894 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
2895 libvirt_constcharPtrWrap(&model
.model
[0]), error
);
2896 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
2897 libvirt_constcharPtrWrap(&model
.doi
[0]), error
);
2902 Py_XDECREF(py_retval
);
2907 libvirt_virDomainGetSecurityLabel(PyObject
*self ATTRIBUTE_UNUSED
,
2910 PyObject
*py_retval
;
2913 PyObject
*pyobj_dom
;
2914 virSecurityLabel label
;
2916 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetSecurityLabel",
2919 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
2921 LIBVIRT_BEGIN_ALLOW_THREADS
;
2922 c_retval
= virDomainGetSecurityLabel(dom
, &label
);
2923 LIBVIRT_END_ALLOW_THREADS
;
2928 if ((py_retval
= PyList_New(2)) == NULL
)
2931 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
2932 libvirt_constcharPtrWrap(&label
.label
[0]), error
);
2933 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
2934 libvirt_boolWrap(label
.enforcing
), error
);
2939 Py_XDECREF(py_retval
);
2943 #if LIBVIR_CHECK_VERSION(0, 10, 0)
2945 libvirt_virDomainGetSecurityLabelList(PyObject
*self ATTRIBUTE_UNUSED
,
2948 PyObject
*py_retval
;
2951 PyObject
*pyobj_dom
;
2952 virSecurityLabel
*labels
= NULL
;
2955 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetSecurityLabelList",
2959 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
2961 LIBVIRT_BEGIN_ALLOW_THREADS
;
2962 c_retval
= virDomainGetSecurityLabelList(dom
, &labels
);
2963 LIBVIRT_END_ALLOW_THREADS
;
2968 if (!(py_retval
= PyList_New(0)))
2971 for (i
= 0 ; i
< c_retval
; i
++) {
2974 if (!(entry
= PyList_New(2)))
2977 VIR_PY_LIST_APPEND_GOTO(py_retval
, entry
, error
);
2979 VIR_PY_LIST_SET_GOTO(entry
, 0,
2980 libvirt_constcharPtrWrap(&labels
[i
].label
[0]),
2982 VIR_PY_LIST_SET_GOTO(entry
, 1,
2983 libvirt_boolWrap(labels
[i
].enforcing
), error
);
2991 Py_CLEAR(py_retval
);
2994 #endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
2997 libvirt_virDomainGetUUID(PyObject
*self ATTRIBUTE_UNUSED
,
3000 unsigned char uuid
[VIR_UUID_BUFLEN
];
3001 virDomainPtr domain
;
3002 PyObject
*pyobj_domain
;
3005 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetUUID", &pyobj_domain
))
3007 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
3012 LIBVIRT_BEGIN_ALLOW_THREADS
;
3013 c_retval
= virDomainGetUUID(domain
, &uuid
[0]);
3014 LIBVIRT_END_ALLOW_THREADS
;
3019 return libvirt_charPtrSizeWrap((char *) &uuid
[0], VIR_UUID_BUFLEN
);
3023 libvirt_virDomainGetUUIDString(PyObject
*self ATTRIBUTE_UNUSED
,
3026 char uuidstr
[VIR_UUID_STRING_BUFLEN
];
3028 PyObject
*pyobj_dom
;
3031 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetUUIDString",
3034 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
3039 LIBVIRT_BEGIN_ALLOW_THREADS
;
3040 c_retval
= virDomainGetUUIDString(dom
, &uuidstr
[0]);
3041 LIBVIRT_END_ALLOW_THREADS
;
3046 return libvirt_constcharPtrWrap((char *) &uuidstr
[0]);
3050 libvirt_virDomainLookupByUUID(PyObject
*self ATTRIBUTE_UNUSED
,
3053 virDomainPtr c_retval
;
3055 PyObject
*pyobj_conn
;
3056 unsigned char * uuid
;
3059 if (!PyArg_ParseTuple(args
, (char *)"Oz#:virDomainLookupByUUID",
3060 &pyobj_conn
, &uuid
, &len
))
3062 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3064 if ((uuid
== NULL
) || (len
!= VIR_UUID_BUFLEN
))
3067 LIBVIRT_BEGIN_ALLOW_THREADS
;
3068 c_retval
= virDomainLookupByUUID(conn
, uuid
);
3069 LIBVIRT_END_ALLOW_THREADS
;
3071 return libvirt_virDomainPtrWrap((virDomainPtr
) c_retval
);
3076 libvirt_virConnectListNetworks(PyObject
*self ATTRIBUTE_UNUSED
,
3079 PyObject
*py_retval
;
3080 char **names
= NULL
;
3084 PyObject
*pyobj_conn
;
3087 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListNetworks",
3090 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3092 LIBVIRT_BEGIN_ALLOW_THREADS
;
3093 c_retval
= virConnectNumOfNetworks(conn
);
3094 LIBVIRT_END_ALLOW_THREADS
;
3100 if (VIR_ALLOC_N(names
, c_retval
) < 0)
3101 return PyErr_NoMemory();
3103 LIBVIRT_BEGIN_ALLOW_THREADS
;
3104 c_retval
= virConnectListNetworks(conn
, names
, c_retval
);
3105 LIBVIRT_END_ALLOW_THREADS
;
3108 py_retval
= VIR_PY_NONE
;
3113 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
3117 for (i
= 0; i
< c_retval
; i
++)
3118 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3119 libvirt_constcharPtrWrap(names
[i
]), error
);
3123 for (i
= 0; i
< c_retval
; i
++)
3129 Py_CLEAR(py_retval
);
3135 libvirt_virConnectListDefinedNetworks(PyObject
*self ATTRIBUTE_UNUSED
,
3138 PyObject
*py_retval
;
3139 char **names
= NULL
;
3143 PyObject
*pyobj_conn
;
3146 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListDefinedNetworks",
3149 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3151 LIBVIRT_BEGIN_ALLOW_THREADS
;
3152 c_retval
= virConnectNumOfDefinedNetworks(conn
);
3153 LIBVIRT_END_ALLOW_THREADS
;
3159 if (VIR_ALLOC_N(names
, c_retval
) < 0)
3160 return PyErr_NoMemory();
3162 LIBVIRT_BEGIN_ALLOW_THREADS
;
3163 c_retval
= virConnectListDefinedNetworks(conn
, names
, c_retval
);
3164 LIBVIRT_END_ALLOW_THREADS
;
3167 py_retval
= VIR_PY_NONE
;
3172 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
3175 for (i
= 0; i
< c_retval
; i
++)
3176 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3177 libvirt_constcharPtrWrap(names
[i
]), error
);
3181 for (i
= 0; i
< c_retval
; i
++)
3187 Py_CLEAR(py_retval
);
3191 #if LIBVIR_CHECK_VERSION(0, 10, 2)
3193 libvirt_virConnectListAllNetworks(PyObject
*self ATTRIBUTE_UNUSED
,
3196 PyObject
*pyobj_conn
;
3197 PyObject
*py_retval
= NULL
;
3199 virNetworkPtr
*nets
= NULL
;
3204 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllNetworks",
3205 &pyobj_conn
, &flags
))
3207 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3209 LIBVIRT_BEGIN_ALLOW_THREADS
;
3210 c_retval
= virConnectListAllNetworks(conn
, &nets
, flags
);
3211 LIBVIRT_END_ALLOW_THREADS
;
3216 if (!(py_retval
= PyList_New(c_retval
)))
3219 for (i
= 0; i
< c_retval
; i
++) {
3220 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3221 libvirt_virNetworkPtrWrap(nets
[i
]), error
);
3226 for (i
= 0; i
< c_retval
; i
++)
3228 virNetworkFree(nets
[i
]);
3233 Py_CLEAR(py_retval
);
3236 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
3240 libvirt_virNetworkGetUUID(PyObject
*self ATTRIBUTE_UNUSED
,
3243 unsigned char uuid
[VIR_UUID_BUFLEN
];
3244 virNetworkPtr domain
;
3245 PyObject
*pyobj_domain
;
3248 if (!PyArg_ParseTuple(args
, (char *)"O:virNetworkGetUUID", &pyobj_domain
))
3250 domain
= (virNetworkPtr
) PyvirNetwork_Get(pyobj_domain
);
3255 LIBVIRT_BEGIN_ALLOW_THREADS
;
3256 c_retval
= virNetworkGetUUID(domain
, &uuid
[0]);
3257 LIBVIRT_END_ALLOW_THREADS
;
3262 return libvirt_charPtrSizeWrap((char *) &uuid
[0], VIR_UUID_BUFLEN
);
3266 libvirt_virNetworkGetUUIDString(PyObject
*self ATTRIBUTE_UNUSED
,
3269 char uuidstr
[VIR_UUID_STRING_BUFLEN
];
3271 PyObject
*pyobj_net
;
3274 if (!PyArg_ParseTuple(args
, (char *)"O:virNetworkGetUUIDString",
3277 net
= (virNetworkPtr
) PyvirNetwork_Get(pyobj_net
);
3282 LIBVIRT_BEGIN_ALLOW_THREADS
;
3283 c_retval
= virNetworkGetUUIDString(net
, &uuidstr
[0]);
3284 LIBVIRT_END_ALLOW_THREADS
;
3289 return libvirt_constcharPtrWrap((char *) &uuidstr
[0]);
3293 libvirt_virNetworkLookupByUUID(PyObject
*self ATTRIBUTE_UNUSED
,
3296 virNetworkPtr c_retval
;
3298 PyObject
*pyobj_conn
;
3299 unsigned char * uuid
;
3302 if (!PyArg_ParseTuple(args
, (char *)"Oz#:virNetworkLookupByUUID",
3303 &pyobj_conn
, &uuid
, &len
))
3305 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3307 if ((uuid
== NULL
) || (len
!= VIR_UUID_BUFLEN
))
3310 LIBVIRT_BEGIN_ALLOW_THREADS
;
3311 c_retval
= virNetworkLookupByUUID(conn
, uuid
);
3312 LIBVIRT_END_ALLOW_THREADS
;
3314 return libvirt_virNetworkPtrWrap((virNetworkPtr
) c_retval
);
3319 libvirt_virDomainGetAutostart(PyObject
*self ATTRIBUTE_UNUSED
,
3322 int c_retval
, autostart
;
3323 virDomainPtr domain
;
3324 PyObject
*pyobj_domain
;
3326 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetAutostart",
3330 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
3332 LIBVIRT_BEGIN_ALLOW_THREADS
;
3333 c_retval
= virDomainGetAutostart(domain
, &autostart
);
3334 LIBVIRT_END_ALLOW_THREADS
;
3337 return VIR_PY_INT_FAIL
;
3339 return libvirt_intWrap(autostart
);
3344 libvirt_virNetworkGetAutostart(PyObject
*self ATTRIBUTE_UNUSED
,
3347 int c_retval
, autostart
;
3348 virNetworkPtr network
;
3349 PyObject
*pyobj_network
;
3351 if (!PyArg_ParseTuple(args
, (char *)"O:virNetworkGetAutostart",
3355 network
= (virNetworkPtr
) PyvirNetwork_Get(pyobj_network
);
3357 LIBVIRT_BEGIN_ALLOW_THREADS
;
3358 c_retval
= virNetworkGetAutostart(network
, &autostart
);
3359 LIBVIRT_END_ALLOW_THREADS
;
3362 return VIR_PY_INT_FAIL
;
3364 return libvirt_intWrap(autostart
);
3367 #if LIBVIR_CHECK_VERSION(7, 8, 0)
3369 libvirt_virNodeDeviceGetAutostart(PyObject
*self ATTRIBUTE_UNUSED
,
3372 int c_retval
, autostart
;
3373 virNodeDevicePtr dev
;
3374 PyObject
*pyobj_dev
;
3376 if (!PyArg_ParseTuple(args
, (char *)"O:virNodeDeviceGetAutostart",
3380 dev
= (virNodeDevicePtr
) PyvirNodeDevice_Get(pyobj_dev
);
3382 LIBVIRT_BEGIN_ALLOW_THREADS
;
3383 c_retval
= virNodeDeviceGetAutostart(dev
, &autostart
);
3384 LIBVIRT_END_ALLOW_THREADS
;
3387 return VIR_PY_INT_FAIL
;
3389 return libvirt_intWrap(autostart
);
3391 #endif /* LIBVIR_CHECK_VERSION(7, 8, 0) */
3394 libvirt_virNodeGetCellsFreeMemory(PyObject
*self ATTRIBUTE_UNUSED
,
3397 PyObject
*py_retval
;
3398 PyObject
*pyobj_conn
;
3399 int startCell
, maxCells
, c_retval
;
3402 unsigned long long *freeMems
;
3404 if (!PyArg_ParseTuple(args
, (char *)"Oii:virNodeGetCellsFreeMemory",
3405 &pyobj_conn
, &startCell
, &maxCells
))
3408 if ((startCell
< 0) || (maxCells
<= 0) || (startCell
+ maxCells
> 10000))
3411 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3412 if (VIR_ALLOC_N(freeMems
, maxCells
) < 0)
3413 return PyErr_NoMemory();
3415 LIBVIRT_BEGIN_ALLOW_THREADS
;
3416 c_retval
= virNodeGetCellsFreeMemory(conn
, freeMems
, startCell
, maxCells
);
3417 LIBVIRT_END_ALLOW_THREADS
;
3420 py_retval
= VIR_PY_NONE
;
3424 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
3427 for (i
= 0; i
< c_retval
; i
++)
3428 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3429 libvirt_ulonglongWrap(freeMems
[i
]), error
);
3436 Py_CLEAR(py_retval
);
3441 libvirt_virNodeGetCPUStats(PyObject
*self ATTRIBUTE_UNUSED
,
3444 PyObject
*ret
= NULL
;
3445 PyObject
*key
= NULL
;
3446 PyObject
*val
= NULL
;
3447 PyObject
*pyobj_conn
;
3450 int cpuNum
, c_retval
;
3453 virNodeCPUStatsPtr stats
= NULL
;
3455 if (!PyArg_ParseTuple(args
, (char *)"OiI:virNodeGetCPUStats",
3456 &pyobj_conn
, &cpuNum
, &flags
))
3458 conn
= (virConnectPtr
)(PyvirConnect_Get(pyobj_conn
));
3460 LIBVIRT_BEGIN_ALLOW_THREADS
;
3461 c_retval
= virNodeGetCPUStats(conn
, cpuNum
, NULL
, &nparams
, flags
);
3462 LIBVIRT_END_ALLOW_THREADS
;
3468 if (VIR_ALLOC_N(stats
, nparams
) < 0)
3469 return PyErr_NoMemory();
3471 LIBVIRT_BEGIN_ALLOW_THREADS
;
3472 c_retval
= virNodeGetCPUStats(conn
, cpuNum
, stats
, &nparams
, flags
);
3473 LIBVIRT_END_ALLOW_THREADS
;
3481 if (!(ret
= PyDict_New()))
3484 for (i
= 0; i
< nparams
; i
++) {
3485 key
= libvirt_constcharPtrWrap(stats
[i
].field
);
3486 val
= libvirt_ulonglongWrap(stats
[i
].value
);
3488 VIR_PY_DICT_SET_GOTO(ret
, key
, val
, error
);
3501 libvirt_virNodeGetMemoryStats(PyObject
*self ATTRIBUTE_UNUSED
,
3504 PyObject
*ret
= NULL
;
3505 PyObject
*key
= NULL
;
3506 PyObject
*val
= NULL
;
3507 PyObject
*pyobj_conn
;
3510 int cellNum
, c_retval
;
3513 virNodeMemoryStatsPtr stats
= NULL
;
3515 if (!PyArg_ParseTuple(args
, (char *)"OiI:virNodeGetMemoryStats",
3516 &pyobj_conn
, &cellNum
, &flags
))
3518 conn
= (virConnectPtr
)(PyvirConnect_Get(pyobj_conn
));
3520 LIBVIRT_BEGIN_ALLOW_THREADS
;
3521 c_retval
= virNodeGetMemoryStats(conn
, cellNum
, NULL
, &nparams
, flags
);
3522 LIBVIRT_END_ALLOW_THREADS
;
3528 if (VIR_ALLOC_N(stats
, nparams
) < 0)
3529 return PyErr_NoMemory();
3531 LIBVIRT_BEGIN_ALLOW_THREADS
;
3532 c_retval
= virNodeGetMemoryStats(conn
, cellNum
, stats
, &nparams
, flags
);
3533 LIBVIRT_END_ALLOW_THREADS
;
3541 if (!(ret
= PyDict_New()))
3544 for (i
= 0; i
< nparams
; i
++) {
3545 key
= libvirt_constcharPtrWrap(stats
[i
].field
);
3546 val
= libvirt_ulonglongWrap(stats
[i
].value
);
3548 VIR_PY_DICT_SET_GOTO(ret
, key
, val
, error
);
3561 libvirt_virConnectListStoragePools(PyObject
*self ATTRIBUTE_UNUSED
,
3564 PyObject
*py_retval
;
3565 char **names
= NULL
;
3569 PyObject
*pyobj_conn
;
3571 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListStoragePools",
3574 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3576 LIBVIRT_BEGIN_ALLOW_THREADS
;
3577 c_retval
= virConnectNumOfStoragePools(conn
);
3578 LIBVIRT_END_ALLOW_THREADS
;
3584 if (VIR_ALLOC_N(names
, c_retval
) < 0)
3585 return PyErr_NoMemory();
3587 LIBVIRT_BEGIN_ALLOW_THREADS
;
3588 c_retval
= virConnectListStoragePools(conn
, names
, c_retval
);
3589 LIBVIRT_END_ALLOW_THREADS
;
3592 py_retval
= VIR_PY_NONE
;
3597 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
3600 for (i
= 0; i
< c_retval
; i
++)
3601 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3602 libvirt_constcharPtrWrap(names
[i
]), error
);
3606 for (i
= 0; i
< c_retval
; i
++)
3612 Py_CLEAR(py_retval
);
3618 libvirt_virConnectListDefinedStoragePools(PyObject
*self ATTRIBUTE_UNUSED
,
3621 PyObject
*py_retval
;
3622 char **names
= NULL
;
3626 PyObject
*pyobj_conn
;
3628 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListDefinedStoragePools",
3631 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3633 LIBVIRT_BEGIN_ALLOW_THREADS
;
3634 c_retval
= virConnectNumOfDefinedStoragePools(conn
);
3635 LIBVIRT_END_ALLOW_THREADS
;
3641 if (VIR_ALLOC_N(names
, c_retval
) < 0)
3642 return PyErr_NoMemory();
3644 LIBVIRT_BEGIN_ALLOW_THREADS
;
3645 c_retval
= virConnectListDefinedStoragePools(conn
, names
, c_retval
);
3646 LIBVIRT_END_ALLOW_THREADS
;
3649 py_retval
= VIR_PY_NONE
;
3654 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
3658 for (i
= 0; i
< c_retval
; i
++)
3659 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3660 libvirt_constcharPtrWrap(names
[i
]), error
);
3665 for (i
= 0; i
< c_retval
; i
++)
3671 Py_CLEAR(py_retval
);
3675 #if LIBVIR_CHECK_VERSION(0, 10, 2)
3677 libvirt_virConnectListAllStoragePools(PyObject
*self ATTRIBUTE_UNUSED
,
3680 PyObject
*pyobj_conn
;
3681 PyObject
*py_retval
= NULL
;
3683 virStoragePoolPtr
*pools
= NULL
;
3688 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllStoragePools",
3689 &pyobj_conn
, &flags
))
3691 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3693 LIBVIRT_BEGIN_ALLOW_THREADS
;
3694 c_retval
= virConnectListAllStoragePools(conn
, &pools
, flags
);
3695 LIBVIRT_END_ALLOW_THREADS
;
3700 if (!(py_retval
= PyList_New(c_retval
)))
3703 for (i
= 0; i
< c_retval
; i
++) {
3704 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3705 libvirt_virStoragePoolPtrWrap(pools
[i
]), error
);
3706 /* python steals the pointer */
3711 for (i
= 0; i
< c_retval
; i
++)
3713 virStoragePoolFree(pools
[i
]);
3718 Py_CLEAR(py_retval
);
3721 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
3724 libvirt_virStoragePoolListVolumes(PyObject
*self ATTRIBUTE_UNUSED
,
3727 PyObject
*py_retval
;
3728 char **names
= NULL
;
3731 virStoragePoolPtr pool
;
3732 PyObject
*pyobj_pool
;
3734 if (!PyArg_ParseTuple(args
, (char *)"O:virStoragePoolListVolumes",
3737 pool
= (virStoragePoolPtr
) PyvirStoragePool_Get(pyobj_pool
);
3739 LIBVIRT_BEGIN_ALLOW_THREADS
;
3740 c_retval
= virStoragePoolNumOfVolumes(pool
);
3741 LIBVIRT_END_ALLOW_THREADS
;
3747 if (VIR_ALLOC_N(names
, c_retval
) < 0)
3748 return PyErr_NoMemory();
3750 LIBVIRT_BEGIN_ALLOW_THREADS
;
3751 c_retval
= virStoragePoolListVolumes(pool
, names
, c_retval
);
3752 LIBVIRT_END_ALLOW_THREADS
;
3755 py_retval
= VIR_PY_NONE
;
3760 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
3764 for (i
= 0; i
< c_retval
; i
++)
3765 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3766 libvirt_constcharPtrWrap(names
[i
]), error
);
3770 for (i
= 0; i
< c_retval
; i
++)
3776 Py_CLEAR(py_retval
);
3780 #if LIBVIR_CHECK_VERSION(0, 10, 2)
3782 libvirt_virStoragePoolListAllVolumes(PyObject
*self ATTRIBUTE_UNUSED
,
3785 PyObject
*py_retval
= NULL
;
3786 virStoragePoolPtr pool
;
3787 virStorageVolPtr
*vols
= NULL
;
3791 PyObject
*pyobj_pool
;
3793 if (!PyArg_ParseTuple(args
, (char *)"OI:virStoragePoolListAllVolumes",
3794 &pyobj_pool
, &flags
))
3797 pool
= (virStoragePoolPtr
) PyvirStoragePool_Get(pyobj_pool
);
3799 LIBVIRT_BEGIN_ALLOW_THREADS
;
3800 c_retval
= virStoragePoolListAllVolumes(pool
, &vols
, flags
);
3801 LIBVIRT_END_ALLOW_THREADS
;
3806 if (!(py_retval
= PyList_New(c_retval
)))
3809 for (i
= 0; i
< c_retval
; i
++) {
3810 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3811 libvirt_virStorageVolPtrWrap(vols
[i
]), error
);
3812 /* python steals the pointer */
3817 for (i
= 0; i
< c_retval
; i
++)
3819 virStorageVolFree(vols
[i
]);
3824 Py_CLEAR(py_retval
);
3827 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
3831 libvirt_virStoragePoolGetAutostart(PyObject
*self ATTRIBUTE_UNUSED
,
3834 int c_retval
, autostart
;
3835 virStoragePoolPtr pool
;
3836 PyObject
*pyobj_pool
;
3838 if (!PyArg_ParseTuple(args
, (char *)"O:virStoragePoolGetAutostart",
3842 pool
= (virStoragePoolPtr
) PyvirStoragePool_Get(pyobj_pool
);
3844 LIBVIRT_BEGIN_ALLOW_THREADS
;
3845 c_retval
= virStoragePoolGetAutostart(pool
, &autostart
);
3846 LIBVIRT_END_ALLOW_THREADS
;
3849 return VIR_PY_INT_FAIL
;
3851 return libvirt_intWrap(autostart
);
3855 libvirt_virStoragePoolGetInfo(PyObject
*self ATTRIBUTE_UNUSED
,
3858 PyObject
*py_retval
;
3860 virStoragePoolPtr pool
;
3861 PyObject
*pyobj_pool
;
3862 virStoragePoolInfo info
;
3864 if (!PyArg_ParseTuple(args
, (char *)"O:virStoragePoolGetInfo", &pyobj_pool
))
3866 pool
= (virStoragePoolPtr
) PyvirStoragePool_Get(pyobj_pool
);
3868 LIBVIRT_BEGIN_ALLOW_THREADS
;
3869 c_retval
= virStoragePoolGetInfo(pool
, &info
);
3870 LIBVIRT_END_ALLOW_THREADS
;
3875 if ((py_retval
= PyList_New(4)) == NULL
)
3878 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
3879 libvirt_intWrap(info
.state
), error
);
3880 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
3881 libvirt_ulonglongWrap(info
.capacity
), error
);
3882 VIR_PY_LIST_SET_GOTO(py_retval
, 2,
3883 libvirt_ulonglongWrap(info
.allocation
), error
);
3884 VIR_PY_LIST_SET_GOTO(py_retval
, 3,
3885 libvirt_ulonglongWrap(info
.available
), error
);
3890 Py_XDECREF(py_retval
);
3896 libvirt_virStorageVolGetInfo(PyObject
*self ATTRIBUTE_UNUSED
,
3899 PyObject
*py_retval
;
3901 virStorageVolPtr pool
;
3902 PyObject
*pyobj_pool
;
3903 virStorageVolInfo info
;
3905 if (!PyArg_ParseTuple(args
, (char *)"O:virStorageVolGetInfo", &pyobj_pool
))
3907 pool
= (virStorageVolPtr
) PyvirStorageVol_Get(pyobj_pool
);
3909 LIBVIRT_BEGIN_ALLOW_THREADS
;
3910 c_retval
= virStorageVolGetInfo(pool
, &info
);
3911 LIBVIRT_END_ALLOW_THREADS
;
3916 if ((py_retval
= PyList_New(3)) == NULL
)
3919 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
3920 libvirt_intWrap(info
.type
), error
);
3921 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
3922 libvirt_ulonglongWrap(info
.capacity
), error
);
3923 VIR_PY_LIST_SET_GOTO(py_retval
, 2,
3924 libvirt_ulonglongWrap(info
.allocation
), error
);
3929 Py_DECREF(py_retval
);
3933 #if LIBVIR_CHECK_VERSION(3, 0, 0)
3935 libvirt_virStorageVolGetInfoFlags(PyObject
*self ATTRIBUTE_UNUSED
,
3938 PyObject
*py_retval
;
3940 virStorageVolPtr pool
;
3941 PyObject
*pyobj_pool
;
3942 virStorageVolInfo info
;
3945 if (!PyArg_ParseTuple(args
, (char *)"OI:virStorageVolGetInfoFlags", &pyobj_pool
, &flags
))
3947 pool
= (virStorageVolPtr
) PyvirStorageVol_Get(pyobj_pool
);
3949 LIBVIRT_BEGIN_ALLOW_THREADS
;
3950 c_retval
= virStorageVolGetInfoFlags(pool
, &info
, flags
);
3951 LIBVIRT_END_ALLOW_THREADS
;
3956 if ((py_retval
= PyList_New(3)) == NULL
)
3959 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
3960 libvirt_intWrap(info
.type
), error
);
3961 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
3962 libvirt_ulonglongWrap(info
.capacity
), error
);
3963 VIR_PY_LIST_SET_GOTO(py_retval
, 2,
3964 libvirt_ulonglongWrap(info
.allocation
), error
);
3969 Py_DECREF(py_retval
);
3975 libvirt_virStoragePoolGetUUID(PyObject
*self ATTRIBUTE_UNUSED
,
3978 unsigned char uuid
[VIR_UUID_BUFLEN
];
3979 virStoragePoolPtr pool
;
3980 PyObject
*pyobj_pool
;
3983 if (!PyArg_ParseTuple(args
, (char *)"O:virStoragePoolGetUUID", &pyobj_pool
))
3985 pool
= (virStoragePoolPtr
) PyvirStoragePool_Get(pyobj_pool
);
3990 LIBVIRT_BEGIN_ALLOW_THREADS
;
3991 c_retval
= virStoragePoolGetUUID(pool
, &uuid
[0]);
3992 LIBVIRT_END_ALLOW_THREADS
;
3997 return libvirt_charPtrSizeWrap((char *) &uuid
[0], VIR_UUID_BUFLEN
);
4001 libvirt_virStoragePoolGetUUIDString(PyObject
*self ATTRIBUTE_UNUSED
,
4004 char uuidstr
[VIR_UUID_STRING_BUFLEN
];
4005 virStoragePoolPtr pool
;
4006 PyObject
*pyobj_pool
;
4009 if (!PyArg_ParseTuple(args
, (char *)"O:virStoragePoolGetUUIDString",
4012 pool
= (virStoragePoolPtr
) PyvirStoragePool_Get(pyobj_pool
);
4017 LIBVIRT_BEGIN_ALLOW_THREADS
;
4018 c_retval
= virStoragePoolGetUUIDString(pool
, &uuidstr
[0]);
4019 LIBVIRT_END_ALLOW_THREADS
;
4024 return libvirt_constcharPtrWrap((char *) &uuidstr
[0]);
4028 libvirt_virStoragePoolLookupByUUID(PyObject
*self ATTRIBUTE_UNUSED
,
4031 virStoragePoolPtr c_retval
;
4033 PyObject
*pyobj_conn
;
4034 unsigned char * uuid
;
4037 if (!PyArg_ParseTuple(args
, (char *)"Oz#:virStoragePoolLookupByUUID",
4038 &pyobj_conn
, &uuid
, &len
))
4040 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4042 if ((uuid
== NULL
) || (len
!= VIR_UUID_BUFLEN
))
4045 LIBVIRT_BEGIN_ALLOW_THREADS
;
4046 c_retval
= virStoragePoolLookupByUUID(conn
, uuid
);
4047 LIBVIRT_END_ALLOW_THREADS
;
4049 return libvirt_virStoragePoolPtrWrap((virStoragePoolPtr
) c_retval
);
4053 libvirt_virNodeListDevices(PyObject
*self ATTRIBUTE_UNUSED
,
4056 PyObject
*py_retval
;
4057 char **names
= NULL
;
4061 PyObject
*pyobj_conn
;
4065 if (!PyArg_ParseTuple(args
, (char *)"OzI:virNodeListDevices",
4066 &pyobj_conn
, &cap
, &flags
))
4068 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4070 LIBVIRT_BEGIN_ALLOW_THREADS
;
4071 c_retval
= virNodeNumOfDevices(conn
, cap
, flags
);
4072 LIBVIRT_END_ALLOW_THREADS
;
4078 if (VIR_ALLOC_N(names
, c_retval
) < 0)
4079 return PyErr_NoMemory();
4081 LIBVIRT_BEGIN_ALLOW_THREADS
;
4082 c_retval
= virNodeListDevices(conn
, cap
, names
, c_retval
, flags
);
4083 LIBVIRT_END_ALLOW_THREADS
;
4086 py_retval
= VIR_PY_NONE
;
4091 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
4095 for (i
= 0; i
< c_retval
; i
++)
4096 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4097 libvirt_constcharPtrWrap(names
[i
]), error
);
4101 for (i
= 0; i
< c_retval
; i
++)
4107 Py_CLEAR(py_retval
);
4111 #if LIBVIR_CHECK_VERSION(0, 10, 2)
4113 libvirt_virConnectListAllNodeDevices(PyObject
*self ATTRIBUTE_UNUSED
,
4116 PyObject
*pyobj_conn
;
4117 PyObject
*py_retval
= NULL
;
4119 virNodeDevicePtr
*devices
= NULL
;
4124 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllNodeDevices",
4125 &pyobj_conn
, &flags
))
4127 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4129 LIBVIRT_BEGIN_ALLOW_THREADS
;
4130 c_retval
= virConnectListAllNodeDevices(conn
, &devices
, flags
);
4131 LIBVIRT_END_ALLOW_THREADS
;
4136 if (!(py_retval
= PyList_New(c_retval
)))
4139 for (i
= 0; i
< c_retval
; i
++) {
4140 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4141 libvirt_virNodeDevicePtrWrap(devices
[i
]), error
);
4142 /* python steals the pointer */
4147 for (i
= 0; i
< c_retval
; i
++)
4149 virNodeDeviceFree(devices
[i
]);
4154 Py_CLEAR(py_retval
);
4157 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
4160 libvirt_virNodeDeviceListCaps(PyObject
*self ATTRIBUTE_UNUSED
,
4163 PyObject
*py_retval
;
4164 char **names
= NULL
;
4167 virNodeDevicePtr dev
;
4168 PyObject
*pyobj_dev
;
4170 if (!PyArg_ParseTuple(args
, (char *)"O:virNodeDeviceListCaps", &pyobj_dev
))
4172 dev
= (virNodeDevicePtr
) PyvirNodeDevice_Get(pyobj_dev
);
4174 LIBVIRT_BEGIN_ALLOW_THREADS
;
4175 c_retval
= virNodeDeviceNumOfCaps(dev
);
4176 LIBVIRT_END_ALLOW_THREADS
;
4182 if (VIR_ALLOC_N(names
, c_retval
) < 0)
4183 return PyErr_NoMemory();
4185 LIBVIRT_BEGIN_ALLOW_THREADS
;
4186 c_retval
= virNodeDeviceListCaps(dev
, names
, c_retval
);
4187 LIBVIRT_END_ALLOW_THREADS
;
4190 py_retval
= VIR_PY_NONE
;
4195 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
4199 for (i
= 0; i
< c_retval
; i
++)
4200 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4201 libvirt_constcharPtrWrap(names
[i
]), error
);
4205 for (i
= 0; i
< c_retval
; i
++)
4211 Py_CLEAR(py_retval
);
4216 libvirt_virSecretGetUUID(PyObject
*self ATTRIBUTE_UNUSED
,
4219 unsigned char uuid
[VIR_UUID_BUFLEN
];
4220 virSecretPtr secret
;
4221 PyObject
*pyobj_secret
;
4224 if (!PyArg_ParseTuple(args
, (char *)"O:virSecretGetUUID", &pyobj_secret
))
4226 secret
= (virSecretPtr
) PyvirSecret_Get(pyobj_secret
);
4231 LIBVIRT_BEGIN_ALLOW_THREADS
;
4232 c_retval
= virSecretGetUUID(secret
, &uuid
[0]);
4233 LIBVIRT_END_ALLOW_THREADS
;
4238 return libvirt_charPtrSizeWrap((char *) &uuid
[0], VIR_UUID_BUFLEN
);
4242 libvirt_virSecretGetUUIDString(PyObject
*self ATTRIBUTE_UNUSED
,
4245 char uuidstr
[VIR_UUID_STRING_BUFLEN
];
4247 PyObject
*pyobj_dom
;
4250 if (!PyArg_ParseTuple(args
, (char *)"O:virSecretGetUUIDString",
4253 dom
= (virSecretPtr
) PyvirSecret_Get(pyobj_dom
);
4258 LIBVIRT_BEGIN_ALLOW_THREADS
;
4259 c_retval
= virSecretGetUUIDString(dom
, &uuidstr
[0]);
4260 LIBVIRT_END_ALLOW_THREADS
;
4265 return libvirt_constcharPtrWrap((char *) &uuidstr
[0]);
4269 libvirt_virSecretLookupByUUID(PyObject
*self ATTRIBUTE_UNUSED
,
4272 virSecretPtr c_retval
;
4274 PyObject
*pyobj_conn
;
4275 unsigned char * uuid
;
4278 if (!PyArg_ParseTuple(args
, (char *)"Oz#:virSecretLookupByUUID",
4279 &pyobj_conn
, &uuid
, &len
))
4281 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4283 if ((uuid
== NULL
) || (len
!= VIR_UUID_BUFLEN
))
4286 LIBVIRT_BEGIN_ALLOW_THREADS
;
4287 c_retval
= virSecretLookupByUUID(conn
, uuid
);
4288 LIBVIRT_END_ALLOW_THREADS
;
4290 return libvirt_virSecretPtrWrap((virSecretPtr
) c_retval
);
4295 libvirt_virConnectListSecrets(PyObject
*self ATTRIBUTE_UNUSED
,
4298 PyObject
*py_retval
;
4299 char **uuids
= NULL
;
4303 PyObject
*pyobj_conn
;
4305 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListSecrets", &pyobj_conn
))
4307 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4309 LIBVIRT_BEGIN_ALLOW_THREADS
;
4310 c_retval
= virConnectNumOfSecrets(conn
);
4311 LIBVIRT_END_ALLOW_THREADS
;
4317 if (VIR_ALLOC_N(uuids
, c_retval
) < 0)
4318 return PyErr_NoMemory();
4320 LIBVIRT_BEGIN_ALLOW_THREADS
;
4321 c_retval
= virConnectListSecrets(conn
, uuids
, c_retval
);
4322 LIBVIRT_END_ALLOW_THREADS
;
4325 py_retval
= VIR_PY_NONE
;
4330 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
4334 for (i
= 0; i
< c_retval
; i
++)
4335 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4336 libvirt_constcharPtrWrap(uuids
[i
]), error
);
4341 for (i
= 0; i
< c_retval
; i
++)
4347 Py_CLEAR(py_retval
);
4351 #if LIBVIR_CHECK_VERSION(0, 10, 2)
4353 libvirt_virConnectListAllSecrets(PyObject
*self ATTRIBUTE_UNUSED
,
4356 PyObject
*pyobj_conn
;
4357 PyObject
*py_retval
= NULL
;
4359 virSecretPtr
*secrets
= NULL
;
4364 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllSecrets",
4365 &pyobj_conn
, &flags
))
4367 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4369 LIBVIRT_BEGIN_ALLOW_THREADS
;
4370 c_retval
= virConnectListAllSecrets(conn
, &secrets
, flags
);
4371 LIBVIRT_END_ALLOW_THREADS
;
4376 if (!(py_retval
= PyList_New(c_retval
)))
4379 for (i
= 0; i
< c_retval
; i
++) {
4380 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4381 libvirt_virSecretPtrWrap(secrets
[i
]), error
);
4382 /* python steals the pointer */
4387 for (i
= 0; i
< c_retval
; i
++)
4389 virSecretFree(secrets
[i
]);
4394 Py_CLEAR(py_retval
);
4397 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
4400 libvirt_virSecretGetValue(PyObject
*self ATTRIBUTE_UNUSED
,
4403 PyObject
*py_retval
;
4404 unsigned char *c_retval
;
4406 virSecretPtr secret
;
4407 PyObject
*pyobj_secret
;
4410 if (!PyArg_ParseTuple(args
, (char *)"OI:virSecretGetValue", &pyobj_secret
,
4413 secret
= (virSecretPtr
) PyvirSecret_Get(pyobj_secret
);
4415 LIBVIRT_BEGIN_ALLOW_THREADS
;
4416 c_retval
= virSecretGetValue(secret
, &size
, flags
);
4417 LIBVIRT_END_ALLOW_THREADS
;
4419 if (c_retval
== NULL
)
4422 py_retval
= libvirt_charPtrSizeWrap((char*)c_retval
, size
);
4429 libvirt_virSecretSetValue(PyObject
*self ATTRIBUTE_UNUSED
,
4433 virSecretPtr secret
;
4434 PyObject
*pyobj_secret
;
4439 if (!PyArg_ParseTuple(args
, (char *)"Oz#I:virSecretSetValue", &pyobj_secret
,
4440 &value
, &size
, &flags
))
4442 secret
= (virSecretPtr
) PyvirSecret_Get(pyobj_secret
);
4444 LIBVIRT_BEGIN_ALLOW_THREADS
;
4445 c_retval
= virSecretSetValue(secret
, (const unsigned char *)value
,
4446 (size_t) size
, flags
);
4447 LIBVIRT_END_ALLOW_THREADS
;
4449 return libvirt_intWrap(c_retval
);
4453 libvirt_virNWFilterGetUUID(PyObject
*self ATTRIBUTE_UNUSED
,
4456 unsigned char uuid
[VIR_UUID_BUFLEN
];
4457 virNWFilterPtr nwfilter
;
4458 PyObject
*pyobj_nwfilter
;
4461 if (!PyArg_ParseTuple(args
, (char *)"O:virNWFilterGetUUID",
4464 nwfilter
= (virNWFilterPtr
) PyvirNWFilter_Get(pyobj_nwfilter
);
4466 if (nwfilter
== NULL
)
4469 LIBVIRT_BEGIN_ALLOW_THREADS
;
4470 c_retval
= virNWFilterGetUUID(nwfilter
, &uuid
[0]);
4471 LIBVIRT_END_ALLOW_THREADS
;
4476 return libvirt_charPtrSizeWrap((char *) &uuid
[0], VIR_UUID_BUFLEN
);
4480 libvirt_virNWFilterGetUUIDString(PyObject
*self ATTRIBUTE_UNUSED
,
4483 char uuidstr
[VIR_UUID_STRING_BUFLEN
];
4484 virNWFilterPtr nwfilter
;
4485 PyObject
*pyobj_nwfilter
;
4488 if (!PyArg_ParseTuple(args
, (char *)"O:virNWFilterGetUUIDString",
4491 nwfilter
= (virNWFilterPtr
) PyvirNWFilter_Get(pyobj_nwfilter
);
4493 if (nwfilter
== NULL
)
4496 LIBVIRT_BEGIN_ALLOW_THREADS
;
4497 c_retval
= virNWFilterGetUUIDString(nwfilter
, &uuidstr
[0]);
4498 LIBVIRT_END_ALLOW_THREADS
;
4503 return libvirt_constcharPtrWrap((char *) &uuidstr
[0]);
4507 libvirt_virNWFilterLookupByUUID(PyObject
*self ATTRIBUTE_UNUSED
,
4510 virNWFilterPtr c_retval
;
4512 PyObject
*pyobj_conn
;
4513 unsigned char * uuid
;
4516 if (!PyArg_ParseTuple(args
, (char *)"Oz#:virNWFilterLookupByUUID",
4517 &pyobj_conn
, &uuid
, &len
))
4519 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4521 if ((uuid
== NULL
) || (len
!= VIR_UUID_BUFLEN
))
4524 LIBVIRT_BEGIN_ALLOW_THREADS
;
4525 c_retval
= virNWFilterLookupByUUID(conn
, uuid
);
4526 LIBVIRT_END_ALLOW_THREADS
;
4528 return libvirt_virNWFilterPtrWrap((virNWFilterPtr
) c_retval
);
4533 libvirt_virConnectListNWFilters(PyObject
*self ATTRIBUTE_UNUSED
,
4536 PyObject
*py_retval
;
4537 char **uuids
= NULL
;
4541 PyObject
*pyobj_conn
;
4543 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListNWFilters",
4546 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4548 LIBVIRT_BEGIN_ALLOW_THREADS
;
4549 c_retval
= virConnectNumOfNWFilters(conn
);
4550 LIBVIRT_END_ALLOW_THREADS
;
4556 if (VIR_ALLOC_N(uuids
, c_retval
) < 0)
4557 return PyErr_NoMemory();
4559 LIBVIRT_BEGIN_ALLOW_THREADS
;
4560 c_retval
= virConnectListNWFilters(conn
, uuids
, c_retval
);
4561 LIBVIRT_END_ALLOW_THREADS
;
4564 py_retval
= VIR_PY_NONE
;
4569 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
4573 for (i
= 0; i
< c_retval
; i
++)
4574 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4575 libvirt_constcharPtrWrap(uuids
[i
]), error
);
4579 for (i
= 0; i
< c_retval
; i
++)
4585 Py_CLEAR(py_retval
);
4589 #if LIBVIR_CHECK_VERSION(0, 10, 2)
4591 libvirt_virConnectListAllNWFilters(PyObject
*self ATTRIBUTE_UNUSED
,
4594 PyObject
*pyobj_conn
;
4595 PyObject
*py_retval
= NULL
;
4597 virNWFilterPtr
*filters
= NULL
;
4602 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllNWFilters",
4603 &pyobj_conn
, &flags
))
4605 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4607 LIBVIRT_BEGIN_ALLOW_THREADS
;
4608 c_retval
= virConnectListAllNWFilters(conn
, &filters
, flags
);
4609 LIBVIRT_END_ALLOW_THREADS
;
4614 if (!(py_retval
= PyList_New(c_retval
)))
4617 for (i
= 0; i
< c_retval
; i
++) {
4618 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4619 libvirt_virNWFilterPtrWrap(filters
[i
]), error
);
4620 /* python steals the pointer */
4625 for (i
= 0; i
< c_retval
; i
++)
4627 virNWFilterFree(filters
[i
]);
4632 Py_CLEAR(py_retval
);
4635 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
4637 #if LIBVIR_CHECK_VERSION(4, 5, 0)
4639 libvirt_virConnectListAllNWFilterBindings(PyObject
*self ATTRIBUTE_UNUSED
,
4642 PyObject
*pyobj_conn
;
4643 PyObject
*py_retval
= NULL
;
4645 virNWFilterBindingPtr
*bindings
= NULL
;
4650 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllNWFilterBindings",
4651 &pyobj_conn
, &flags
))
4653 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4655 LIBVIRT_BEGIN_ALLOW_THREADS
;
4656 c_retval
= virConnectListAllNWFilterBindings(conn
, &bindings
, flags
);
4657 LIBVIRT_END_ALLOW_THREADS
;
4662 if (!(py_retval
= PyList_New(c_retval
)))
4665 for (i
= 0; i
< c_retval
; i
++) {
4666 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4667 libvirt_virNWFilterBindingPtrWrap(bindings
[i
]), error
);
4668 /* python steals the pointer */
4673 for (i
= 0; i
< c_retval
; i
++)
4675 virNWFilterBindingFree(bindings
[i
]);
4680 Py_CLEAR(py_retval
);
4683 #endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
4686 libvirt_virConnectListInterfaces(PyObject
*self ATTRIBUTE_UNUSED
,
4689 PyObject
*py_retval
;
4690 char **names
= NULL
;
4694 PyObject
*pyobj_conn
;
4697 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListInterfaces",
4700 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4702 LIBVIRT_BEGIN_ALLOW_THREADS
;
4703 c_retval
= virConnectNumOfInterfaces(conn
);
4704 LIBVIRT_END_ALLOW_THREADS
;
4710 if (VIR_ALLOC_N(names
, c_retval
) < 0)
4711 return PyErr_NoMemory();
4713 LIBVIRT_BEGIN_ALLOW_THREADS
;
4714 c_retval
= virConnectListInterfaces(conn
, names
, c_retval
);
4715 LIBVIRT_END_ALLOW_THREADS
;
4718 py_retval
= VIR_PY_NONE
;
4723 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
4727 for (i
= 0; i
< c_retval
; i
++)
4728 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4729 libvirt_constcharPtrWrap(names
[i
]), error
);
4733 for (i
= 0; i
< c_retval
; i
++)
4739 Py_CLEAR(py_retval
);
4745 libvirt_virConnectListDefinedInterfaces(PyObject
*self ATTRIBUTE_UNUSED
,
4748 PyObject
*py_retval
;
4749 char **names
= NULL
;
4753 PyObject
*pyobj_conn
;
4756 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListDefinedInterfaces",
4759 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4761 LIBVIRT_BEGIN_ALLOW_THREADS
;
4762 c_retval
= virConnectNumOfDefinedInterfaces(conn
);
4763 LIBVIRT_END_ALLOW_THREADS
;
4769 if (VIR_ALLOC_N(names
, c_retval
) < 0)
4770 return PyErr_NoMemory();
4772 LIBVIRT_BEGIN_ALLOW_THREADS
;
4773 c_retval
= virConnectListDefinedInterfaces(conn
, names
, c_retval
);
4774 LIBVIRT_END_ALLOW_THREADS
;
4777 py_retval
= VIR_PY_NONE
;
4782 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
4786 for (i
= 0; i
< c_retval
; i
++)
4787 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4788 libvirt_constcharPtrWrap(names
[i
]), error
);
4793 for (i
= 0; i
< c_retval
; i
++)
4799 Py_CLEAR(py_retval
);
4804 #if LIBVIR_CHECK_VERSION(0, 10, 2)
4806 libvirt_virConnectListAllInterfaces(PyObject
*self ATTRIBUTE_UNUSED
,
4809 PyObject
*pyobj_conn
;
4810 PyObject
*py_retval
= NULL
;
4812 virInterfacePtr
*ifaces
= NULL
;
4817 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllInterfaces",
4818 &pyobj_conn
, &flags
))
4820 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4822 LIBVIRT_BEGIN_ALLOW_THREADS
;
4823 c_retval
= virConnectListAllInterfaces(conn
, &ifaces
, flags
);
4824 LIBVIRT_END_ALLOW_THREADS
;
4829 if (!(py_retval
= PyList_New(c_retval
)))
4832 for (i
= 0; i
< c_retval
; i
++) {
4833 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4834 libvirt_virInterfacePtrWrap(ifaces
[i
]), error
);
4835 /* python steals the pointer */
4840 for (i
= 0; i
< c_retval
; i
++)
4842 virInterfaceFree(ifaces
[i
]);
4847 Py_CLEAR(py_retval
);
4850 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
4853 libvirt_virConnectBaselineCPU(PyObject
*self ATTRIBUTE_UNUSED
,
4856 PyObject
*pyobj_conn
;
4860 char **xmlcpus
= NULL
;
4863 PyObject
*pybase_cpu
;
4866 if (!PyArg_ParseTuple(args
, (char *)"OOI:virConnectBaselineCPU",
4867 &pyobj_conn
, &list
, &flags
))
4869 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4871 if (PyList_Check(list
)) {
4872 ncpus
= PyList_Size(list
);
4873 if (VIR_ALLOC_N(xmlcpus
, ncpus
) < 0)
4874 return PyErr_NoMemory();
4876 for (i
= 0; i
< ncpus
; i
++) {
4877 if (libvirt_charPtrUnwrap(PyList_GetItem(list
, i
),
4878 &(xmlcpus
[i
])) < 0) {
4879 for (j
= 0 ; j
< i
; j
++)
4880 VIR_FREE(xmlcpus
[j
]);
4887 LIBVIRT_BEGIN_ALLOW_THREADS
;
4888 base_cpu
= virConnectBaselineCPU(conn
, (const char **)xmlcpus
, ncpus
, flags
);
4889 LIBVIRT_END_ALLOW_THREADS
;
4891 for (i
= 0 ; i
< ncpus
; i
++)
4892 VIR_FREE(xmlcpus
[i
]);
4895 if (base_cpu
== NULL
)
4898 pybase_cpu
= libvirt_constcharPtrWrap(base_cpu
);
4906 libvirt_virDomainGetJobInfo(PyObject
*self ATTRIBUTE_UNUSED
,
4909 PyObject
*py_retval
;
4911 virDomainPtr domain
;
4912 PyObject
*pyobj_domain
;
4913 virDomainJobInfo info
;
4915 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetJobInfo", &pyobj_domain
))
4917 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
4919 LIBVIRT_BEGIN_ALLOW_THREADS
;
4920 c_retval
= virDomainGetJobInfo(domain
, &info
);
4921 LIBVIRT_END_ALLOW_THREADS
;
4926 if ((py_retval
= PyList_New(12)) == NULL
)
4929 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
4930 libvirt_intWrap(info
.type
), error
);
4931 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
4932 libvirt_ulonglongWrap(info
.timeElapsed
), error
);
4933 VIR_PY_LIST_SET_GOTO(py_retval
, 2,
4934 libvirt_ulonglongWrap(info
.timeRemaining
), error
);
4935 VIR_PY_LIST_SET_GOTO(py_retval
, 3,
4936 libvirt_ulonglongWrap(info
.dataTotal
), error
);
4937 VIR_PY_LIST_SET_GOTO(py_retval
, 4,
4938 libvirt_ulonglongWrap(info
.dataProcessed
), error
);
4939 VIR_PY_LIST_SET_GOTO(py_retval
, 5,
4940 libvirt_ulonglongWrap(info
.dataRemaining
), error
);
4941 VIR_PY_LIST_SET_GOTO(py_retval
, 6,
4942 libvirt_ulonglongWrap(info
.memTotal
), error
);
4943 VIR_PY_LIST_SET_GOTO(py_retval
, 7,
4944 libvirt_ulonglongWrap(info
.memProcessed
), error
);
4945 VIR_PY_LIST_SET_GOTO(py_retval
, 8,
4946 libvirt_ulonglongWrap(info
.memRemaining
), error
);
4947 VIR_PY_LIST_SET_GOTO(py_retval
, 9,
4948 libvirt_ulonglongWrap(info
.fileTotal
), error
);
4949 VIR_PY_LIST_SET_GOTO(py_retval
, 10,
4950 libvirt_ulonglongWrap(info
.fileProcessed
), error
);
4951 VIR_PY_LIST_SET_GOTO(py_retval
, 11,
4952 libvirt_ulonglongWrap(info
.fileRemaining
), error
);
4957 Py_DECREF(py_retval
);
4961 #if LIBVIR_CHECK_VERSION(1, 0, 3)
4963 libvirt_virDomainGetJobStats(PyObject
*self ATTRIBUTE_UNUSED
,
4966 PyObject
*pyobj_domain
;
4967 virDomainPtr domain
;
4969 virTypedParameterPtr params
= NULL
;
4972 PyObject
*dict
= NULL
;
4975 if (!PyArg_ParseTuple(args
, (char *) "OI:virDomainGetJobStats",
4976 &pyobj_domain
, &flags
))
4978 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
4980 LIBVIRT_BEGIN_ALLOW_THREADS
;
4981 rc
= virDomainGetJobStats(domain
, &type
, ¶ms
, &nparams
, flags
);
4982 LIBVIRT_END_ALLOW_THREADS
;
4987 if (!(dict
= getPyVirTypedParameter(params
, nparams
)))
4990 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("type"),
4991 libvirt_intWrap(type
), error
);
4994 virTypedParamsFree(params
, nparams
);
5001 #endif /* LIBVIR_CHECK_VERSION(1, 0, 3) */
5004 libvirt_virDomainGetBlockJobInfo(PyObject
*self ATTRIBUTE_UNUSED
,
5007 virDomainPtr domain
;
5008 PyObject
*pyobj_domain
;
5011 virDomainBlockJobInfo info
;
5015 if (!PyArg_ParseTuple(args
, (char *)"OzI:virDomainGetBlockJobInfo",
5016 &pyobj_domain
, &path
, &flags
))
5018 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
5020 LIBVIRT_BEGIN_ALLOW_THREADS
;
5021 c_ret
= virDomainGetBlockJobInfo(domain
, path
, &info
, flags
);
5022 LIBVIRT_END_ALLOW_THREADS
;
5027 if ((dict
= PyDict_New()) == NULL
)
5033 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("type"),
5034 libvirt_intWrap(info
.type
), error
);
5035 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("bandwidth"),
5036 libvirt_ulongWrap(info
.bandwidth
), error
);
5037 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("cur"),
5038 libvirt_ulonglongWrap(info
.cur
), error
);
5039 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("end"),
5040 libvirt_ulonglongWrap(info
.end
), error
);
5050 libvirt_virDomainSetBlockIoTune(PyObject
*self ATTRIBUTE_UNUSED
,
5053 virDomainPtr domain
;
5054 PyObject
*pyobj_domain
, *info
;
5055 PyObject
*ret
= NULL
;
5058 Py_ssize_t size
= 0;
5061 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
5063 if (!PyArg_ParseTuple(args
, (char *)"OzOI:virDomainSetBlockIoTune",
5064 &pyobj_domain
, &disk
, &info
, &flags
))
5066 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
5068 if ((size
= PyDict_Size(info
)) < 0)
5072 PyErr_Format(PyExc_LookupError
,
5073 "Need non-empty dictionary to set attributes");
5077 LIBVIRT_BEGIN_ALLOW_THREADS
;
5078 i_retval
= virDomainGetBlockIoTune(domain
, disk
, NULL
, &nparams
, flags
);
5079 LIBVIRT_END_ALLOW_THREADS
;
5082 return VIR_PY_INT_FAIL
;
5085 PyErr_Format(PyExc_LookupError
,
5086 "Domain has no settable attributes");
5090 if (VIR_ALLOC_N(params
, nparams
) < 0)
5091 return PyErr_NoMemory();
5093 LIBVIRT_BEGIN_ALLOW_THREADS
;
5094 i_retval
= virDomainGetBlockIoTune(domain
, disk
, params
, &nparams
, flags
);
5095 LIBVIRT_END_ALLOW_THREADS
;
5098 ret
= VIR_PY_INT_FAIL
;
5102 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
5106 LIBVIRT_BEGIN_ALLOW_THREADS
;
5107 i_retval
= virDomainSetBlockIoTune(domain
, disk
, new_params
, size
, flags
);
5108 LIBVIRT_END_ALLOW_THREADS
;
5111 ret
= VIR_PY_INT_FAIL
;
5115 ret
= VIR_PY_INT_SUCCESS
;
5118 virTypedParamsFree(params
, nparams
);
5119 virTypedParamsFree(new_params
, size
);
5124 libvirt_virDomainGetBlockIoTune(PyObject
*self ATTRIBUTE_UNUSED
,
5127 virDomainPtr domain
;
5128 PyObject
*pyobj_domain
;
5129 PyObject
*ret
= NULL
;
5134 virTypedParameterPtr params
;
5136 if (!PyArg_ParseTuple(args
, (char *)"OzI:virDomainGetBlockIoTune",
5137 &pyobj_domain
, &disk
, &flags
))
5139 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
5141 LIBVIRT_BEGIN_ALLOW_THREADS
;
5142 i_retval
= virDomainGetBlockIoTune(domain
, disk
, NULL
, &nparams
, flags
);
5143 LIBVIRT_END_ALLOW_THREADS
;
5149 return PyDict_New();
5151 if (VIR_ALLOC_N(params
, nparams
) < 0)
5152 return PyErr_NoMemory();
5154 LIBVIRT_BEGIN_ALLOW_THREADS
;
5155 i_retval
= virDomainGetBlockIoTune(domain
, disk
, params
, &nparams
, flags
);
5156 LIBVIRT_END_ALLOW_THREADS
;
5163 ret
= getPyVirTypedParameter(params
, nparams
);
5166 virTypedParamsFree(params
, nparams
);
5171 libvirt_virDomainGetDiskErrors(PyObject
*self ATTRIBUTE_UNUSED
,
5174 PyObject
*py_retval
= VIR_PY_NONE
;
5175 virDomainPtr domain
;
5176 PyObject
*pyobj_domain
;
5178 virDomainDiskErrorPtr disks
= NULL
;
5179 unsigned int ndisks
;
5183 if (!PyArg_ParseTuple(args
, (char *) "OI:virDomainGetDiskErrors",
5184 &pyobj_domain
, &flags
))
5187 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
5189 LIBVIRT_BEGIN_ALLOW_THREADS
;
5190 count
= virDomainGetDiskErrors(domain
, NULL
, 0, 0);
5191 LIBVIRT_END_ALLOW_THREADS
;
5198 if (VIR_ALLOC_N(disks
, ndisks
) < 0)
5199 return PyErr_NoMemory();
5201 LIBVIRT_BEGIN_ALLOW_THREADS
;
5202 count
= virDomainGetDiskErrors(domain
, disks
, ndisks
, 0);
5203 LIBVIRT_END_ALLOW_THREADS
;
5206 py_retval
= VIR_PY_NONE
;
5211 if (!(py_retval
= PyDict_New()))
5214 for (i
= 0; i
< count
; i
++) {
5215 VIR_PY_DICT_SET_GOTO(py_retval
,
5216 libvirt_constcharPtrWrap(disks
[i
].disk
),
5217 libvirt_intWrap(disks
[i
].error
),
5223 for (i
= 0; i
< count
; i
++)
5224 VIR_FREE(disks
[i
].disk
);
5229 Py_CLEAR(py_retval
);
5234 #if LIBVIR_CHECK_VERSION(1, 2, 14)
5236 libvirt_virDomainInterfaceAddresses(PyObject
*self ATTRIBUTE_UNUSED
,
5239 PyObject
*py_retval
= VIR_PY_NONE
;
5240 PyObject
*pyobj_domain
;
5241 virDomainPtr domain
;
5242 virDomainInterfacePtr
*ifaces
= NULL
;
5243 unsigned int source
;
5245 int ifaces_count
= 0;
5248 if (!PyArg_ParseTuple(args
, (char *) "OII:virDomainInterfaceAddresses",
5249 &pyobj_domain
, &source
, &flags
))
5252 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
5254 LIBVIRT_BEGIN_ALLOW_THREADS
;
5255 ifaces_count
= virDomainInterfaceAddresses(domain
, &ifaces
, source
, flags
);
5256 LIBVIRT_END_ALLOW_THREADS
;
5258 if (ifaces_count
< 0)
5261 if (!(py_retval
= PyDict_New()))
5264 for (i
= 0; i
< ifaces_count
; i
++) {
5265 virDomainInterfacePtr iface
= ifaces
[i
];
5266 PyObject
*py_addrs
= NULL
;
5267 PyObject
*py_iface
= NULL
;
5270 if (!(py_iface
= PyDict_New()))
5273 VIR_PY_DICT_SET_GOTO(py_retval
, libvirt_charPtrWrap(iface
->name
),
5276 if (iface
->naddrs
) {
5277 if (!(py_addrs
= PyList_New(iface
->naddrs
))) {
5281 py_addrs
= VIR_PY_NONE
;
5284 VIR_PY_DICT_SET_GOTO(py_iface
, libvirt_constcharPtrWrap("addrs"),
5287 VIR_PY_DICT_SET_GOTO(py_iface
, libvirt_constcharPtrWrap("hwaddr"),
5288 libvirt_constcharPtrWrap(iface
->hwaddr
), error
);
5290 for (j
= 0; j
< iface
->naddrs
; j
++) {
5291 virDomainIPAddressPtr addr
= &(iface
->addrs
[j
]);
5292 PyObject
*py_addr
= PyDict_New();
5297 VIR_PY_LIST_SET_GOTO(py_addrs
, j
, py_addr
, error
);
5299 VIR_PY_DICT_SET_GOTO(py_addr
, libvirt_constcharPtrWrap("addr"),
5300 libvirt_constcharPtrWrap(addr
->addr
), error
);
5301 VIR_PY_DICT_SET_GOTO(py_addr
, libvirt_constcharPtrWrap("prefix"),
5302 libvirt_uintWrap(addr
->prefix
), error
);
5303 VIR_PY_DICT_SET_GOTO(py_addr
, libvirt_constcharPtrWrap("type"),
5304 libvirt_intWrap(addr
->type
), error
);
5309 if (ifaces
&& ifaces_count
> 0) {
5310 for (i
= 0; i
< ifaces_count
; i
++) {
5311 virDomainInterfaceFree(ifaces
[i
]);
5319 Py_CLEAR(py_retval
);
5322 #endif /* LIBVIR_CHECK_VERSION(1, 2, 14) */
5325 /*******************************************
5326 * Helper functions to avoid importing modules
5327 * for every callback
5328 *******************************************/
5329 static PyObject
*libvirt_module
= NULL
;
5330 static PyObject
*libvirt_dict
= NULL
;
5333 getLibvirtModuleObject(void)
5336 return libvirt_module
;
5338 // PyImport_ImportModule returns a new reference
5339 /* Bogus (char *) cast for RHEL-5 python API brokenness */
5340 libvirt_module
= PyImport_ImportModule((char *)"libvirt");
5341 if (!libvirt_module
) {
5342 DEBUG("%s Error importing libvirt module\n", __FUNCTION__
);
5347 return libvirt_module
;
5351 getLibvirtDictObject(void)
5354 return libvirt_dict
;
5356 // PyModule_GetDict returns a borrowed reference
5357 libvirt_dict
= PyModule_GetDict(getLibvirtModuleObject());
5358 if (!libvirt_dict
) {
5359 DEBUG("%s Error importing libvirt dictionary\n", __FUNCTION__
);
5364 Py_INCREF(libvirt_dict
);
5365 return libvirt_dict
;
5370 libvirt_lookupPythonFunc(const char *funcname
)
5372 PyObject
*python_cb
;
5374 /* Lookup the python callback */
5375 python_cb
= PyDict_GetItemString(getLibvirtDictObject(), funcname
);
5378 DEBUG("%s: Error finding %s\n", __FUNCTION__
, funcname
);
5384 if (!PyCallable_Check(python_cb
)) {
5385 DEBUG("%s: %s is not callable\n", __FUNCTION__
, funcname
);
5392 /*******************************************
5394 *******************************************/
5397 libvirt_virConnectDomainEventCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
5403 PyObject
*pyobj_ret
= NULL
;
5405 PyObject
*pyobj_conn
= (PyObject
*)opaque
;
5406 PyObject
*pyobj_dom
;
5410 LIBVIRT_ENSURE_THREAD_STATE
;
5412 /* Create a python instance of this virDomainPtr */
5414 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
5419 /* Call the Callback Dispatcher */
5420 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
5421 (char*)"_dispatchDomainEventCallbacks",
5426 Py_DECREF(pyobj_dom
);
5430 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
5433 Py_DECREF(pyobj_ret
);
5437 LIBVIRT_RELEASE_THREAD_STATE
;
5442 libvirt_virConnectDomainEventRegister(ATTRIBUTE_UNUSED PyObject
*self
,
5445 PyObject
*pyobj_conn
; /* virConnectPtr */
5446 PyObject
*pyobj_conn_inst
; /* virConnect Python object */
5451 if (!PyArg_ParseTuple(args
, (char *) "OO:virConnectDomainEventRegister",
5452 &pyobj_conn
, &pyobj_conn_inst
))
5455 DEBUG("libvirt_virConnectDomainEventRegister(%p %p) called\n",
5456 pyobj_conn
, pyobj_conn_inst
);
5457 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
5459 Py_INCREF(pyobj_conn_inst
);
5461 LIBVIRT_BEGIN_ALLOW_THREADS
;
5462 ret
= virConnectDomainEventRegister(conn
,
5463 libvirt_virConnectDomainEventCallback
,
5464 pyobj_conn_inst
, NULL
);
5465 LIBVIRT_END_ALLOW_THREADS
;
5467 return libvirt_intWrap(ret
);
5471 libvirt_virConnectDomainEventDeregister(PyObject
*self ATTRIBUTE_UNUSED
,
5474 PyObject
*pyobj_conn
;
5475 PyObject
*pyobj_conn_inst
;
5480 if (!PyArg_ParseTuple(args
, (char *) "OO:virConnectDomainEventDeregister",
5481 &pyobj_conn
, &pyobj_conn_inst
))
5484 DEBUG("libvirt_virConnectDomainEventDeregister(%p) called\n", pyobj_conn
);
5486 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
5488 LIBVIRT_BEGIN_ALLOW_THREADS
;
5489 ret
= virConnectDomainEventDeregister(conn
, libvirt_virConnectDomainEventCallback
);
5490 LIBVIRT_END_ALLOW_THREADS
;
5492 Py_DECREF(pyobj_conn_inst
);
5493 return libvirt_intWrap(ret
);
5496 /*******************************************
5498 *******************************************/
5499 static PyObject
*addHandleObj
;
5500 static PyObject
*updateHandleObj
;
5501 static PyObject
*removeHandleObj
;
5502 static PyObject
*addTimeoutObj
;
5503 static PyObject
*updateTimeoutObj
;
5504 static PyObject
*removeTimeoutObj
;
5507 libvirt_virEventAddHandleFunc(int fd
,
5509 virEventHandleCallback cb
,
5514 PyObject
*python_cb
= NULL
;
5515 PyObject
*cb_args
= NULL
;
5516 PyObject
*pyobj_args
= NULL
;
5519 LIBVIRT_ENSURE_THREAD_STATE
;
5521 if ((pyobj_args
= PyTuple_New(4)) == NULL
)
5524 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 0, libvirt_intWrap(fd
), cleanup
);
5525 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 1, libvirt_intWrap(event
), cleanup
);
5527 /* Lookup the python callback */
5528 python_cb
= libvirt_lookupPythonFunc("_eventInvokeHandleCallback");
5532 Py_INCREF(python_cb
);
5534 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 2, python_cb
, cleanup
);
5536 if ((cb_args
= PyTuple_New(3)) == NULL
)
5539 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 3, cb_args
, cleanup
);
5541 /* If changing contents of the opaque object, please also change
5542 * virEventInvokeFreeCallback() in libvirt-override.py
5544 VIR_PY_TUPLE_SET_GOTO(cb_args
, 0, libvirt_virEventHandleCallbackWrap(cb
), cleanup
);
5545 VIR_PY_TUPLE_SET_GOTO(cb_args
, 1, libvirt_virVoidPtrWrap(opaque
), cleanup
);
5546 VIR_PY_TUPLE_SET_GOTO(cb_args
, 2, libvirt_virFreeCallbackWrap(ff
), cleanup
);
5548 result
= PyObject_Call(addHandleObj
, pyobj_args
, NULL
);
5553 libvirt_intUnwrap(result
, &retval
);
5559 Py_XDECREF(pyobj_args
);
5561 LIBVIRT_RELEASE_THREAD_STATE
;
5567 libvirt_virEventUpdateHandleFunc(int watch
,
5570 PyObject
*result
= NULL
;
5571 PyObject
*pyobj_args
;
5573 LIBVIRT_ENSURE_THREAD_STATE
;
5575 if ((pyobj_args
= PyTuple_New(2)) == NULL
)
5578 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 0, libvirt_intWrap(watch
), cleanup
);
5579 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 1, libvirt_intWrap(event
), cleanup
);
5581 result
= PyObject_Call(updateHandleObj
, pyobj_args
, NULL
);
5589 Py_XDECREF(pyobj_args
);
5591 LIBVIRT_RELEASE_THREAD_STATE
;
5596 libvirt_virEventRemoveHandleFunc(int watch
)
5598 PyObject
*result
= NULL
;
5599 PyObject
*pyobj_args
;
5602 LIBVIRT_ENSURE_THREAD_STATE
;
5604 if ((pyobj_args
= PyTuple_New(1)) == NULL
)
5607 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 0, libvirt_intWrap(watch
), cleanup
);
5609 result
= PyObject_Call(removeHandleObj
, pyobj_args
, NULL
);
5619 Py_XDECREF(pyobj_args
);
5621 LIBVIRT_RELEASE_THREAD_STATE
;
5628 libvirt_virEventAddTimeoutFunc(int timeout
,
5629 virEventTimeoutCallback cb
,
5633 PyObject
*result
= NULL
;
5634 PyObject
*python_cb
= NULL
;
5635 PyObject
*cb_args
= NULL
;
5636 PyObject
*pyobj_args
= NULL
;
5639 LIBVIRT_ENSURE_THREAD_STATE
;
5641 if ((pyobj_args
= PyTuple_New(3)) == NULL
)
5644 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 0, libvirt_intWrap(timeout
), cleanup
);
5646 /* Lookup the python callback */
5647 python_cb
= libvirt_lookupPythonFunc("_eventInvokeTimeoutCallback");
5651 Py_INCREF(python_cb
);
5652 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 1, python_cb
, cleanup
);
5654 if ((cb_args
= PyTuple_New(3)) == NULL
)
5657 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 2, cb_args
, cleanup
);
5659 /* If changing contents of the opaque object, please also change
5660 * virEventInvokeFreeCallback() in libvirt-override.py
5662 VIR_PY_TUPLE_SET_GOTO(cb_args
, 0, libvirt_virEventTimeoutCallbackWrap(cb
), cleanup
);
5663 VIR_PY_TUPLE_SET_GOTO(cb_args
, 1, libvirt_virVoidPtrWrap(opaque
), cleanup
);
5664 VIR_PY_TUPLE_SET_GOTO(cb_args
, 2, libvirt_virFreeCallbackWrap(ff
), cleanup
);
5666 result
= PyObject_Call(addTimeoutObj
, pyobj_args
, NULL
);
5671 libvirt_intUnwrap(result
, &retval
);
5676 Py_XDECREF(pyobj_args
);
5678 LIBVIRT_RELEASE_THREAD_STATE
;
5683 libvirt_virEventUpdateTimeoutFunc(int timer
,
5686 PyObject
*result
= NULL
;
5687 PyObject
*pyobj_args
;
5689 LIBVIRT_ENSURE_THREAD_STATE
;
5691 if ((pyobj_args
= PyTuple_New(2)) == NULL
)
5694 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 0, libvirt_intWrap(timer
), cleanup
);
5695 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 1, libvirt_intWrap(timeout
), cleanup
);
5697 result
= PyObject_Call(updateTimeoutObj
, pyobj_args
, NULL
);
5705 Py_XDECREF(pyobj_args
);
5707 LIBVIRT_RELEASE_THREAD_STATE
;
5711 libvirt_virEventRemoveTimeoutFunc(int timer
)
5713 PyObject
*result
= NULL
;
5714 PyObject
*pyobj_args
;
5717 LIBVIRT_ENSURE_THREAD_STATE
;
5719 if ((pyobj_args
= PyTuple_New(1)) == NULL
)
5722 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 0, libvirt_intWrap(timer
), cleanup
);
5724 result
= PyObject_Call(removeTimeoutObj
, pyobj_args
, NULL
);
5734 Py_XDECREF(pyobj_args
);
5736 LIBVIRT_RELEASE_THREAD_STATE
;
5742 libvirt_virEventRegisterImpl(PyObject
*self ATTRIBUTE_UNUSED
,
5745 if (addHandleObj
|| updateHandleObj
|| removeHandleObj
||
5746 addTimeoutObj
|| updateTimeoutObj
|| removeTimeoutObj
) {
5747 PyErr_SetString(PyExc_RuntimeError
,
5748 "Event loop is already registered");
5752 /* Parse and check arguments */
5753 if (!PyArg_ParseTuple(args
, (char *) "OOOOOO:virEventRegisterImpl",
5754 &addHandleObj
, &updateHandleObj
,
5755 &removeHandleObj
, &addTimeoutObj
,
5756 &updateTimeoutObj
, &removeTimeoutObj
) ||
5757 !PyCallable_Check(addHandleObj
) ||
5758 !PyCallable_Check(updateHandleObj
) ||
5759 !PyCallable_Check(removeHandleObj
) ||
5760 !PyCallable_Check(addTimeoutObj
) ||
5761 !PyCallable_Check(updateTimeoutObj
) ||
5762 !PyCallable_Check(removeTimeoutObj
))
5765 /* Inc refs since we're holding on to these objects until
5766 * the next call (if any) to this function.
5768 Py_INCREF(addHandleObj
);
5769 Py_INCREF(updateHandleObj
);
5770 Py_INCREF(removeHandleObj
);
5771 Py_INCREF(addTimeoutObj
);
5772 Py_INCREF(updateTimeoutObj
);
5773 Py_INCREF(removeTimeoutObj
);
5775 /* Now register our C EventImpl, which will dispatch
5776 * to the Python callbacks passed in as args.
5778 LIBVIRT_BEGIN_ALLOW_THREADS
;
5779 virEventRegisterImpl(libvirt_virEventAddHandleFunc
,
5780 libvirt_virEventUpdateHandleFunc
,
5781 libvirt_virEventRemoveHandleFunc
,
5782 libvirt_virEventAddTimeoutFunc
,
5783 libvirt_virEventUpdateTimeoutFunc
,
5784 libvirt_virEventRemoveTimeoutFunc
);
5785 LIBVIRT_END_ALLOW_THREADS
;
5787 return VIR_PY_INT_SUCCESS
;
5791 libvirt_virEventInvokeHandleCallback(PyObject
*self ATTRIBUTE_UNUSED
,
5794 int watch
, fd
, event
;
5796 PyObject
*py_opaque
;
5797 virEventHandleCallback cb
;
5800 if (!PyArg_ParseTuple(args
, (char *) "iiiOO:virEventInvokeHandleCallback",
5801 &watch
, &fd
, &event
, &py_f
, &py_opaque
))
5804 cb
= (virEventHandleCallback
) PyvirEventHandleCallback_Get(py_f
);
5805 opaque
= (void *) PyvirVoidPtr_Get(py_opaque
);
5808 LIBVIRT_BEGIN_ALLOW_THREADS
;
5809 cb(watch
, fd
, event
, opaque
);
5810 LIBVIRT_END_ALLOW_THREADS
;
5813 return VIR_PY_INT_SUCCESS
;
5817 libvirt_virEventInvokeTimeoutCallback(PyObject
*self ATTRIBUTE_UNUSED
,
5822 PyObject
*py_opaque
;
5823 virEventTimeoutCallback cb
;
5826 if (!PyArg_ParseTuple(args
, (char *) "iOO:virEventInvokeTimeoutCallback",
5827 &timer
, &py_f
, &py_opaque
))
5830 cb
= (virEventTimeoutCallback
) PyvirEventTimeoutCallback_Get(py_f
);
5831 opaque
= (void *) PyvirVoidPtr_Get(py_opaque
);
5833 LIBVIRT_BEGIN_ALLOW_THREADS
;
5835 LIBVIRT_END_ALLOW_THREADS
;
5838 return VIR_PY_INT_SUCCESS
;
5842 libvirt_virEventInvokeFreeCallback(PyObject
*self ATTRIBUTE_UNUSED
,
5846 PyObject
*py_opaque
;
5850 if (!PyArg_ParseTuple(args
, (char *) "OO:virEventInvokeFreeCallback",
5854 cb
= (virFreeCallback
) PyvirEventHandleCallback_Get(py_f
);
5855 opaque
= (void *) PyvirVoidPtr_Get(py_opaque
);
5858 LIBVIRT_BEGIN_ALLOW_THREADS
;
5860 LIBVIRT_END_ALLOW_THREADS
;
5863 return VIR_PY_INT_SUCCESS
;
5867 libvirt_virEventHandleCallback(int watch
,
5872 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
5873 PyObject
*pyobj_ret
;
5874 PyObject
*python_cb
;
5876 LIBVIRT_ENSURE_THREAD_STATE
;
5878 /* Lookup the python callback */
5879 python_cb
= libvirt_lookupPythonFunc("_dispatchEventHandleCallback");
5884 Py_INCREF(pyobj_cbData
);
5886 /* Call the pure python dispatcher */
5887 pyobj_ret
= PyObject_CallFunction(python_cb
,
5889 watch
, fd
, events
, pyobj_cbData
);
5891 Py_DECREF(pyobj_cbData
);
5894 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
5897 Py_DECREF(pyobj_ret
);
5901 LIBVIRT_RELEASE_THREAD_STATE
;
5905 libvirt_virEventAddHandle(PyObject
*self ATTRIBUTE_UNUSED
,
5908 PyObject
*pyobj_cbData
;
5909 virEventHandleCallback cb
= libvirt_virEventHandleCallback
;
5914 if (!PyArg_ParseTuple(args
, (char *) "iiO:virEventAddHandle",
5915 &fd
, &events
, &pyobj_cbData
))
5918 Py_INCREF(pyobj_cbData
);
5920 LIBVIRT_BEGIN_ALLOW_THREADS
;
5921 ret
= virEventAddHandle(fd
, events
, cb
, pyobj_cbData
, NULL
);
5922 LIBVIRT_END_ALLOW_THREADS
;
5925 Py_DECREF(pyobj_cbData
);
5928 return libvirt_intWrap(ret
);
5932 libvirt_virEventTimeoutCallback(int timer
,
5935 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
5936 PyObject
*pyobj_ret
;
5937 PyObject
*python_cb
;
5939 LIBVIRT_ENSURE_THREAD_STATE
;
5941 /* Lookup the python callback */
5942 python_cb
= libvirt_lookupPythonFunc("_dispatchEventTimeoutCallback");
5947 Py_INCREF(pyobj_cbData
);
5949 /* Call the pure python dispatcher */
5950 pyobj_ret
= PyObject_CallFunction(python_cb
,
5952 timer
, pyobj_cbData
);
5954 Py_DECREF(pyobj_cbData
);
5957 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
5960 Py_DECREF(pyobj_ret
);
5964 LIBVIRT_RELEASE_THREAD_STATE
;
5968 libvirt_virEventAddTimeout(PyObject
*self ATTRIBUTE_UNUSED
,
5971 PyObject
*pyobj_cbData
;
5972 virEventTimeoutCallback cb
= libvirt_virEventTimeoutCallback
;
5976 if (!PyArg_ParseTuple(args
, (char *) "iO:virEventAddTimeout",
5977 &timeout
, &pyobj_cbData
))
5980 Py_INCREF(pyobj_cbData
);
5982 LIBVIRT_BEGIN_ALLOW_THREADS
;
5983 ret
= virEventAddTimeout(timeout
, cb
, pyobj_cbData
, NULL
);
5984 LIBVIRT_END_ALLOW_THREADS
;
5987 Py_DECREF(pyobj_cbData
);
5990 return libvirt_intWrap(ret
);
5994 libvirt_virConnectDomainEventFreeFunc(void *opaque
)
5996 PyObject
*pyobj_conn
= (PyObject
*)opaque
;
5997 LIBVIRT_ENSURE_THREAD_STATE
;
5998 Py_DECREF(pyobj_conn
);
5999 LIBVIRT_RELEASE_THREAD_STATE
;
6003 libvirt_virConnectDomainEventLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6009 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6010 PyObject
*pyobj_dom
;
6011 PyObject
*pyobj_ret
= NULL
;
6012 PyObject
*pyobj_conn
;
6016 LIBVIRT_ENSURE_THREAD_STATE
;
6018 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6020 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6023 /* Create a python instance of this virDomainPtr */
6025 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6029 Py_INCREF(pyobj_cbData
);
6031 /* Call the Callback Dispatcher */
6032 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6033 (char*)"_dispatchDomainEventLifecycleCallback",
6039 Py_DECREF(pyobj_cbData
);
6040 Py_DECREF(pyobj_dom
);
6044 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6047 Py_DECREF(pyobj_ret
);
6051 LIBVIRT_RELEASE_THREAD_STATE
;
6056 libvirt_virConnectDomainEventGenericCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6060 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6061 PyObject
*pyobj_dom
;
6062 PyObject
*pyobj_ret
= NULL
;
6063 PyObject
*pyobj_conn
;
6067 LIBVIRT_ENSURE_THREAD_STATE
;
6069 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6071 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6074 /* Create a python instance of this virDomainPtr */
6076 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6080 Py_INCREF(pyobj_cbData
);
6082 /* Call the Callback Dispatcher */
6083 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6084 (char*)"_dispatchDomainEventGenericCallback",
6086 pyobj_dom
, pyobj_cbData
);
6088 Py_DECREF(pyobj_cbData
);
6089 Py_DECREF(pyobj_dom
);
6093 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6096 Py_DECREF(pyobj_ret
);
6100 LIBVIRT_RELEASE_THREAD_STATE
;
6105 libvirt_virConnectDomainEventRTCChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6107 long long utcoffset
,
6110 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6111 PyObject
*pyobj_dom
;
6112 PyObject
*pyobj_ret
= NULL
;
6113 PyObject
*pyobj_conn
;
6117 LIBVIRT_ENSURE_THREAD_STATE
;
6119 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6121 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6124 /* Create a python instance of this virDomainPtr */
6126 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6130 Py_INCREF(pyobj_cbData
);
6132 /* Call the Callback Dispatcher */
6133 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6134 (char*)"_dispatchDomainEventRTCChangeCallback",
6137 (PY_LONG_LONG
)utcoffset
,
6140 Py_DECREF(pyobj_cbData
);
6141 Py_DECREF(pyobj_dom
);
6145 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6148 Py_DECREF(pyobj_ret
);
6152 LIBVIRT_RELEASE_THREAD_STATE
;
6157 libvirt_virConnectDomainEventWatchdogCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6162 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6163 PyObject
*pyobj_dom
;
6164 PyObject
*pyobj_ret
= NULL
;
6165 PyObject
*pyobj_conn
;
6169 LIBVIRT_ENSURE_THREAD_STATE
;
6171 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6173 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6176 /* Create a python instance of this virDomainPtr */
6178 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6182 Py_INCREF(pyobj_cbData
);
6184 /* Call the Callback Dispatcher */
6185 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6186 (char*)"_dispatchDomainEventWatchdogCallback",
6192 Py_DECREF(pyobj_cbData
);
6193 Py_DECREF(pyobj_dom
);
6197 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6200 Py_DECREF(pyobj_ret
);
6204 LIBVIRT_RELEASE_THREAD_STATE
;
6209 libvirt_virConnectDomainEventIOErrorCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6211 const char *srcPath
,
6212 const char *devAlias
,
6216 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6217 PyObject
*pyobj_dom
;
6218 PyObject
*pyobj_ret
= NULL
;
6219 PyObject
*pyobj_conn
;
6223 LIBVIRT_ENSURE_THREAD_STATE
;
6225 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6227 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6230 /* Create a python instance of this virDomainPtr */
6232 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6236 Py_INCREF(pyobj_cbData
);
6238 /* Call the Callback Dispatcher */
6239 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6240 (char*)"_dispatchDomainEventIOErrorCallback",
6243 srcPath
, devAlias
, action
,
6246 Py_DECREF(pyobj_cbData
);
6247 Py_DECREF(pyobj_dom
);
6251 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6254 Py_DECREF(pyobj_ret
);
6258 LIBVIRT_RELEASE_THREAD_STATE
;
6263 libvirt_virConnectDomainEventIOErrorReasonCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6265 const char *srcPath
,
6266 const char *devAlias
,
6271 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6272 PyObject
*pyobj_dom
;
6273 PyObject
*pyobj_ret
= NULL
;
6274 PyObject
*pyobj_conn
;
6278 LIBVIRT_ENSURE_THREAD_STATE
;
6280 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6282 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6285 /* Create a python instance of this virDomainPtr */
6287 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6291 Py_INCREF(pyobj_cbData
);
6293 /* Call the Callback Dispatcher */
6294 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6295 (char*)"_dispatchDomainEventIOErrorReasonCallback",
6298 srcPath
, devAlias
, action
, reason
,
6301 Py_DECREF(pyobj_cbData
);
6302 Py_DECREF(pyobj_dom
);
6306 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6309 Py_DECREF(pyobj_ret
);
6313 LIBVIRT_RELEASE_THREAD_STATE
;
6318 libvirt_virConnectDomainEventGraphicsCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6321 virDomainEventGraphicsAddressPtr local
,
6322 virDomainEventGraphicsAddressPtr remote
,
6323 const char *authScheme
,
6324 virDomainEventGraphicsSubjectPtr subject
,
6327 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6328 PyObject
*pyobj_dom
= NULL
;
6329 PyObject
*pyobj_ret
= NULL
;
6330 PyObject
*pyobj_conn
;
6332 PyObject
*pyobj_local
= NULL
;
6333 PyObject
*pyobj_remote
= NULL
;
6334 PyObject
*pyobj_subject
= NULL
;
6338 LIBVIRT_ENSURE_THREAD_STATE
;
6340 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6342 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6345 /* Create a python instance of this virDomainPtr */
6347 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6351 Py_INCREF(pyobj_cbData
);
6353 if ((pyobj_local
= PyDict_New()) == NULL
)
6356 VIR_PY_DICT_SET_GOTO(pyobj_local
,
6357 libvirt_constcharPtrWrap("family"),
6358 libvirt_intWrap(local
->family
),
6360 VIR_PY_DICT_SET_GOTO(pyobj_local
,
6361 libvirt_constcharPtrWrap("node"),
6362 libvirt_constcharPtrWrap(local
->node
),
6364 VIR_PY_DICT_SET_GOTO(pyobj_local
,
6365 libvirt_constcharPtrWrap("service"),
6366 libvirt_constcharPtrWrap(local
->service
),
6369 if ((pyobj_remote
= PyDict_New()) == NULL
)
6372 VIR_PY_DICT_SET_GOTO(pyobj_remote
,
6373 libvirt_constcharPtrWrap("family"),
6374 libvirt_intWrap(remote
->family
),
6376 VIR_PY_DICT_SET_GOTO(pyobj_remote
,
6377 libvirt_constcharPtrWrap("node"),
6378 libvirt_constcharPtrWrap(remote
->node
),
6380 VIR_PY_DICT_SET_GOTO(pyobj_remote
,
6381 libvirt_constcharPtrWrap("service"),
6382 libvirt_constcharPtrWrap(remote
->service
),
6385 if ((pyobj_subject
= PyList_New(subject
->nidentity
)) == NULL
)
6388 for (i
= 0; i
< subject
->nidentity
; i
++) {
6389 PyObject
*pair
= PyTuple_New(2);
6393 VIR_PY_LIST_SET_GOTO(pyobj_subject
, i
, pair
, cleanup
);
6395 VIR_PY_TUPLE_SET_GOTO(pair
, 0,
6396 libvirt_constcharPtrWrap(subject
->identities
[i
].type
),
6398 VIR_PY_TUPLE_SET_GOTO(pair
, 1,
6399 libvirt_constcharPtrWrap(subject
->identities
[i
].name
),
6403 /* Call the Callback Dispatcher */
6404 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6405 (char*)"_dispatchDomainEventGraphicsCallback",
6408 phase
, pyobj_local
, pyobj_remote
,
6409 authScheme
, pyobj_subject
,
6413 Py_DECREF(pyobj_cbData
);
6414 Py_XDECREF(pyobj_dom
);
6417 Py_XDECREF(pyobj_local
);
6418 Py_XDECREF(pyobj_remote
);
6419 Py_XDECREF(pyobj_subject
);
6420 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6423 Py_DECREF(pyobj_ret
);
6427 LIBVIRT_RELEASE_THREAD_STATE
;
6432 libvirt_virConnectDomainEventBlockJobCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6439 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6440 PyObject
*pyobj_dom
;
6441 PyObject
*pyobj_ret
= NULL
;
6442 PyObject
*pyobj_conn
;
6446 LIBVIRT_ENSURE_THREAD_STATE
;
6448 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6450 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6453 /* Create a python instance of this virDomainPtr */
6455 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6459 Py_INCREF(pyobj_cbData
);
6461 /* Call the Callback Dispatcher */
6462 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6463 (char*)"_dispatchDomainEventBlockJobCallback",
6465 pyobj_dom
, disk
, type
, status
, pyobj_cbData
);
6467 Py_DECREF(pyobj_cbData
);
6468 Py_DECREF(pyobj_dom
);
6472 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6475 Py_DECREF(pyobj_ret
);
6479 LIBVIRT_RELEASE_THREAD_STATE
;
6484 libvirt_virConnectDomainEventDiskChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6486 const char *oldSrcPath
,
6487 const char *newSrcPath
,
6488 const char *devAlias
,
6492 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6493 PyObject
*pyobj_dom
;
6494 PyObject
*pyobj_ret
= NULL
;
6495 PyObject
*pyobj_conn
;
6499 LIBVIRT_ENSURE_THREAD_STATE
;
6501 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6503 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6506 /* Create a python instance of this virDomainPtr */
6508 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6512 Py_INCREF(pyobj_cbData
);
6514 /* Call the Callback Dispatcher */
6515 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6516 (char*)"_dispatchDomainEventDiskChangeCallback",
6519 oldSrcPath
, newSrcPath
,
6520 devAlias
, reason
, pyobj_cbData
);
6522 Py_DECREF(pyobj_cbData
);
6523 Py_DECREF(pyobj_dom
);
6527 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6530 Py_DECREF(pyobj_ret
);
6534 LIBVIRT_RELEASE_THREAD_STATE
;
6539 libvirt_virConnectDomainEventTrayChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6541 const char *devAlias
,
6545 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6546 PyObject
*pyobj_dom
;
6547 PyObject
*pyobj_ret
= NULL
;
6548 PyObject
*pyobj_conn
;
6552 LIBVIRT_ENSURE_THREAD_STATE
;
6554 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6556 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6559 /* Create a python instance of this virDomainPtr */
6561 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6565 Py_INCREF(pyobj_cbData
);
6567 /* Call the Callback Dispatcher */
6568 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6569 (char*)"_dispatchDomainEventTrayChangeCallback",
6572 devAlias
, reason
, pyobj_cbData
);
6574 Py_DECREF(pyobj_cbData
);
6575 Py_DECREF(pyobj_dom
);
6579 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6582 Py_DECREF(pyobj_ret
);
6586 LIBVIRT_RELEASE_THREAD_STATE
;
6591 libvirt_virConnectDomainEventPMWakeupCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6596 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6597 PyObject
*pyobj_dom
;
6598 PyObject
*pyobj_ret
= NULL
;
6599 PyObject
*pyobj_conn
;
6603 LIBVIRT_ENSURE_THREAD_STATE
;
6605 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6607 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6610 /* Create a python instance of this virDomainPtr */
6612 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6616 Py_INCREF(pyobj_cbData
);
6618 /* Call the Callback Dispatcher */
6619 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6620 (char*)"_dispatchDomainEventPMWakeupCallback",
6626 Py_DECREF(pyobj_cbData
);
6627 Py_DECREF(pyobj_dom
);
6631 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6634 Py_DECREF(pyobj_ret
);
6638 LIBVIRT_RELEASE_THREAD_STATE
;
6643 libvirt_virConnectDomainEventPMSuspendCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6648 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6649 PyObject
*pyobj_dom
;
6650 PyObject
*pyobj_ret
= NULL
;
6651 PyObject
*pyobj_conn
;
6655 LIBVIRT_ENSURE_THREAD_STATE
;
6657 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6659 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6662 /* Create a python instance of this virDomainPtr */
6664 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6668 Py_INCREF(pyobj_cbData
);
6670 /* Call the Callback Dispatcher */
6671 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6672 (char*)"_dispatchDomainEventPMSuspendCallback",
6678 Py_DECREF(pyobj_cbData
);
6679 Py_DECREF(pyobj_dom
);
6683 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6686 Py_DECREF(pyobj_ret
);
6690 LIBVIRT_RELEASE_THREAD_STATE
;
6695 #ifdef VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE
6697 libvirt_virConnectDomainEventBalloonChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6699 unsigned long long actual
,
6702 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6703 PyObject
*pyobj_dom
;
6704 PyObject
*pyobj_ret
= NULL
;
6705 PyObject
*pyobj_conn
;
6709 LIBVIRT_ENSURE_THREAD_STATE
;
6711 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6713 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6716 /* Create a python instance of this virDomainPtr */
6718 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6722 Py_INCREF(pyobj_cbData
);
6724 /* Call the Callback Dispatcher */
6725 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6726 (char*)"_dispatchDomainEventBalloonChangeCallback",
6729 (PY_LONG_LONG
)actual
,
6732 Py_DECREF(pyobj_cbData
);
6733 Py_DECREF(pyobj_dom
);
6737 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6740 Py_DECREF(pyobj_ret
);
6744 LIBVIRT_RELEASE_THREAD_STATE
;
6747 #endif /* VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE */
6749 #ifdef VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK
6751 libvirt_virConnectDomainEventPMSuspendDiskCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6756 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6757 PyObject
*pyobj_dom
;
6758 PyObject
*pyobj_ret
= NULL
;
6759 PyObject
*pyobj_conn
;
6763 LIBVIRT_ENSURE_THREAD_STATE
;
6765 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6767 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6770 /* Create a python instance of this virDomainPtr */
6772 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6776 Py_INCREF(pyobj_cbData
);
6778 /* Call the Callback Dispatcher */
6779 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6780 (char*)"_dispatchDomainEventPMSuspendDiskCallback",
6786 Py_DECREF(pyobj_cbData
);
6787 Py_DECREF(pyobj_dom
);
6791 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6794 Py_DECREF(pyobj_ret
);
6798 LIBVIRT_RELEASE_THREAD_STATE
;
6801 #endif /* VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK */
6803 #ifdef VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED
6805 libvirt_virConnectDomainEventDeviceRemovedCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6807 const char *devAlias
,
6810 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6811 PyObject
*pyobj_dom
;
6812 PyObject
*pyobj_ret
= NULL
;
6813 PyObject
*pyobj_conn
;
6817 LIBVIRT_ENSURE_THREAD_STATE
;
6819 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6821 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6824 /* Create a python instance of this virDomainPtr */
6826 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6830 Py_INCREF(pyobj_cbData
);
6832 /* Call the Callback Dispatcher */
6833 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6834 (char*)"_dispatchDomainEventDeviceRemovedCallback",
6836 pyobj_dom
, devAlias
, pyobj_cbData
);
6838 Py_DECREF(pyobj_cbData
);
6839 Py_DECREF(pyobj_dom
);
6843 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6846 Py_DECREF(pyobj_ret
);
6850 LIBVIRT_RELEASE_THREAD_STATE
;
6853 #endif /* VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED */
6855 #ifdef VIR_DOMAIN_EVENT_ID_TUNABLE
6857 libvirt_virConnectDomainEventTunableCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6859 virTypedParameterPtr params
,
6863 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6864 PyObject
*pyobj_dom
;
6865 PyObject
*pyobj_ret
= NULL
;
6866 PyObject
*pyobj_conn
;
6868 PyObject
*pyobj_dict
= NULL
;
6871 LIBVIRT_ENSURE_THREAD_STATE
;
6873 pyobj_dict
= getPyVirTypedParameter(params
, nparams
);
6877 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6879 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6882 /* Create a python instance of this virDomainPtr */
6884 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6888 Py_INCREF(pyobj_cbData
);
6890 /* Call the Callback Dispatcher */
6891 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6892 (char*)"_dispatchDomainEventTunableCallback",
6894 pyobj_dom
, pyobj_dict
, pyobj_cbData
);
6896 Py_DECREF(pyobj_cbData
);
6897 Py_DECREF(pyobj_dom
);
6901 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6904 Py_DECREF(pyobj_ret
);
6907 Py_XDECREF(pyobj_dict
);
6909 LIBVIRT_RELEASE_THREAD_STATE
;
6913 #endif /* VIR_DOMAIN_EVENT_ID_TUNABLE */
6915 #ifdef VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE
6917 libvirt_virConnectDomainEventAgentLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6923 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6924 PyObject
*pyobj_dom
;
6925 PyObject
*pyobj_ret
= NULL
;
6926 PyObject
*pyobj_conn
;
6930 LIBVIRT_ENSURE_THREAD_STATE
;
6932 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6934 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6937 /* Create a python instance of this virDomainPtr */
6939 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6943 Py_INCREF(pyobj_cbData
);
6945 /* Call the Callback Dispatcher */
6946 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6947 (char*)"_dispatchDomainEventAgentLifecycleCallback",
6949 pyobj_dom
, state
, reason
, pyobj_cbData
);
6951 Py_DECREF(pyobj_cbData
);
6952 Py_DECREF(pyobj_dom
);
6956 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6959 Py_DECREF(pyobj_ret
);
6963 LIBVIRT_RELEASE_THREAD_STATE
;
6967 #endif /* VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE */
6969 #ifdef VIR_DOMAIN_EVENT_ID_DEVICE_ADDED
6971 libvirt_virConnectDomainEventDeviceAddedCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6973 const char *devAlias
,
6976 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6977 PyObject
*pyobj_dom
;
6978 PyObject
*pyobj_ret
= NULL
;
6979 PyObject
*pyobj_conn
;
6983 LIBVIRT_ENSURE_THREAD_STATE
;
6985 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6987 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6990 /* Create a python instance of this virDomainPtr */
6992 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6996 Py_INCREF(pyobj_cbData
);
6998 /* Call the Callback Dispatcher */
6999 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7000 (char*)"_dispatchDomainEventDeviceAddedCallback",
7002 pyobj_dom
, devAlias
, pyobj_cbData
);
7004 Py_DECREF(pyobj_cbData
);
7005 Py_DECREF(pyobj_dom
);
7009 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7012 Py_DECREF(pyobj_ret
);
7016 LIBVIRT_RELEASE_THREAD_STATE
;
7020 #endif /* VIR_DOMAIN_EVENT_ID_DEVICE_ADDED */
7022 #ifdef VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION
7024 libvirt_virConnectDomainEventMigrationIterationCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7029 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7030 PyObject
*pyobj_dom
;
7031 PyObject
*pyobj_ret
= NULL
;
7032 PyObject
*pyobj_conn
;
7036 LIBVIRT_ENSURE_THREAD_STATE
;
7038 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7040 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7043 /* Create a python instance of this virDomainPtr */
7045 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7049 Py_INCREF(pyobj_cbData
);
7051 /* Call the Callback Dispatcher */
7052 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7053 (char*)"_dispatchDomainEventMigrationIterationCallback",
7055 pyobj_dom
, iteration
, pyobj_cbData
);
7057 Py_DECREF(pyobj_cbData
);
7058 Py_DECREF(pyobj_dom
);
7062 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7065 Py_DECREF(pyobj_ret
);
7069 LIBVIRT_RELEASE_THREAD_STATE
;
7072 #endif /* VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION */
7074 #ifdef VIR_DOMAIN_EVENT_ID_JOB_COMPLETED
7076 libvirt_virConnectDomainEventJobCompletedCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7078 virTypedParameterPtr params
,
7082 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7083 PyObject
*pyobj_dom
;
7084 PyObject
*pyobj_ret
= NULL
;
7085 PyObject
*pyobj_conn
;
7087 PyObject
*pyobj_dict
= NULL
;
7090 LIBVIRT_ENSURE_THREAD_STATE
;
7092 pyobj_dict
= getPyVirTypedParameter(params
, nparams
);
7096 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7098 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7101 /* Create a python instance of this virDomainPtr */
7103 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7107 Py_INCREF(pyobj_cbData
);
7109 /* Call the Callback Dispatcher */
7110 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7111 (char*)"_dispatchDomainEventJobCompletedCallback",
7113 pyobj_dom
, pyobj_dict
, pyobj_cbData
);
7115 Py_DECREF(pyobj_cbData
);
7116 Py_DECREF(pyobj_dom
);
7120 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7122 Py_XDECREF(pyobj_dict
);
7124 Py_DECREF(pyobj_ret
);
7128 LIBVIRT_RELEASE_THREAD_STATE
;
7131 #endif /* VIR_DOMAIN_EVENT_ID_JOB_COMPLETED */
7134 #ifdef VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED
7136 libvirt_virConnectDomainEventDeviceRemovalFailedCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7138 const char *devAlias
,
7141 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7142 PyObject
*pyobj_dom
;
7143 PyObject
*pyobj_ret
= NULL
;
7144 PyObject
*pyobj_conn
;
7148 LIBVIRT_ENSURE_THREAD_STATE
;
7150 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7152 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7155 /* Create a python instance of this virDomainPtr */
7157 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7161 Py_INCREF(pyobj_cbData
);
7163 /* Call the Callback Dispatcher */
7164 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7165 (char*)"_dispatchDomainEventDeviceRemovalFailedCallback",
7167 pyobj_dom
, devAlias
, pyobj_cbData
);
7169 Py_DECREF(pyobj_cbData
);
7170 Py_DECREF(pyobj_dom
);
7174 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7177 Py_DECREF(pyobj_ret
);
7181 LIBVIRT_RELEASE_THREAD_STATE
;
7185 #endif /* VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED */
7187 #ifdef VIR_DOMAIN_EVENT_ID_METADATA_CHANGE
7189 libvirt_virConnectDomainEventMetadataChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7195 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7196 PyObject
*pyobj_dom
;
7197 PyObject
*pyobj_ret
= NULL
;
7198 PyObject
*pyobj_conn
;
7202 LIBVIRT_ENSURE_THREAD_STATE
;
7204 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7206 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7209 /* Create a python instance of this virDomainPtr */
7211 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7215 Py_INCREF(pyobj_cbData
);
7217 /* Call the Callback Dispatcher */
7218 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7219 (char*)"_dispatchDomainEventMetadataChangeCallback",
7221 pyobj_dom
, type
, nsuri
, pyobj_cbData
);
7223 Py_DECREF(pyobj_cbData
);
7224 Py_DECREF(pyobj_dom
);
7228 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7231 Py_DECREF(pyobj_ret
);
7235 LIBVIRT_RELEASE_THREAD_STATE
;
7238 #endif /* VIR_DOMAIN_EVENT_ID_METADATA_CHANGE */
7240 #ifdef VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD
7242 libvirt_virConnectDomainEventBlockThresholdCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7246 unsigned long long threshold
,
7247 unsigned long long excess
,
7250 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7251 PyObject
*pyobj_dom
;
7252 PyObject
*pyobj_ret
= NULL
;
7253 PyObject
*pyobj_conn
;
7257 LIBVIRT_ENSURE_THREAD_STATE
;
7259 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7261 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7264 /* Create a python instance of this virDomainPtr */
7266 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7270 Py_INCREF(pyobj_cbData
);
7272 /* Call the Callback Dispatcher */
7273 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7274 (char*)"_dispatchDomainEventBlockThresholdCallback",
7276 pyobj_dom
, dev
, path
, threshold
, excess
,
7279 Py_DECREF(pyobj_cbData
);
7280 Py_DECREF(pyobj_dom
);
7284 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7287 Py_DECREF(pyobj_ret
);
7291 LIBVIRT_RELEASE_THREAD_STATE
;
7294 #endif /* VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD */
7297 #ifdef VIR_DOMAIN_EVENT_ID_MEMORY_FAILURE
7299 libvirt_virConnectDomainEventMemoryFailureCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7306 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7307 PyObject
*pyobj_dom
;
7308 PyObject
*pyobj_ret
= NULL
;
7309 PyObject
*pyobj_conn
;
7313 LIBVIRT_ENSURE_THREAD_STATE
;
7315 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7317 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7320 /* Create a python instance of this virDomainPtr */
7322 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7326 Py_INCREF(pyobj_cbData
);
7328 /* Call the Callback Dispatcher */
7329 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7330 (char*)"_dispatchDomainEventMemoryFailureCallback",
7332 pyobj_dom
, recipient
, action
, flags
,
7335 Py_DECREF(pyobj_cbData
);
7336 Py_DECREF(pyobj_dom
);
7340 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7343 Py_DECREF(pyobj_ret
);
7347 LIBVIRT_RELEASE_THREAD_STATE
;
7350 #endif /* VIR_DOMAIN_EVENT_ID_MEMORY_FAILURE */
7353 #ifdef VIR_DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE
7355 libvirt_virConnectDomainEventMemoryDeviceSizeChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7358 unsigned long long size
,
7361 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7362 PyObject
*pyobj_dom
;
7363 PyObject
*pyobj_ret
= NULL
;
7364 PyObject
*pyobj_conn
;
7368 LIBVIRT_ENSURE_THREAD_STATE
;
7370 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7372 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7375 /* Create a python instance of this virDomainPtr */
7377 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7381 Py_INCREF(pyobj_cbData
);
7383 /* Call the Callback Dispatcher */
7384 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7385 (char*)"_dispatchDomainEventMemoryDeviceSizeChangeCallback",
7387 pyobj_dom
, alias
, size
,
7390 Py_DECREF(pyobj_cbData
);
7391 Py_DECREF(pyobj_dom
);
7395 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7398 Py_DECREF(pyobj_ret
);
7402 LIBVIRT_RELEASE_THREAD_STATE
;
7405 #endif /* VIR_DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE */
7409 libvirt_virConnectDomainEventRegisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
7412 PyObject
*py_retval
; /* return value */
7413 PyObject
*pyobj_conn
; /* virConnectPtr */
7414 PyObject
*pyobj_dom
;
7415 PyObject
*pyobj_cbData
; /* hash of callback data */
7419 virConnectDomainEventGenericCallback cb
= NULL
;
7422 if (!PyArg_ParseTuple(args
,
7423 (char *) "OOiO:virConnectDomainEventRegisterAny",
7424 &pyobj_conn
, &pyobj_dom
, &eventID
, &pyobj_cbData
))
7427 DEBUG("libvirt_virConnectDomainEventRegister(%p %p %d %p) called\n",
7428 pyobj_conn
, pyobj_dom
, eventID
, pyobj_cbData
);
7429 conn
= PyvirConnect_Get(pyobj_conn
);
7430 if (pyobj_dom
== Py_None
)
7433 dom
= PyvirDomain_Get(pyobj_dom
);
7435 switch ((virDomainEventID
) eventID
) {
7436 case VIR_DOMAIN_EVENT_ID_LIFECYCLE
:
7437 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventLifecycleCallback
);
7439 case VIR_DOMAIN_EVENT_ID_REBOOT
:
7440 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventGenericCallback
);
7442 case VIR_DOMAIN_EVENT_ID_RTC_CHANGE
:
7443 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventRTCChangeCallback
);
7445 case VIR_DOMAIN_EVENT_ID_WATCHDOG
:
7446 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventWatchdogCallback
);
7448 case VIR_DOMAIN_EVENT_ID_IO_ERROR
:
7449 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventIOErrorCallback
);
7451 case VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON
:
7452 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventIOErrorReasonCallback
);
7454 case VIR_DOMAIN_EVENT_ID_GRAPHICS
:
7455 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventGraphicsCallback
);
7457 case VIR_DOMAIN_EVENT_ID_CONTROL_ERROR
:
7458 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventGenericCallback
);
7460 case VIR_DOMAIN_EVENT_ID_BLOCK_JOB
:
7461 #ifdef VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2
7462 case VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2
:
7463 #endif /* VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2 */
7464 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventBlockJobCallback
);
7466 case VIR_DOMAIN_EVENT_ID_DISK_CHANGE
:
7467 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventDiskChangeCallback
);
7469 case VIR_DOMAIN_EVENT_ID_TRAY_CHANGE
:
7470 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventTrayChangeCallback
);
7472 case VIR_DOMAIN_EVENT_ID_PMWAKEUP
:
7473 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventPMWakeupCallback
);
7475 case VIR_DOMAIN_EVENT_ID_PMSUSPEND
:
7476 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventPMSuspendCallback
);
7478 #ifdef VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE
7479 case VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE
:
7480 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventBalloonChangeCallback
);
7482 #endif /* VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE */
7483 #ifdef VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK
7484 case VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK
:
7485 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventPMSuspendDiskCallback
);
7487 #endif /* VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK */
7488 #ifdef VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED
7489 case VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED
:
7490 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventDeviceRemovedCallback
);
7492 #endif /* VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED */
7493 #ifdef VIR_DOMAIN_EVENT_ID_TUNABLE
7494 case VIR_DOMAIN_EVENT_ID_TUNABLE
:
7495 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventTunableCallback
);
7497 #endif /* VIR_DOMAIN_EVENT_ID_TUNABLE */
7498 #ifdef VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE
7499 case VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE
:
7500 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventAgentLifecycleCallback
);
7502 #endif /* VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE */
7503 #ifdef VIR_DOMAIN_EVENT_ID_DEVICE_ADDED
7504 case VIR_DOMAIN_EVENT_ID_DEVICE_ADDED
:
7505 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventDeviceAddedCallback
);
7507 #endif /* VIR_DOMAIN_EVENT_ID_DEVICE_ADDED */
7508 #ifdef VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION
7509 case VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION
:
7510 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventMigrationIterationCallback
);
7512 #endif /* VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION */
7513 #ifdef VIR_DOMAIN_EVENT_ID_JOB_COMPLETED
7514 case VIR_DOMAIN_EVENT_ID_JOB_COMPLETED
:
7515 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventJobCompletedCallback
);
7517 #endif /* VIR_DOMAIN_EVENT_ID_JOB_COMPLETED */
7518 #ifdef VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED
7519 case VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED
:
7520 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventDeviceRemovalFailedCallback
);
7522 #endif /* VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED */
7523 #ifdef VIR_DOMAIN_EVENT_ID_METADATA_CHANGE
7524 case VIR_DOMAIN_EVENT_ID_METADATA_CHANGE
:
7525 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventMetadataChangeCallback
);
7527 #endif /* VIR_DOMAIN_EVENT_ID_METADATA_CHANGE */
7528 #ifdef VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD
7529 case VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD
:
7530 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventBlockThresholdCallback
);
7532 #endif /* VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD */
7533 #ifdef VIR_DOMAIN_EVENT_ID_MEMORY_FAILURE
7534 case VIR_DOMAIN_EVENT_ID_MEMORY_FAILURE
:
7535 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventMemoryFailureCallback
);
7537 #endif /* VIR_DOMAIN_EVENT_ID_MEMORY_FAILURE */
7538 #ifdef VIR_DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE
7539 case VIR_DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE
:
7540 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventMemoryDeviceSizeChangeCallback
);
7542 #endif /* VIR_DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE */
7543 case VIR_DOMAIN_EVENT_ID_LAST
:
7548 return VIR_PY_INT_FAIL
;
7551 Py_INCREF(pyobj_cbData
);
7553 LIBVIRT_BEGIN_ALLOW_THREADS
;
7554 ret
= virConnectDomainEventRegisterAny(conn
, dom
, eventID
,
7556 libvirt_virConnectDomainEventFreeFunc
);
7557 LIBVIRT_END_ALLOW_THREADS
;
7560 Py_DECREF(pyobj_cbData
);
7563 py_retval
= libvirt_intWrap(ret
);
7568 libvirt_virConnectDomainEventDeregisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
7571 PyObject
*pyobj_conn
;
7576 if (!PyArg_ParseTuple(args
, (char *) "Oi:virConnectDomainEventDeregister",
7577 &pyobj_conn
, &callbackID
))
7580 DEBUG("libvirt_virConnectDomainEventDeregister(%p) called\n", pyobj_conn
);
7582 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
7584 LIBVIRT_BEGIN_ALLOW_THREADS
;
7585 ret
= virConnectDomainEventDeregisterAny(conn
, callbackID
);
7586 LIBVIRT_END_ALLOW_THREADS
;
7588 return libvirt_intWrap(ret
);
7591 #if LIBVIR_CHECK_VERSION(1, 2, 1)
7593 libvirt_virConnectNetworkEventFreeFunc(void *opaque
)
7595 PyObject
*pyobj_conn
= (PyObject
*)opaque
;
7596 LIBVIRT_ENSURE_THREAD_STATE
;
7597 Py_DECREF(pyobj_conn
);
7598 LIBVIRT_RELEASE_THREAD_STATE
;
7602 libvirt_virConnectNetworkEventLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7608 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7609 PyObject
*pyobj_net
;
7610 PyObject
*pyobj_ret
= NULL
;
7611 PyObject
*pyobj_conn
;
7615 LIBVIRT_ENSURE_THREAD_STATE
;
7617 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7619 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7622 /* Create a python instance of this virNetworkPtr */
7624 if (!(pyobj_net
= libvirt_virNetworkPtrWrap(net
))) {
7625 virNetworkFree(net
);
7628 Py_INCREF(pyobj_cbData
);
7630 /* Call the Callback Dispatcher */
7631 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7632 (char*)"_dispatchNetworkEventLifecycleCallback",
7639 Py_DECREF(pyobj_cbData
);
7640 Py_DECREF(pyobj_net
);
7644 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7647 Py_DECREF(pyobj_ret
);
7651 LIBVIRT_RELEASE_THREAD_STATE
;
7655 #ifdef VIR_NETWORK_EVENT_ID_METADATA_CHANGE
7657 libvirt_virConnectNetworkEventMetadataChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7663 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7664 PyObject
*pyobj_dom
;
7665 PyObject
*pyobj_ret
= NULL
;
7666 PyObject
*pyobj_conn
;
7670 LIBVIRT_ENSURE_THREAD_STATE
;
7672 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7674 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7677 /* Create a python instance of this virNetworkPtr */
7679 if (!(pyobj_dom
= libvirt_virNetworkPtrWrap(dom
))) {
7680 virNetworkFree(dom
);
7683 Py_INCREF(pyobj_cbData
);
7685 /* Call the Callback Dispatcher */
7686 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7687 (char*)"_dispatchNetworkEventMetadataChangeCallback",
7689 pyobj_dom
, type
, nsuri
, pyobj_cbData
);
7691 Py_DECREF(pyobj_cbData
);
7692 Py_DECREF(pyobj_dom
);
7696 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7699 Py_DECREF(pyobj_ret
);
7703 LIBVIRT_RELEASE_THREAD_STATE
;
7706 #endif /* VIR_NETWORK_EVENT_ID_METADATA_CHANGE */
7709 libvirt_virConnectNetworkEventRegisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
7712 PyObject
*pyobj_conn
; /* virConnectPtr */
7713 PyObject
*pyobj_net
;
7714 PyObject
*pyobj_cbData
; /* hash of callback data */
7718 virConnectNetworkEventGenericCallback cb
= NULL
;
7721 if (!PyArg_ParseTuple(args
,
7722 (char *) "OOiO:virConnectNetworkEventRegisterAny",
7723 &pyobj_conn
, &pyobj_net
, &eventID
, &pyobj_cbData
))
7726 DEBUG("libvirt_virConnectNetworkEventRegister(%p %p %d %p) called\n",
7727 pyobj_conn
, pyobj_net
, eventID
, pyobj_cbData
);
7728 conn
= PyvirConnect_Get(pyobj_conn
);
7729 if (pyobj_net
== Py_None
)
7732 net
= PyvirNetwork_Get(pyobj_net
);
7734 switch ((virNetworkEventID
) eventID
) {
7735 case VIR_NETWORK_EVENT_ID_LIFECYCLE
:
7736 cb
= VIR_NETWORK_EVENT_CALLBACK(libvirt_virConnectNetworkEventLifecycleCallback
);
7739 #ifdef VIR_NETWORK_EVENT_ID_METADATA_CHANGE
7740 case VIR_NETWORK_EVENT_ID_METADATA_CHANGE
:
7741 cb
= VIR_NETWORK_EVENT_CALLBACK(libvirt_virConnectNetworkEventMetadataChangeCallback
);
7743 #endif /* VIR_NETWORK_EVENT_ID_METADATA_CHANGE */
7745 case VIR_NETWORK_EVENT_ID_LAST
:
7750 return VIR_PY_INT_FAIL
;
7753 Py_INCREF(pyobj_cbData
);
7755 LIBVIRT_BEGIN_ALLOW_THREADS
;
7756 ret
= virConnectNetworkEventRegisterAny(conn
, net
, eventID
,
7758 libvirt_virConnectNetworkEventFreeFunc
);
7759 LIBVIRT_END_ALLOW_THREADS
;
7762 Py_DECREF(pyobj_cbData
);
7765 return libvirt_intWrap(ret
);
7769 libvirt_virConnectNetworkEventDeregisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
7772 PyObject
*pyobj_conn
;
7777 if (!PyArg_ParseTuple(args
, (char *) "Oi:virConnectNetworkEventDeregister",
7778 &pyobj_conn
, &callbackID
))
7781 DEBUG("libvirt_virConnectNetworkEventDeregister(%p) called\n", pyobj_conn
);
7783 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
7785 LIBVIRT_BEGIN_ALLOW_THREADS
;
7786 ret
= virConnectNetworkEventDeregisterAny(conn
, callbackID
);
7787 LIBVIRT_END_ALLOW_THREADS
;
7789 return libvirt_intWrap(ret
);
7791 #endif /* LIBVIR_CHECK_VERSION(1, 2, 1)*/
7793 #if LIBVIR_CHECK_VERSION(0, 10, 0)
7795 libvirt_virConnectCloseCallbackDispatch(virConnectPtr conn ATTRIBUTE_UNUSED
,
7799 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7800 PyObject
*pyobj_ret
;
7801 PyObject
*pyobj_conn
;
7804 LIBVIRT_ENSURE_THREAD_STATE
;
7806 Py_INCREF(pyobj_cbData
);
7808 dictKey
= libvirt_constcharPtrWrap("conn");
7809 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7812 /* Call the Callback Dispatcher */
7813 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7814 (char*)"_dispatchCloseCallback",
7819 Py_DECREF(pyobj_cbData
);
7822 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7825 Py_DECREF(pyobj_ret
);
7828 LIBVIRT_RELEASE_THREAD_STATE
;
7832 libvirt_virConnectRegisterCloseCallback(PyObject
*self ATTRIBUTE_UNUSED
,
7835 PyObject
*pyobj_conn
; /* virConnectPtr */
7836 PyObject
*pyobj_cbData
; /* hash of callback data */
7840 if (!PyArg_ParseTuple(args
, (char *) "OO:virConnectRegisterCloseCallback",
7841 &pyobj_conn
, &pyobj_cbData
))
7844 DEBUG("libvirt_virConnectRegisterCloseCallback(%p %p) called\n",
7845 pyobj_conn
, pyobj_cbData
);
7846 conn
= PyvirConnect_Get(pyobj_conn
);
7848 Py_INCREF(pyobj_cbData
);
7850 LIBVIRT_BEGIN_ALLOW_THREADS
;
7851 ret
= virConnectRegisterCloseCallback(conn
,
7852 libvirt_virConnectCloseCallbackDispatch
,
7854 libvirt_virConnectDomainEventFreeFunc
);
7855 LIBVIRT_END_ALLOW_THREADS
;
7858 Py_DECREF(pyobj_cbData
);
7861 return libvirt_intWrap(ret
);
7865 libvirt_virConnectUnregisterCloseCallback(PyObject
* self ATTRIBUTE_UNUSED
,
7868 PyObject
*pyobj_conn
;
7872 if (!PyArg_ParseTuple(args
, (char *) "O:virConnectUnregisterCloseCallback",
7876 DEBUG("libvirt_virConnectDomainEventUnregister(%p) called\n",
7879 conn
= PyvirConnect_Get(pyobj_conn
);
7881 LIBVIRT_BEGIN_ALLOW_THREADS
;
7882 ret
= virConnectUnregisterCloseCallback(conn
,
7883 libvirt_virConnectCloseCallbackDispatch
);
7884 LIBVIRT_END_ALLOW_THREADS
;
7886 return libvirt_intWrap(ret
);
7888 #endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
7891 libvirt_virStreamEventFreeFunc(void *opaque
)
7893 PyObject
*pyobj_stream
= (PyObject
*)opaque
;
7894 LIBVIRT_ENSURE_THREAD_STATE
;
7895 Py_DECREF(pyobj_stream
);
7896 LIBVIRT_RELEASE_THREAD_STATE
;
7900 libvirt_virStreamEventCallback(virStreamPtr st ATTRIBUTE_UNUSED
,
7904 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7905 PyObject
*pyobj_stream
;
7906 PyObject
*pyobj_ret
;
7909 LIBVIRT_ENSURE_THREAD_STATE
;
7911 Py_INCREF(pyobj_cbData
);
7912 dictKey
= libvirt_constcharPtrWrap("stream");
7913 pyobj_stream
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7916 /* Call the pure python dispatcher */
7917 pyobj_ret
= PyObject_CallMethod(pyobj_stream
,
7918 (char *)"_dispatchStreamEventCallback",
7920 events
, pyobj_cbData
);
7922 Py_DECREF(pyobj_cbData
);
7925 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7928 Py_DECREF(pyobj_ret
);
7931 LIBVIRT_RELEASE_THREAD_STATE
;
7935 libvirt_virStreamEventAddCallback(PyObject
*self ATTRIBUTE_UNUSED
,
7938 PyObject
*pyobj_stream
;
7939 PyObject
*pyobj_cbData
;
7940 virStreamPtr stream
;
7941 virStreamEventCallback cb
= libvirt_virStreamEventCallback
;
7945 if (!PyArg_ParseTuple(args
, (char *) "OiO:virStreamEventAddCallback",
7946 &pyobj_stream
, &events
, &pyobj_cbData
))
7949 DEBUG("libvirt_virStreamEventAddCallback(%p, %d, %p) called\n",
7950 pyobj_stream
, events
, pyobj_cbData
);
7951 stream
= PyvirStream_Get(pyobj_stream
);
7953 Py_INCREF(pyobj_cbData
);
7955 LIBVIRT_BEGIN_ALLOW_THREADS
;
7956 ret
= virStreamEventAddCallback(stream
, events
, cb
, pyobj_cbData
,
7957 libvirt_virStreamEventFreeFunc
);
7958 LIBVIRT_END_ALLOW_THREADS
;
7961 Py_DECREF(pyobj_cbData
);
7964 return libvirt_intWrap(ret
);
7968 libvirt_virStreamRecv(PyObject
*self ATTRIBUTE_UNUSED
,
7971 PyObject
*pyobj_stream
;
7973 virStreamPtr stream
;
7978 if (!PyArg_ParseTuple(args
, (char *) "Oi:virStreamRecv",
7979 &pyobj_stream
, &nbytes
)) {
7982 stream
= PyvirStream_Get(pyobj_stream
);
7984 if (VIR_ALLOC_N(buf
, nbytes
+1 > 0 ? nbytes
+1 : 1) < 0)
7985 return PyErr_NoMemory();
7987 LIBVIRT_BEGIN_ALLOW_THREADS
;
7988 ret
= virStreamRecv(stream
, buf
, nbytes
);
7989 LIBVIRT_END_ALLOW_THREADS
;
7991 buf
[ret
> -1 ? ret
: 0] = '\0';
7992 DEBUG("StreamRecv ret=%d strlen=%zu\n", ret
, strlen(buf
));
7996 return libvirt_intWrap(ret
);
8002 rv
= libvirt_charPtrSizeWrap((char *) buf
, (Py_ssize_t
) ret
);
8008 libvirt_virStreamSend(PyObject
*self ATTRIBUTE_UNUSED
,
8011 PyObject
*pyobj_stream
;
8012 PyObject
*pyobj_data
;
8013 virStreamPtr stream
;
8018 if (!PyArg_ParseTuple(args
, (char *) "OO:virStreamSend",
8019 &pyobj_stream
, &pyobj_data
))
8022 stream
= PyvirStream_Get(pyobj_stream
);
8023 libvirt_charPtrSizeUnwrap(pyobj_data
, &data
, &datalen
);
8025 LIBVIRT_BEGIN_ALLOW_THREADS
;
8026 ret
= virStreamSend(stream
, data
, datalen
);
8027 LIBVIRT_END_ALLOW_THREADS
;
8029 DEBUG("StreamSend ret=%d\n", ret
);
8031 return libvirt_intWrap(ret
);
8035 libvirt_virDomainSendKey(PyObject
*self ATTRIBUTE_UNUSED
,
8038 virDomainPtr domain
;
8039 PyObject
*pyobj_domain
;
8040 PyObject
*pyobj_list
;
8046 unsigned int keycodes
[VIR_DOMAIN_SEND_KEY_MAX_KEYS
];
8049 if (!PyArg_ParseTuple(args
, (char *)"OiiOII:virDomainSendKey",
8050 &pyobj_domain
, &codeset
, &holdtime
, &pyobj_list
,
8051 &nkeycodes
, &flags
))
8054 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8056 if (!PyList_Check(pyobj_list
)) {
8057 return VIR_PY_INT_FAIL
;
8060 if (nkeycodes
!= PyList_Size(pyobj_list
) ||
8061 nkeycodes
> VIR_DOMAIN_SEND_KEY_MAX_KEYS
) {
8062 return VIR_PY_INT_FAIL
;
8065 for (i
= 0; i
< nkeycodes
; i
++) {
8066 if (libvirt_uintUnwrap(PyList_GetItem(pyobj_list
, i
), &keycodes
[i
]) < 0)
8070 LIBVIRT_BEGIN_ALLOW_THREADS
;
8071 ret
= virDomainSendKey(domain
, codeset
, holdtime
, keycodes
, nkeycodes
, flags
);
8072 LIBVIRT_END_ALLOW_THREADS
;
8074 DEBUG("virDomainSendKey ret=%d\n", ret
);
8076 return libvirt_intWrap(ret
);
8079 #if LIBVIR_CHECK_VERSION(1, 0, 3)
8081 libvirt_virDomainMigrateGetCompressionCache(PyObject
*self ATTRIBUTE_UNUSED
,
8084 PyObject
*pyobj_domain
;
8085 virDomainPtr domain
;
8087 unsigned long long cacheSize
;
8090 if (!PyArg_ParseTuple(args
,
8091 (char *) "OI:virDomainMigrateGetCompressionCache",
8092 &pyobj_domain
, &flags
))
8095 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8097 LIBVIRT_BEGIN_ALLOW_THREADS
;
8098 rc
= virDomainMigrateGetCompressionCache(domain
, &cacheSize
, flags
);
8099 LIBVIRT_END_ALLOW_THREADS
;
8104 return libvirt_ulonglongWrap(cacheSize
);
8106 #endif /* LIBVIR_CHECK_VERSION(1, 0, 3) */
8109 libvirt_virDomainMigrateGetMaxSpeed(PyObject
*self ATTRIBUTE_UNUSED
,
8113 unsigned long bandwidth
;
8114 virDomainPtr domain
;
8115 PyObject
*pyobj_domain
;
8116 unsigned int flags
= 0;
8118 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainMigrateGetMaxSpeed",
8119 &pyobj_domain
, &flags
))
8122 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8124 LIBVIRT_BEGIN_ALLOW_THREADS
;
8125 c_retval
= virDomainMigrateGetMaxSpeed(domain
, &bandwidth
, flags
);
8126 LIBVIRT_END_ALLOW_THREADS
;
8129 return VIR_PY_INT_FAIL
;
8131 return libvirt_ulongWrap(bandwidth
);
8134 #if LIBVIR_CHECK_VERSION(3, 7, 0)
8136 libvirt_virDomainMigrateGetMaxDowntime(PyObject
*self ATTRIBUTE_UNUSED
,
8139 PyObject
*pyobj_domain
;
8140 virDomainPtr domain
;
8142 unsigned long long downtime
;
8145 if (!PyArg_ParseTuple(args
,
8146 (char *) "OI:virDomainMigrateGetMaxDowntime",
8147 &pyobj_domain
, &flags
))
8150 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8152 LIBVIRT_BEGIN_ALLOW_THREADS
;
8153 rc
= virDomainMigrateGetMaxDowntime(domain
, &downtime
, flags
);
8154 LIBVIRT_END_ALLOW_THREADS
;
8159 return libvirt_ulonglongWrap(downtime
);
8161 #endif /* LIBVIR_CHECK_VERSION(3, 7, 0) */
8163 #if LIBVIR_CHECK_VERSION(1, 1, 0)
8164 static virPyTypedParamsHint virPyDomainMigrate3Params
[] = {
8165 # ifdef VIR_MIGRATE_PARAM_URI
8166 { VIR_MIGRATE_PARAM_URI
, VIR_TYPED_PARAM_STRING
},
8168 # ifdef VIR_MIGRATE_PARAM_DEST_NAME
8169 { VIR_MIGRATE_PARAM_DEST_NAME
, VIR_TYPED_PARAM_STRING
},
8171 # ifdef VIR_MIGRATE_PARAM_DEST_XML
8172 { VIR_MIGRATE_PARAM_DEST_XML
, VIR_TYPED_PARAM_STRING
},
8174 # ifdef VIR_MIGRATE_PARAM_PERSIST_XML
8175 { VIR_MIGRATE_PARAM_PERSIST_XML
, VIR_TYPED_PARAM_STRING
},
8177 # ifdef VIR_MIGRATE_PARAM_BANDWIDTH
8178 { VIR_MIGRATE_PARAM_BANDWIDTH
, VIR_TYPED_PARAM_ULLONG
},
8180 # ifdef VIR_MIGRATE_PARAM_GRAPHICS_URI
8181 { VIR_MIGRATE_PARAM_GRAPHICS_URI
, VIR_TYPED_PARAM_STRING
},
8183 # ifdef VIR_MIGRATE_PARAM_LISTEN_ADDRESS
8184 { VIR_MIGRATE_PARAM_LISTEN_ADDRESS
, VIR_TYPED_PARAM_STRING
},
8186 # ifdef VIR_MIGRATE_PARAM_MIGRATE_DISKS
8187 { VIR_MIGRATE_PARAM_MIGRATE_DISKS
, VIR_TYPED_PARAM_STRING
},
8189 # ifdef VIR_MIGRATE_PARAM_DISKS_PORT
8190 { VIR_MIGRATE_PARAM_DISKS_PORT
, VIR_TYPED_PARAM_INT
},
8192 # ifdef VIR_MIGRATE_PARAM_COMPRESSION
8193 { VIR_MIGRATE_PARAM_COMPRESSION
, VIR_TYPED_PARAM_STRING
},
8195 # ifdef VIR_MIGRATE_PARAM_COMPRESSION_MT_LEVEL
8196 { VIR_MIGRATE_PARAM_COMPRESSION_MT_LEVEL
, VIR_TYPED_PARAM_INT
},
8198 # ifdef VIR_MIGRATE_PARAM_COMPRESSION_MT_THREADS
8199 { VIR_MIGRATE_PARAM_COMPRESSION_MT_THREADS
, VIR_TYPED_PARAM_INT
},
8201 # ifdef VIR_MIGRATE_PARAM_COMPRESSION_MT_DTHREADS
8202 { VIR_MIGRATE_PARAM_COMPRESSION_MT_DTHREADS
, VIR_TYPED_PARAM_INT
},
8204 # ifdef VIR_MIGRATE_PARAM_COMPRESSION_XBZRLE_CACHE
8205 { VIR_MIGRATE_PARAM_COMPRESSION_XBZRLE_CACHE
, VIR_TYPED_PARAM_ULLONG
},
8207 # ifdef VIR_MIGRATE_PARAM_AUTO_CONVERGE_INITIAL
8208 { VIR_MIGRATE_PARAM_AUTO_CONVERGE_INITIAL
, VIR_TYPED_PARAM_INT
},
8210 # ifdef VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT
8211 { VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT
, VIR_TYPED_PARAM_INT
},
8213 # ifdef VIR_MIGRATE_PARAM_BANDWIDTH_POSTCOPY
8214 { VIR_MIGRATE_PARAM_BANDWIDTH_POSTCOPY
, VIR_TYPED_PARAM_ULLONG
},
8216 # ifdef VIR_MIGRATE_PARAM_PARALLEL_CONNECTIONS
8217 { VIR_MIGRATE_PARAM_PARALLEL_CONNECTIONS
, VIR_TYPED_PARAM_INT
},
8219 # ifdef VIR_MIGRATE_PARAM_DISKS_URI
8220 { VIR_MIGRATE_PARAM_DISKS_URI
, VIR_TYPED_PARAM_STRING
},
8222 #ifdef VIR_MIGRATE_PARAM_TLS_DESTINATION
8223 { VIR_MIGRATE_PARAM_TLS_DESTINATION
, VIR_TYPED_PARAM_STRING
},
8225 #ifdef VIR_MIGRATE_PARAM_COMPRESSION_ZLIB_LEVEL
8226 { VIR_MIGRATE_PARAM_COMPRESSION_ZLIB_LEVEL
, VIR_TYPED_PARAM_INT
},
8228 #ifdef VIR_MIGRATE_PARAM_COMPRESSION_ZSTD_LEVEL
8229 { VIR_MIGRATE_PARAM_COMPRESSION_ZSTD_LEVEL
, VIR_TYPED_PARAM_INT
},
8235 libvirt_virDomainMigrate3(PyObject
*self ATTRIBUTE_UNUSED
,
8238 PyObject
*pyobj_domain
;
8239 virDomainPtr domain
;
8240 PyObject
*pyobj_dconn
;
8241 virConnectPtr dconn
;
8244 virTypedParameterPtr params
;
8246 virDomainPtr ddom
= NULL
;
8248 if (!PyArg_ParseTuple(args
, (char *) "OOOI:virDomainMigrate3",
8249 &pyobj_domain
, &pyobj_dconn
, &dict
, &flags
))
8252 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8253 dconn
= (virConnectPtr
) PyvirConnect_Get(pyobj_dconn
);
8255 if (!PyDict_Check(dict
)) {
8256 PyErr_Format(PyExc_TypeError
, "migration params must be a dictionary");
8260 if (virPyDictToTypedParams(dict
, ¶ms
, &nparams
,
8261 virPyDomainMigrate3Params
,
8262 VIR_N_ELEMENTS(virPyDomainMigrate3Params
)) < 0) {
8266 LIBVIRT_BEGIN_ALLOW_THREADS
;
8267 ddom
= virDomainMigrate3(domain
, dconn
, params
, nparams
, flags
);
8268 LIBVIRT_END_ALLOW_THREADS
;
8270 virTypedParamsFree(params
, nparams
);
8271 return libvirt_virDomainPtrWrap(ddom
);
8275 libvirt_virDomainMigrateToURI3(PyObject
*self ATTRIBUTE_UNUSED
,
8278 PyObject
*pyobj_domain
;
8279 virDomainPtr domain
;
8283 virTypedParameterPtr params
;
8287 if (!PyArg_ParseTuple(args
, (char *) "OzOI:virDomainMigrate3",
8288 &pyobj_domain
, &dconnuri
, &dict
, &flags
))
8291 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8293 if (!PyDict_Check(dict
)) {
8294 PyErr_Format(PyExc_TypeError
, "migration params must be a dictionary");
8298 if (virPyDictToTypedParams(dict
, ¶ms
, &nparams
,
8299 virPyDomainMigrate3Params
,
8300 VIR_N_ELEMENTS(virPyDomainMigrate3Params
)) < 0) {
8304 LIBVIRT_BEGIN_ALLOW_THREADS
;
8305 ret
= virDomainMigrateToURI3(domain
, dconnuri
, params
, nparams
, flags
);
8306 LIBVIRT_END_ALLOW_THREADS
;
8308 virTypedParamsFree(params
, nparams
);
8309 return libvirt_intWrap(ret
);
8311 #endif /* LIBVIR_CHECK_VERSION(1, 1, 0) */
8314 libvirt_virDomainBlockPeek(PyObject
*self ATTRIBUTE_UNUSED
,
8317 PyObject
*py_retval
= NULL
;
8319 virDomainPtr domain
;
8320 PyObject
*pyobj_domain
;
8322 unsigned long long offset
;
8327 if (!PyArg_ParseTuple(args
, (char *)"OzKkI:virDomainBlockPeek",
8328 &pyobj_domain
, &disk
, &offset
, &size
, &flags
))
8331 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8333 if (VIR_ALLOC_N(buf
, size
) < 0)
8334 return PyErr_NoMemory();
8336 LIBVIRT_BEGIN_ALLOW_THREADS
;
8337 c_retval
= virDomainBlockPeek(domain
, disk
, offset
, size
, buf
, flags
);
8338 LIBVIRT_END_ALLOW_THREADS
;
8341 py_retval
= VIR_PY_NONE
;
8345 py_retval
= libvirt_charPtrSizeWrap(buf
, size
);
8353 libvirt_virDomainMemoryPeek(PyObject
*self ATTRIBUTE_UNUSED
,
8356 PyObject
*py_retval
= NULL
;
8358 virDomainPtr domain
;
8359 PyObject
*pyobj_domain
;
8360 unsigned long long start
;
8365 if (!PyArg_ParseTuple(args
, (char *)"OKkI:virDomainMemoryPeek",
8366 &pyobj_domain
, &start
, &size
, &flags
))
8369 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8371 if (VIR_ALLOC_N(buf
, size
) < 0)
8372 return PyErr_NoMemory();
8374 LIBVIRT_BEGIN_ALLOW_THREADS
;
8375 c_retval
= virDomainMemoryPeek(domain
, start
, size
, buf
, flags
);
8376 LIBVIRT_END_ALLOW_THREADS
;
8379 py_retval
= VIR_PY_NONE
;
8383 py_retval
= libvirt_charPtrSizeWrap(buf
, size
);
8390 #if LIBVIR_CHECK_VERSION(0, 10, 2)
8392 libvirt_virNodeSetMemoryParameters(PyObject
*self ATTRIBUTE_UNUSED
,
8396 PyObject
*pyobj_conn
, *info
;
8397 PyObject
*ret
= NULL
;
8400 Py_ssize_t size
= 0;
8402 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
8404 if (!PyArg_ParseTuple(args
,
8405 (char *)"OOI:virNodeSetMemoryParameters",
8406 &pyobj_conn
, &info
, &flags
))
8408 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
8410 if ((size
= PyDict_Size(info
)) < 0)
8414 PyErr_Format(PyExc_LookupError
,
8415 "Need non-empty dictionary to set attributes");
8419 LIBVIRT_BEGIN_ALLOW_THREADS
;
8420 i_retval
= virNodeGetMemoryParameters(conn
, NULL
, &nparams
, flags
);
8421 LIBVIRT_END_ALLOW_THREADS
;
8424 return VIR_PY_INT_FAIL
;
8427 PyErr_Format(PyExc_LookupError
,
8428 "no settable attributes");
8432 if (VIR_ALLOC_N(params
, nparams
) < 0)
8433 return PyErr_NoMemory();
8435 LIBVIRT_BEGIN_ALLOW_THREADS
;
8436 i_retval
= virNodeGetMemoryParameters(conn
, params
, &nparams
, flags
);
8437 LIBVIRT_END_ALLOW_THREADS
;
8440 ret
= VIR_PY_INT_FAIL
;
8444 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
8448 LIBVIRT_BEGIN_ALLOW_THREADS
;
8449 i_retval
= virNodeSetMemoryParameters(conn
, new_params
, size
, flags
);
8450 LIBVIRT_END_ALLOW_THREADS
;
8453 ret
= VIR_PY_INT_FAIL
;
8457 ret
= VIR_PY_INT_SUCCESS
;
8460 virTypedParamsFree(params
, nparams
);
8461 virTypedParamsFree(new_params
, size
);
8466 libvirt_virNodeGetMemoryParameters(PyObject
*self ATTRIBUTE_UNUSED
,
8470 PyObject
*pyobj_conn
;
8471 PyObject
*ret
= NULL
;
8475 virTypedParameterPtr params
;
8477 if (!PyArg_ParseTuple(args
, (char *)"OI:virNodeGetMemoryParameters",
8478 &pyobj_conn
, &flags
))
8480 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
8482 LIBVIRT_BEGIN_ALLOW_THREADS
;
8483 i_retval
= virNodeGetMemoryParameters(conn
, NULL
, &nparams
, flags
);
8484 LIBVIRT_END_ALLOW_THREADS
;
8490 return PyDict_New();
8492 if (VIR_ALLOC_N(params
, nparams
) < 0)
8493 return PyErr_NoMemory();
8495 LIBVIRT_BEGIN_ALLOW_THREADS
;
8496 i_retval
= virNodeGetMemoryParameters(conn
, params
, &nparams
, flags
);
8497 LIBVIRT_END_ALLOW_THREADS
;
8504 ret
= getPyVirTypedParameter(params
, nparams
);
8507 virTypedParamsFree(params
, nparams
);
8510 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
8512 #if LIBVIR_CHECK_VERSION(1, 0, 0)
8514 libvirt_virNodeGetCPUMap(PyObject
*self ATTRIBUTE_UNUSED
,
8518 PyObject
*pyobj_conn
;
8519 PyObject
*ret
= NULL
;
8520 PyObject
*pycpumap
= NULL
;
8522 unsigned char *cpumap
= NULL
;
8523 unsigned int online
= 0;
8527 if (!PyArg_ParseTuple(args
, (char *)"OI:virNodeGetCPUMap",
8528 &pyobj_conn
, &flags
))
8530 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
8532 LIBVIRT_BEGIN_ALLOW_THREADS
;
8533 i_retval
= virNodeGetCPUMap(conn
, &cpumap
, &online
, flags
);
8534 LIBVIRT_END_ALLOW_THREADS
;
8539 if ((ret
= PyTuple_New(3)) == NULL
)
8542 /* 0: number of CPUs */
8543 VIR_PY_TUPLE_SET_GOTO(ret
, 0, libvirt_intWrap(i_retval
), error
);
8546 if ((pycpumap
= PyList_New(i_retval
)) == NULL
)
8549 VIR_PY_TUPLE_SET_GOTO(ret
, 1, pycpumap
, error
);
8551 for (i
= 0; i
< i_retval
; i
++)
8552 VIR_PY_LIST_SET_GOTO(pycpumap
, i
,
8553 PyBool_FromLong(VIR_CPU_USED(cpumap
, i
)), error
);
8555 /* 2: number of online CPUs */
8556 VIR_PY_TUPLE_SET_GOTO(ret
, 2, libvirt_uintWrap(online
), error
);
8566 #endif /* LIBVIR_CHECK_VERSION(1, 0, 0) */
8569 #if LIBVIR_CHECK_VERSION(1, 1, 1)
8571 libvirt_virDomainCreateWithFiles(PyObject
*self ATTRIBUTE_UNUSED
,
8574 PyObject
*py_retval
= NULL
;
8576 virDomainPtr domain
;
8577 PyObject
*pyobj_domain
;
8578 PyObject
*pyobj_files
;
8580 unsigned int nfiles
;
8584 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainCreateWithFiles",
8585 &pyobj_domain
, &pyobj_files
, &flags
))
8587 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8589 nfiles
= PyList_Size(pyobj_files
);
8591 if (VIR_ALLOC_N(files
, nfiles
) < 0)
8592 return PyErr_NoMemory();
8594 for (i
= 0; i
< nfiles
; i
++) {
8598 pyfd
= PyList_GetItem(pyobj_files
, i
);
8600 if (libvirt_intUnwrap(pyfd
, &fd
) < 0)
8606 LIBVIRT_BEGIN_ALLOW_THREADS
;
8607 c_retval
= virDomainCreateWithFiles(domain
, nfiles
, files
, flags
);
8608 LIBVIRT_END_ALLOW_THREADS
;
8610 py_retval
= libvirt_intWrap(c_retval
);
8619 libvirt_virDomainCreateXMLWithFiles(PyObject
*self ATTRIBUTE_UNUSED
,
8622 PyObject
*py_retval
= NULL
;
8623 virDomainPtr c_retval
;
8625 PyObject
*pyobj_conn
;
8627 PyObject
*pyobj_files
;
8629 unsigned int nfiles
;
8633 if (!PyArg_ParseTuple(args
, (char *)"OzOI:virDomainCreateXMLWithFiles",
8634 &pyobj_conn
, &xmlDesc
, &pyobj_files
, &flags
))
8636 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
8638 nfiles
= PyList_Size(pyobj_files
);
8640 if (VIR_ALLOC_N(files
, nfiles
) < 0)
8641 return PyErr_NoMemory();
8643 for (i
= 0; i
< nfiles
; i
++) {
8647 pyfd
= PyList_GetItem(pyobj_files
, i
);
8649 if (libvirt_intUnwrap(pyfd
, &fd
) < 0)
8655 LIBVIRT_BEGIN_ALLOW_THREADS
;
8656 c_retval
= virDomainCreateXMLWithFiles(conn
, xmlDesc
, nfiles
, files
, flags
);
8657 LIBVIRT_END_ALLOW_THREADS
;
8659 py_retval
= libvirt_virDomainPtrWrap((virDomainPtr
) c_retval
);
8665 #endif /* LIBVIR_CHECK_VERSION(1, 1, 1) */
8668 #if LIBVIR_CHECK_VERSION(1, 2, 5)
8670 libvirt_virDomainFSFreeze(PyObject
*self ATTRIBUTE_UNUSED
,
8673 PyObject
*py_retval
= NULL
;
8675 virDomainPtr domain
;
8676 PyObject
*pyobj_domain
;
8677 PyObject
*pyobj_list
;
8679 unsigned int nmountpoints
= 0;
8680 char **mountpoints
= NULL
;
8684 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainFSFreeze",
8685 &pyobj_domain
, &pyobj_list
, &flags
))
8687 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8689 if (PyList_Check(pyobj_list
)) {
8690 nmountpoints
= PyList_Size(pyobj_list
);
8692 if (VIR_ALLOC_N(mountpoints
, nmountpoints
) < 0)
8693 return PyErr_NoMemory();
8695 for (i
= 0; i
< nmountpoints
; i
++) {
8696 if (libvirt_charPtrUnwrap(PyList_GetItem(pyobj_list
, i
),
8702 LIBVIRT_BEGIN_ALLOW_THREADS
;
8703 c_retval
= virDomainFSFreeze(domain
, (const char **) mountpoints
,
8704 nmountpoints
, flags
);
8705 LIBVIRT_END_ALLOW_THREADS
;
8707 py_retval
= libvirt_intWrap(c_retval
);
8710 for (j
= 0 ; j
< i
; j
++)
8711 VIR_FREE(mountpoints
[j
]);
8712 VIR_FREE(mountpoints
);
8718 libvirt_virDomainFSThaw(PyObject
*self ATTRIBUTE_UNUSED
,
8721 PyObject
*py_retval
= NULL
;
8723 virDomainPtr domain
;
8724 PyObject
*pyobj_domain
;
8725 PyObject
*pyobj_list
;
8727 unsigned int nmountpoints
= 0;
8728 char **mountpoints
= NULL
;
8732 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainFSThaw",
8733 &pyobj_domain
, &pyobj_list
, &flags
))
8735 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8737 if (PyList_Check(pyobj_list
)) {
8738 nmountpoints
= PyList_Size(pyobj_list
);
8740 if (VIR_ALLOC_N(mountpoints
, nmountpoints
) < 0)
8741 return PyErr_NoMemory();
8743 for (i
= 0; i
< nmountpoints
; i
++) {
8744 if (libvirt_charPtrUnwrap(PyList_GetItem(pyobj_list
, i
),
8750 LIBVIRT_BEGIN_ALLOW_THREADS
;
8751 c_retval
= virDomainFSThaw(domain
, (const char **) mountpoints
,
8752 nmountpoints
, flags
);
8753 LIBVIRT_END_ALLOW_THREADS
;
8755 py_retval
= libvirt_intWrap(c_retval
);
8758 for (j
= 0 ; j
< i
; j
++)
8759 VIR_FREE(mountpoints
[j
]);
8760 VIR_FREE(mountpoints
);
8765 libvirt_virDomainGetTime(PyObject
*self ATTRIBUTE_UNUSED
,
8768 PyObject
*py_retval
= NULL
;
8769 PyObject
*dict
= NULL
;
8770 PyObject
*pyobj_domain
;
8771 virDomainPtr domain
;
8773 unsigned int nseconds
;
8777 if (!PyArg_ParseTuple(args
, (char*)"OI:virDomainGetTime",
8778 &pyobj_domain
, &flags
))
8780 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8782 if (!(dict
= PyDict_New()))
8785 LIBVIRT_BEGIN_ALLOW_THREADS
;
8786 c_retval
= virDomainGetTime(domain
, &seconds
, &nseconds
, flags
);
8787 LIBVIRT_END_ALLOW_THREADS
;
8790 py_retval
= VIR_PY_NONE
;
8794 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("seconds"),
8795 libvirt_longlongWrap(seconds
), cleanup
);
8796 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("nseconds"),
8797 libvirt_longlongWrap(nseconds
), cleanup
);
8808 libvirt_virDomainSetTime(PyObject
*self ATTRIBUTE_UNUSED
,
8811 PyObject
*pyobj_domain
;
8812 PyObject
*pyobj_seconds
;
8813 PyObject
*pyobj_nseconds
;
8815 virDomainPtr domain
;
8816 long long seconds
= 0;
8817 unsigned int nseconds
= 0;
8819 ssize_t py_dict_size
= 0;
8822 if (!PyArg_ParseTuple(args
, (char*)"OOI:virDomainSetTime",
8823 &pyobj_domain
, &py_dict
, &flags
))
8825 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8827 if (PyDict_Check(py_dict
)) {
8828 py_dict_size
= PyDict_Size(py_dict
);
8829 if ((pyobj_seconds
= PyDict_GetItemString(py_dict
, "seconds"))) {
8830 if (libvirt_longlongUnwrap(pyobj_seconds
, &seconds
) < 0)
8833 PyErr_Format(PyExc_LookupError
, "Dictionary must contains 'seconds'");
8837 if ((pyobj_nseconds
= PyDict_GetItemString(py_dict
, "nseconds"))) {
8838 if (libvirt_uintUnwrap(pyobj_nseconds
, &nseconds
) < 0)
8840 } else if (py_dict_size
> 1) {
8841 PyErr_Format(PyExc_LookupError
, "Dictionary contains unknown key");
8844 } else if (py_dict
!= Py_None
|| !flags
) {
8845 PyErr_Format(PyExc_TypeError
, "time must be a dictionary "
8846 "or None with flags set");
8850 LIBVIRT_BEGIN_ALLOW_THREADS
;
8851 c_retval
= virDomainSetTime(domain
, seconds
, nseconds
, flags
);
8852 LIBVIRT_END_ALLOW_THREADS
;
8854 return libvirt_intWrap(c_retval
);
8856 #endif /* LIBVIR_CHECK_VERSION(1, 2, 5) */
8859 #if LIBVIR_CHECK_VERSION(1, 2, 6)
8861 libvirt_virNodeGetFreePages(PyObject
*self ATTRIBUTE_UNUSED
,
8864 PyObject
*py_retval
= NULL
;
8865 PyObject
*pyobj_conn
;
8866 PyObject
*pyobj_pagesize
;
8867 PyObject
*pyobj_counts
= NULL
;
8869 unsigned int *pages
= NULL
;
8871 unsigned int cellCount
;
8873 unsigned long long *counts
= NULL
;
8875 ssize_t pyobj_pagesize_size
, i
, j
;
8877 if (!PyArg_ParseTuple(args
, (char *)"OOiII:virNodeGetFreePages",
8878 &pyobj_conn
, &pyobj_pagesize
, &startCell
,
8879 &cellCount
, &flags
))
8882 if (!PyList_Check(pyobj_pagesize
)) {
8883 PyErr_Format(PyExc_TypeError
, "pagesize must be list");
8887 if (cellCount
== 0) {
8888 PyErr_Format(PyExc_LookupError
, "cellCount must not be zero");
8892 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
8894 pyobj_pagesize_size
= PyList_Size(pyobj_pagesize
);
8895 if (VIR_ALLOC_N(pages
, pyobj_pagesize_size
) < 0 ||
8896 VIR_ALLOC_N(counts
, pyobj_pagesize_size
* cellCount
) < 0) {
8901 if (!(pyobj_counts
= PyDict_New()))
8904 for (i
= 0; i
< pyobj_pagesize_size
; i
++) {
8905 PyObject
*tmp
= PyList_GetItem(pyobj_pagesize
, i
);
8907 if (libvirt_uintUnwrap(tmp
, &pages
[i
]) < 0)
8911 LIBVIRT_BEGIN_ALLOW_THREADS
;
8912 c_retval
= virNodeGetFreePages(conn
,
8913 pyobj_pagesize_size
, pages
,
8914 startCell
, cellCount
,
8916 LIBVIRT_END_ALLOW_THREADS
;
8919 py_retval
= VIR_PY_NONE
;
8923 for (i
= 0; i
< c_retval
;) {
8924 PyObject
*per_node
= NULL
;
8926 if (!(per_node
= PyDict_New()))
8929 VIR_PY_DICT_SET_GOTO(pyobj_counts
,
8930 libvirt_intWrap(startCell
+ i
/pyobj_pagesize_size
),
8933 for (j
= 0; j
< pyobj_pagesize_size
; j
++)
8934 VIR_PY_DICT_SET_GOTO(per_node
, libvirt_intWrap(pages
[j
]),
8935 libvirt_intWrap(counts
[i
+ j
]), cleanup
);
8937 i
+= pyobj_pagesize_size
;
8940 py_retval
= pyobj_counts
;
8941 pyobj_counts
= NULL
;
8943 Py_XDECREF(pyobj_counts
);
8951 libvirt_virNetworkGetDHCPLeases(PyObject
*self ATTRIBUTE_UNUSED
,
8954 PyObject
*py_retval
= NULL
;
8955 PyObject
*py_lease
= NULL
;
8956 virNetworkPtr network
;
8957 PyObject
*pyobj_network
;
8959 virNetworkDHCPLeasePtr
*leases
= NULL
;
8964 if (!PyArg_ParseTuple(args
, (char *) "OzI:virNetworkGetDHCPLeases",
8965 &pyobj_network
, &mac
, &flags
))
8968 network
= (virNetworkPtr
) PyvirNetwork_Get(pyobj_network
);
8970 LIBVIRT_BEGIN_ALLOW_THREADS
;
8971 leases_count
= virNetworkGetDHCPLeases(network
, mac
, &leases
, flags
);
8972 LIBVIRT_END_ALLOW_THREADS
;
8974 if (leases_count
< 0) {
8975 py_retval
= VIR_PY_NONE
;
8979 if (!(py_retval
= PyList_New(leases_count
)))
8982 for (i
= 0; i
< leases_count
; i
++) {
8983 virNetworkDHCPLeasePtr lease
= leases
[i
];
8985 if ((py_lease
= PyDict_New()) == NULL
)
8988 VIR_PY_LIST_SET_GOTO(py_retval
, i
, py_lease
, error
);
8990 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("iface"),
8991 libvirt_charPtrWrap(lease
->iface
), error
);
8992 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("expirytime"),
8993 libvirt_longlongWrap(lease
->expirytime
), error
);
8994 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("type"),
8995 libvirt_intWrap(lease
->type
), error
);
8996 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("mac"),
8997 libvirt_charPtrWrap(lease
->mac
), error
);
8998 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("ipaddr"),
8999 libvirt_charPtrWrap(lease
->ipaddr
), error
);
9000 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("prefix"),
9001 libvirt_uintWrap(lease
->prefix
), error
);
9002 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("hostname"),
9003 libvirt_charPtrWrap(lease
->hostname
), error
);
9004 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("clientid"),
9005 libvirt_charPtrWrap(lease
->clientid
), error
);
9006 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("iaid"),
9007 libvirt_charPtrWrap(lease
->iaid
), error
);
9011 if (leases_count
> 0)
9012 for (i
= 0; i
< leases_count
; i
++)
9013 virNetworkDHCPLeaseFree(leases
[i
]);
9019 Py_CLEAR(py_retval
);
9023 #endif /* LIBVIR_CHECK_VERSION(1, 2, 6) */
9025 #if LIBVIR_CHECK_VERSION(1, 2, 8)
9028 convertDomainStatsRecord(virDomainStatsRecordPtr
*records
,
9031 PyObject
*py_retval
;
9032 PyObject
*py_record
;
9033 PyObject
*py_record_stats
= NULL
;
9034 virDomainPtr dom
= NULL
;
9037 if (!(py_retval
= PyList_New(nrecords
)))
9040 for (i
= 0; i
< nrecords
; i
++) {
9041 if (!(py_record
= PyTuple_New(2)))
9044 VIR_PY_LIST_SET_GOTO(py_retval
, i
, py_record
, error
);
9046 dom
= records
[i
]->dom
;
9048 VIR_PY_TUPLE_SET_GOTO(py_record
, 0,
9049 libvirt_virDomainPtrWrap(dom
),
9053 if (!(py_record_stats
= getPyVirTypedParameter(records
[i
]->params
,
9054 records
[i
]->nparams
)))
9056 VIR_PY_TUPLE_SET_GOTO(py_record
, 1, py_record_stats
, error
);
9065 Py_XDECREF(py_retval
);
9071 libvirt_virConnectGetAllDomainStats(PyObject
*self ATTRIBUTE_UNUSED
,
9074 PyObject
*pyobj_conn
;
9075 PyObject
*py_retval
;
9077 virDomainStatsRecordPtr
*records
;
9082 if (!PyArg_ParseTuple(args
, (char *)"OII:virConnectGetAllDomainStats",
9083 &pyobj_conn
, &stats
, &flags
))
9085 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
9087 LIBVIRT_BEGIN_ALLOW_THREADS
;
9088 nrecords
= virConnectGetAllDomainStats(conn
, stats
, &records
, flags
);
9089 LIBVIRT_END_ALLOW_THREADS
;
9094 py_retval
= convertDomainStatsRecord(records
, nrecords
);
9096 virDomainStatsRecordListFree(records
);
9103 libvirt_virDomainListGetStats(PyObject
*self ATTRIBUTE_UNUSED
,
9106 PyObject
*pyobj_conn
;
9107 PyObject
*py_retval
;
9108 PyObject
*py_domlist
;
9109 virDomainStatsRecordPtr
*records
= NULL
;
9110 virDomainPtr
*doms
= NULL
;
9117 if (!PyArg_ParseTuple(args
, (char *)"OOII:virDomainListGetStats",
9118 &pyobj_conn
, &py_domlist
, &stats
, &flags
))
9121 if (PyList_Check(py_domlist
)) {
9122 ndoms
= PyList_Size(py_domlist
);
9124 if (VIR_ALLOC_N(doms
, ndoms
+ 1) < 0)
9125 return PyErr_NoMemory();
9127 for (i
= 0; i
< ndoms
; i
++)
9128 doms
[i
] = PyvirDomain_Get(PyList_GetItem(py_domlist
, i
));
9131 LIBVIRT_BEGIN_ALLOW_THREADS
;
9132 nrecords
= virDomainListGetStats(doms
, stats
, &records
, flags
);
9133 LIBVIRT_END_ALLOW_THREADS
;
9136 py_retval
= VIR_PY_NONE
;
9140 py_retval
= convertDomainStatsRecord(records
, nrecords
);
9143 virDomainStatsRecordListFree(records
);
9150 static virPyTypedParamsHint virPyDomainBlockCopyParams
[] = {
9151 { VIR_DOMAIN_BLOCK_COPY_BANDWIDTH
, VIR_TYPED_PARAM_ULLONG
},
9152 { VIR_DOMAIN_BLOCK_COPY_GRANULARITY
, VIR_TYPED_PARAM_UINT
},
9153 { VIR_DOMAIN_BLOCK_COPY_BUF_SIZE
, VIR_TYPED_PARAM_ULLONG
},
9158 libvirt_virDomainBlockCopy(PyObject
*self ATTRIBUTE_UNUSED
,
9161 PyObject
*pyobj_dom
= NULL
;
9162 PyObject
*pyobj_dict
= NULL
;
9166 char *destxml
= NULL
;
9167 virTypedParameterPtr params
= NULL
;
9169 unsigned int flags
= 0;
9172 if (!PyArg_ParseTuple(args
, (char *) "Ozz|OI:virDomainBlockCopy",
9173 &pyobj_dom
, &disk
, &destxml
, &pyobj_dict
, &flags
))
9176 if (PyDict_Check(pyobj_dict
)) {
9177 if (virPyDictToTypedParams(pyobj_dict
, ¶ms
, &nparams
,
9178 virPyDomainBlockCopyParams
,
9179 VIR_N_ELEMENTS(virPyDomainBlockCopyParams
)) < 0) {
9182 } else if (pyobj_dict
!= Py_None
) {
9183 PyErr_Format(PyExc_TypeError
, "block params must be a dictionary");
9187 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
9189 LIBVIRT_BEGIN_ALLOW_THREADS
;
9190 c_retval
= virDomainBlockCopy(dom
, disk
, destxml
, params
, nparams
, flags
);
9191 LIBVIRT_END_ALLOW_THREADS
;
9193 virTypedParamsFree(params
, nparams
);
9194 return libvirt_intWrap(c_retval
);
9197 #endif /* LIBVIR_CHECK_VERSION(1, 2, 8) */
9199 #if LIBVIR_CHECK_VERSION(1, 2, 9)
9201 libvirt_virNodeAllocPages(PyObject
*self ATTRIBUTE_UNUSED
,
9204 PyObject
*pyobj_conn
;
9205 PyObject
*pyobj_pages
;
9206 Py_ssize_t size
= 0;
9208 PyObject
*key
, *value
;
9210 unsigned int npages
= 0;
9211 unsigned int *pageSizes
= NULL
;
9212 unsigned long long *pageCounts
= NULL
;
9214 unsigned int cellCount
= 1;
9215 unsigned int flags
= VIR_NODE_ALLOC_PAGES_ADD
;
9218 if (!PyArg_ParseTuple(args
, (char *)"OOiII:virNodeAllocPages",
9219 &pyobj_conn
, &pyobj_pages
,
9220 &startCell
, &cellCount
, &flags
))
9222 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
9224 if ((size
= PyDict_Size(pyobj_pages
)) < 0)
9228 PyErr_Format(PyExc_LookupError
,
9229 "Need non-empty dictionary to pages attribute");
9233 if (VIR_ALLOC_N(pageSizes
, size
) < 0 ||
9234 VIR_ALLOC_N(pageCounts
, size
) < 0) {
9239 while (PyDict_Next(pyobj_pages
, &pos
, &key
, &value
)) {
9240 if (libvirt_uintUnwrap(key
, &pageSizes
[npages
]) < 0 ||
9241 libvirt_ulonglongUnwrap(value
, &pageCounts
[npages
]) < 0)
9246 LIBVIRT_BEGIN_ALLOW_THREADS
;
9247 c_retval
= virNodeAllocPages(conn
, npages
, pageSizes
,
9248 pageCounts
, startCell
, cellCount
, flags
);
9249 LIBVIRT_END_ALLOW_THREADS
;
9251 VIR_FREE(pageSizes
);
9252 VIR_FREE(pageCounts
);
9254 return libvirt_intWrap(c_retval
);
9257 VIR_FREE(pageSizes
);
9258 VIR_FREE(pageCounts
);
9261 #endif /* LIBVIR_CHECK_VERSION(1, 2, 8) */
9263 #if LIBVIR_CHECK_VERSION(1, 2, 11)
9266 libvirt_virDomainGetFSInfo(PyObject
*self ATTRIBUTE_UNUSED
,
9269 virDomainPtr domain
;
9270 PyObject
*pyobj_domain
;
9272 virDomainFSInfoPtr
*fsinfo
= NULL
;
9275 PyObject
*py_retval
= NULL
;
9277 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetFSInfo",
9278 &pyobj_domain
, &flags
))
9280 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
9282 LIBVIRT_BEGIN_ALLOW_THREADS
;
9283 c_retval
= virDomainGetFSInfo(domain
, &fsinfo
, flags
);
9284 LIBVIRT_END_ALLOW_THREADS
;
9287 py_retval
= VIR_PY_NONE
;
9291 /* convert to a Python list */
9292 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
9295 for (i
= 0; i
< c_retval
; i
++) {
9296 virDomainFSInfoPtr fs
= fsinfo
[i
];
9297 PyObject
*info
, *alias
;
9302 info
= PyTuple_New(4);
9306 VIR_PY_LIST_SET_GOTO(py_retval
, i
, info
, error
);
9308 VIR_PY_TUPLE_SET_GOTO(info
, 0,
9309 libvirt_constcharPtrWrap(fs
->mountpoint
), error
);
9310 VIR_PY_TUPLE_SET_GOTO(info
, 1,
9311 libvirt_constcharPtrWrap(fs
->name
), error
);
9312 VIR_PY_TUPLE_SET_GOTO(info
, 2,
9313 libvirt_constcharPtrWrap(fs
->fstype
), error
);
9315 alias
= PyList_New(0);
9318 VIR_PY_TUPLE_SET_GOTO(info
, 3, alias
, error
);
9320 for (j
= 0; j
< fs
->ndevAlias
; j
++)
9321 VIR_PY_LIST_APPEND_GOTO(alias
,
9322 libvirt_constcharPtrWrap(fs
->devAlias
[j
]),
9328 for (i
= 0; i
< c_retval
; i
++)
9329 virDomainFSInfoFree(fsinfo
[i
]);
9334 Py_CLEAR(py_retval
);
9338 #endif /* LIBVIR_CHECK_VERSION(1, 2, 11) */
9340 #if LIBVIR_CHECK_VERSION(1, 3, 3)
9342 libvirt_virDomainGetPerfEvents(PyObject
*self ATTRIBUTE_UNUSED
,
9345 PyObject
*pyobj_domain
;
9346 virDomainPtr domain
;
9347 virTypedParameterPtr params
= NULL
;
9349 PyObject
*dict
= NULL
;
9353 if (!PyArg_ParseTuple(args
, (char *) "OI:virDomainGetPerfEvents",
9354 &pyobj_domain
, &flags
))
9356 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
9358 LIBVIRT_BEGIN_ALLOW_THREADS
;
9359 rc
= virDomainGetPerfEvents(domain
, ¶ms
, &nparams
, flags
);
9360 LIBVIRT_END_ALLOW_THREADS
;
9365 if (!(dict
= getPyVirTypedParameter(params
, nparams
)))
9369 virTypedParamsFree(params
, nparams
);
9374 libvirt_virDomainSetPerfEvents(PyObject
*self ATTRIBUTE_UNUSED
,
9377 virDomainPtr domain
;
9378 PyObject
*pyobj_domain
, *info
;
9379 PyObject
*ret
= NULL
;
9382 Py_ssize_t size
= 0;
9384 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
9386 if (!PyArg_ParseTuple(args
,
9387 (char *)"OOI:virDomainSetPerfEvents",
9388 &pyobj_domain
, &info
, &flags
))
9390 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
9392 if ((size
= PyDict_Size(info
)) < 0)
9396 PyErr_Format(PyExc_LookupError
,
9397 "Need non-empty dictionary to set attributes");
9401 LIBVIRT_BEGIN_ALLOW_THREADS
;
9402 i_retval
= virDomainGetPerfEvents(domain
, ¶ms
, &nparams
, flags
);
9403 LIBVIRT_END_ALLOW_THREADS
;
9406 return VIR_PY_INT_FAIL
;
9409 PyErr_Format(PyExc_LookupError
,
9410 "Domain has no settable attributes");
9414 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
9418 LIBVIRT_BEGIN_ALLOW_THREADS
;
9419 i_retval
= virDomainSetPerfEvents(domain
, new_params
, size
, flags
);
9420 LIBVIRT_END_ALLOW_THREADS
;
9423 ret
= VIR_PY_INT_FAIL
;
9427 ret
= VIR_PY_INT_SUCCESS
;
9430 virTypedParamsFree(params
, nparams
);
9431 virTypedParamsFree(new_params
, size
);
9434 #endif /* LIBVIR_CHECK_VERSION(1, 3, 3) */
9436 #if LIBVIR_CHECK_VERSION(2, 0, 0)
9438 libvirt_virConnectStoragePoolEventFreeFunc(void *opaque
)
9440 PyObject
*pyobj_conn
= (PyObject
*)opaque
;
9441 LIBVIRT_ENSURE_THREAD_STATE
;
9442 Py_DECREF(pyobj_conn
);
9443 LIBVIRT_RELEASE_THREAD_STATE
;
9447 libvirt_virConnectStoragePoolEventLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
9448 virStoragePoolPtr pool
,
9453 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
9454 PyObject
*pyobj_pool
;
9455 PyObject
*pyobj_ret
= NULL
;
9456 PyObject
*pyobj_conn
;
9460 LIBVIRT_ENSURE_THREAD_STATE
;
9462 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
9464 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
9467 /* Create a python instance of this virStoragePoolPtr */
9468 virStoragePoolRef(pool
);
9469 if (!(pyobj_pool
= libvirt_virStoragePoolPtrWrap(pool
))) {
9470 virStoragePoolFree(pool
);
9473 Py_INCREF(pyobj_cbData
);
9475 /* Call the Callback Dispatcher */
9476 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
9477 (char*)"_dispatchStoragePoolEventLifecycleCallback",
9484 Py_DECREF(pyobj_cbData
);
9485 Py_DECREF(pyobj_pool
);
9489 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
9492 Py_DECREF(pyobj_ret
);
9496 LIBVIRT_RELEASE_THREAD_STATE
;
9501 libvirt_virConnectStoragePoolEventGenericCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
9502 virStoragePoolPtr pool
,
9505 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
9506 PyObject
*pyobj_pool
;
9507 PyObject
*pyobj_ret
= NULL
;
9508 PyObject
*pyobj_conn
;
9512 LIBVIRT_ENSURE_THREAD_STATE
;
9514 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
9516 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
9519 /* Create a python instance of this virStoragePoolPtr */
9520 virStoragePoolRef(pool
);
9521 if (!(pyobj_pool
= libvirt_virStoragePoolPtrWrap(pool
))) {
9522 virStoragePoolFree(pool
);
9525 Py_INCREF(pyobj_cbData
);
9527 /* Call the Callback Dispatcher */
9528 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
9529 (char*)"_dispatchStoragePoolEventGenericCallback",
9534 Py_DECREF(pyobj_cbData
);
9535 Py_DECREF(pyobj_pool
);
9539 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
9542 Py_DECREF(pyobj_ret
);
9546 LIBVIRT_RELEASE_THREAD_STATE
;
9551 libvirt_virConnectStoragePoolEventRegisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
9554 PyObject
*pyobj_conn
; /* virConnectPtr */
9555 PyObject
*pyobj_pool
;
9556 PyObject
*pyobj_cbData
; /* hash of callback data */
9560 virConnectStoragePoolEventGenericCallback cb
= NULL
;
9561 virStoragePoolPtr pool
;
9563 if (!PyArg_ParseTuple(args
,
9564 (char *) "OOiO:virConnectStoragePoolEventRegisterAny",
9565 &pyobj_conn
, &pyobj_pool
, &eventID
, &pyobj_cbData
))
9568 DEBUG("libvirt_virConnectStoragePoolEventRegister(%p %p %d %p) called\n",
9569 pyobj_conn
, pyobj_pool
, eventID
, pyobj_cbData
);
9570 conn
= PyvirConnect_Get(pyobj_conn
);
9571 if (pyobj_pool
== Py_None
)
9574 pool
= PyvirStoragePool_Get(pyobj_pool
);
9576 switch ((virStoragePoolEventID
) eventID
) {
9577 case VIR_STORAGE_POOL_EVENT_ID_LIFECYCLE
:
9578 cb
= VIR_STORAGE_POOL_EVENT_CALLBACK(libvirt_virConnectStoragePoolEventLifecycleCallback
);
9581 case VIR_STORAGE_POOL_EVENT_ID_REFRESH
:
9582 cb
= VIR_STORAGE_POOL_EVENT_CALLBACK(libvirt_virConnectStoragePoolEventGenericCallback
);
9585 case VIR_STORAGE_POOL_EVENT_ID_LAST
:
9590 return VIR_PY_INT_FAIL
;
9593 Py_INCREF(pyobj_cbData
);
9595 LIBVIRT_BEGIN_ALLOW_THREADS
;
9596 ret
= virConnectStoragePoolEventRegisterAny(conn
,
9601 libvirt_virConnectStoragePoolEventFreeFunc
);
9602 LIBVIRT_END_ALLOW_THREADS
;
9605 Py_DECREF(pyobj_cbData
);
9608 return libvirt_intWrap(ret
);
9612 libvirt_virConnectStoragePoolEventDeregisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
9615 PyObject
*pyobj_conn
;
9620 if (!PyArg_ParseTuple(args
, (char *) "Oi:virConnectStoragePoolEventDeregisterAny",
9621 &pyobj_conn
, &callbackID
))
9624 DEBUG("libvirt_virConnectStoragePoolEventDeregister(%p) called\n",
9627 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
9629 LIBVIRT_BEGIN_ALLOW_THREADS
;
9630 ret
= virConnectStoragePoolEventDeregisterAny(conn
, callbackID
);
9631 LIBVIRT_END_ALLOW_THREADS
;
9633 return libvirt_intWrap(ret
);
9637 libvirt_virDomainGetGuestVcpus(PyObject
*self ATTRIBUTE_UNUSED
,
9640 PyObject
*pyobj_domain
;
9641 virDomainPtr domain
;
9642 virTypedParameterPtr params
= NULL
;
9643 unsigned int nparams
= 0;
9646 PyObject
*ret
= NULL
;
9648 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetGuestVcpus",
9649 &pyobj_domain
, &flags
))
9651 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
9653 LIBVIRT_BEGIN_ALLOW_THREADS
;
9654 i_retval
= virDomainGetGuestVcpus(domain
, ¶ms
, &nparams
, flags
);
9655 LIBVIRT_END_ALLOW_THREADS
;
9662 ret
= getPyVirTypedParameter(params
, nparams
);
9664 virTypedParamsFree(params
, nparams
);
9667 #endif /* LIBVIR_CHECK_VERSION(2, 0, 0)*/
9669 #if LIBVIR_CHECK_VERSION(2, 2, 0)
9671 libvirt_virConnectNodeDeviceEventFreeFunc(void *opaque
)
9673 PyObject
*pyobj_conn
= (PyObject
*)opaque
;
9674 LIBVIRT_ENSURE_THREAD_STATE
;
9675 Py_DECREF(pyobj_conn
);
9676 LIBVIRT_RELEASE_THREAD_STATE
;
9680 libvirt_virConnectNodeDeviceEventLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
9681 virNodeDevicePtr dev
,
9686 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
9687 PyObject
*pyobj_dev
;
9688 PyObject
*pyobj_ret
= NULL
;
9689 PyObject
*pyobj_conn
;
9693 LIBVIRT_ENSURE_THREAD_STATE
;
9695 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
9697 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
9700 /* Create a python instance of this virNodeDevicePtr */
9701 virNodeDeviceRef(dev
);
9702 if (!(pyobj_dev
= libvirt_virNodeDevicePtrWrap(dev
))) {
9703 virNodeDeviceFree(dev
);
9706 Py_INCREF(pyobj_cbData
);
9708 /* Call the Callback Dispatcher */
9709 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
9710 (char*)"_dispatchNodeDeviceEventLifecycleCallback",
9717 Py_DECREF(pyobj_cbData
);
9718 Py_DECREF(pyobj_dev
);
9722 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
9725 Py_DECREF(pyobj_ret
);
9729 LIBVIRT_RELEASE_THREAD_STATE
;
9734 libvirt_virConnectNodeDeviceEventGenericCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
9735 virNodeDevicePtr dev
,
9738 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
9739 PyObject
*pyobj_dev
;
9740 PyObject
*pyobj_ret
= NULL
;
9741 PyObject
*pyobj_conn
;
9745 LIBVIRT_ENSURE_THREAD_STATE
;
9747 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
9749 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
9752 /* Create a python instance of this virNodeDevicePtr */
9753 virNodeDeviceRef(dev
);
9754 if (!(pyobj_dev
= libvirt_virNodeDevicePtrWrap(dev
))) {
9755 virNodeDeviceFree(dev
);
9758 Py_INCREF(pyobj_cbData
);
9760 /* Call the Callback Dispatcher */
9761 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
9762 (char*)"_dispatchNodeDeviceEventGenericCallback",
9767 Py_DECREF(pyobj_cbData
);
9768 Py_DECREF(pyobj_dev
);
9772 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
9775 Py_DECREF(pyobj_ret
);
9779 LIBVIRT_RELEASE_THREAD_STATE
;
9784 libvirt_virConnectNodeDeviceEventRegisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
9787 PyObject
*pyobj_conn
; /* virConnectPtr */
9788 PyObject
*pyobj_dev
;
9789 PyObject
*pyobj_cbData
; /* hash of callback data */
9793 virConnectNodeDeviceEventGenericCallback cb
= NULL
;
9794 virNodeDevicePtr dev
;
9796 if (!PyArg_ParseTuple(args
,
9797 (char *) "OOiO:virConnectNodeDeviceEventRegisterAny",
9798 &pyobj_conn
, &pyobj_dev
, &eventID
, &pyobj_cbData
))
9801 DEBUG("libvirt_virConnectNodeDeviceEventRegister(%p %p %d %p) called\n",
9802 pyobj_conn
, pyobj_dev
, eventID
, pyobj_cbData
);
9803 conn
= PyvirConnect_Get(pyobj_conn
);
9804 if (pyobj_dev
== Py_None
)
9807 dev
= PyvirNodeDevice_Get(pyobj_dev
);
9809 switch ((virNodeDeviceEventID
) eventID
) {
9810 case VIR_NODE_DEVICE_EVENT_ID_LIFECYCLE
:
9811 cb
= VIR_NODE_DEVICE_EVENT_CALLBACK(libvirt_virConnectNodeDeviceEventLifecycleCallback
);
9814 case VIR_NODE_DEVICE_EVENT_ID_UPDATE
:
9815 cb
= VIR_NODE_DEVICE_EVENT_CALLBACK(libvirt_virConnectNodeDeviceEventGenericCallback
);
9818 case VIR_NODE_DEVICE_EVENT_ID_LAST
:
9823 return VIR_PY_INT_FAIL
;
9826 Py_INCREF(pyobj_cbData
);
9828 LIBVIRT_BEGIN_ALLOW_THREADS
;
9829 ret
= virConnectNodeDeviceEventRegisterAny(conn
,
9834 libvirt_virConnectNodeDeviceEventFreeFunc
);
9835 LIBVIRT_END_ALLOW_THREADS
;
9838 Py_DECREF(pyobj_cbData
);
9841 return libvirt_intWrap(ret
);
9845 libvirt_virConnectNodeDeviceEventDeregisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
9848 PyObject
*pyobj_conn
;
9853 if (!PyArg_ParseTuple(args
, (char *) "Oi:virConnectNodeDeviceEventDeregister",
9854 &pyobj_conn
, &callbackID
))
9857 DEBUG("libvirt_virConnectNodeDeviceEventDeregister(%p) called\n",
9860 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
9862 LIBVIRT_BEGIN_ALLOW_THREADS
;
9863 ret
= virConnectNodeDeviceEventDeregisterAny(conn
, callbackID
);
9864 LIBVIRT_END_ALLOW_THREADS
;
9866 return libvirt_intWrap(ret
);
9869 #endif /* LIBVIR_CHECK_VERSION(2, 2, 0)*/
9871 #if LIBVIR_CHECK_VERSION(3, 0, 0)
9873 libvirt_virConnectSecretEventFreeFunc(void *opaque
)
9875 PyObject
*pyobj_conn
= (PyObject
*)opaque
;
9876 LIBVIRT_ENSURE_THREAD_STATE
;
9877 Py_DECREF(pyobj_conn
);
9878 LIBVIRT_RELEASE_THREAD_STATE
;
9882 libvirt_virConnectSecretEventLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
9883 virSecretPtr secret
,
9888 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
9889 PyObject
*pyobj_secret
;
9890 PyObject
*pyobj_ret
= NULL
;
9891 PyObject
*pyobj_conn
;
9895 LIBVIRT_ENSURE_THREAD_STATE
;
9897 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
9899 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
9902 /* Create a python instance of this virSecretPtr */
9903 virSecretRef(secret
);
9904 if (!(pyobj_secret
= libvirt_virSecretPtrWrap(secret
))) {
9905 virSecretFree(secret
);
9908 Py_INCREF(pyobj_cbData
);
9910 /* Call the Callback Dispatcher */
9911 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
9912 (char*)"_dispatchSecretEventLifecycleCallback",
9919 Py_DECREF(pyobj_cbData
);
9920 Py_DECREF(pyobj_secret
);
9924 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
9927 Py_DECREF(pyobj_ret
);
9931 LIBVIRT_RELEASE_THREAD_STATE
;
9936 libvirt_virConnectSecretEventGenericCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
9937 virSecretPtr secret
,
9940 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
9941 PyObject
*pyobj_secret
;
9942 PyObject
*pyobj_ret
= NULL
;
9943 PyObject
*pyobj_conn
;
9947 LIBVIRT_ENSURE_THREAD_STATE
;
9949 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
9951 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
9954 /* Create a python instance of this virSecretPtr */
9955 virSecretRef(secret
);
9956 if (!(pyobj_secret
= libvirt_virSecretPtrWrap(secret
))) {
9957 virSecretFree(secret
);
9960 Py_INCREF(pyobj_cbData
);
9962 /* Call the Callback Dispatcher */
9963 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
9964 (char*)"_dispatchSecretEventGenericCallback",
9969 Py_DECREF(pyobj_cbData
);
9970 Py_DECREF(pyobj_secret
);
9974 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
9977 Py_DECREF(pyobj_ret
);
9981 LIBVIRT_RELEASE_THREAD_STATE
;
9986 libvirt_virConnectSecretEventRegisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
9989 PyObject
*pyobj_conn
; /* virConnectPtr */
9990 PyObject
*pyobj_secret
;
9991 PyObject
*pyobj_cbData
; /* hash of callback data */
9995 virConnectSecretEventGenericCallback cb
= NULL
;
9996 virSecretPtr secret
;
9998 if (!PyArg_ParseTuple(args
,
9999 (char *) "OOiO:virConnectSecretEventRegisterAny",
10000 &pyobj_conn
, &pyobj_secret
, &eventID
, &pyobj_cbData
))
10003 DEBUG("libvirt_virConnectSecretEventRegister(%p %p %d %p) called\n",
10004 pyobj_conn
, pyobj_secret
, eventID
, pyobj_cbData
);
10005 conn
= PyvirConnect_Get(pyobj_conn
);
10006 if (pyobj_secret
== Py_None
)
10009 secret
= PyvirSecret_Get(pyobj_secret
);
10011 switch ((virSecretEventID
) eventID
) {
10012 case VIR_SECRET_EVENT_ID_LIFECYCLE
:
10013 cb
= VIR_SECRET_EVENT_CALLBACK(libvirt_virConnectSecretEventLifecycleCallback
);
10016 case VIR_SECRET_EVENT_ID_VALUE_CHANGED
:
10017 cb
= VIR_SECRET_EVENT_CALLBACK(libvirt_virConnectSecretEventGenericCallback
);
10020 case VIR_SECRET_EVENT_ID_LAST
:
10025 return VIR_PY_INT_FAIL
;
10028 Py_INCREF(pyobj_cbData
);
10030 LIBVIRT_BEGIN_ALLOW_THREADS
;
10031 ret
= virConnectSecretEventRegisterAny(conn
, secret
, eventID
,
10033 libvirt_virConnectSecretEventFreeFunc
);
10034 LIBVIRT_END_ALLOW_THREADS
;
10037 Py_DECREF(pyobj_cbData
);
10040 return libvirt_intWrap(ret
);
10044 libvirt_virConnectSecretEventDeregisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
10047 PyObject
*pyobj_conn
;
10049 virConnectPtr conn
;
10052 if (!PyArg_ParseTuple(args
, (char *) "Oi:virConnectSecretEventDeregister",
10053 &pyobj_conn
, &callbackID
))
10056 DEBUG("libvirt_virConnectSecretEventDeregister(%p) called\n", pyobj_conn
);
10058 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
10060 LIBVIRT_BEGIN_ALLOW_THREADS
;
10061 ret
= virConnectSecretEventDeregisterAny(conn
, callbackID
);
10062 LIBVIRT_END_ALLOW_THREADS
;
10064 return libvirt_intWrap(ret
);
10066 #endif /* LIBVIR_CHECK_VERSION(3, 0, 0)*/
10069 #if LIBVIR_CHECK_VERSION(3, 4, 0)
10071 libvirt_virStreamRecvHole(PyObject
*self ATTRIBUTE_UNUSED
,
10074 PyObject
*pyobj_stream
;
10075 virStreamPtr stream
;
10076 long long length
= -1;
10077 unsigned int flags
;
10080 if (!PyArg_ParseTuple(args
, (char *) "OI:virStreamRecvHole",
10081 &pyobj_stream
, &flags
))
10084 stream
= PyvirStream_Get(pyobj_stream
);
10086 LIBVIRT_BEGIN_ALLOW_THREADS
;
10087 ret
= virStreamRecvHole(stream
, &length
, flags
);
10088 LIBVIRT_END_ALLOW_THREADS
;
10090 DEBUG("StreamRecvHole ret=%d length=%lld\n", ret
, length
);
10093 return VIR_PY_NONE
;
10095 return libvirt_longlongWrap(length
);
10100 libvirt_virStreamSendHole(PyObject
*self ATTRIBUTE_UNUSED
,
10103 PyObject
*pyobj_stream
;
10104 virStreamPtr stream
;
10106 unsigned int flags
;
10109 if (!PyArg_ParseTuple(args
, (char *) "OLI:virStreamSendHole",
10110 &pyobj_stream
, &length
, &flags
))
10113 stream
= PyvirStream_Get(pyobj_stream
);
10115 LIBVIRT_BEGIN_ALLOW_THREADS
;
10116 ret
= virStreamSendHole(stream
, length
, flags
);
10117 LIBVIRT_END_ALLOW_THREADS
;
10119 DEBUG("StreamSendHole ret=%d\n", ret
);
10121 return libvirt_intWrap(ret
);
10126 libvirt_virStreamRecvFlags(PyObject
*self ATTRIBUTE_UNUSED
,
10129 PyObject
*pyobj_stream
;
10131 virStreamPtr stream
;
10134 unsigned int flags
;
10137 if (!PyArg_ParseTuple(args
, (char *) "OkI:virStreamRecvFlags",
10138 &pyobj_stream
, &nbytes
, &flags
))
10141 stream
= PyvirStream_Get(pyobj_stream
);
10143 if (VIR_ALLOC_N(buf
, nbytes
+ 1) < 0)
10144 return PyErr_NoMemory();
10146 LIBVIRT_BEGIN_ALLOW_THREADS
;
10147 ret
= virStreamRecvFlags(stream
, buf
, nbytes
, flags
);
10148 LIBVIRT_END_ALLOW_THREADS
;
10150 buf
[ret
> -1 ? ret
: 0] = '\0';
10151 DEBUG("StreamRecvFlags ret=%d strlen=%zu\n", ret
, strlen(buf
));
10153 if (ret
== -2 || ret
== -3)
10154 return libvirt_intWrap(ret
);
10156 return VIR_PY_NONE
;
10157 rv
= libvirt_charPtrSizeWrap((char *) buf
, (Py_ssize_t
) ret
);
10162 #endif /* LIBVIR_CHECK_VERSION(3, 4, 0) */
10165 #if LIBVIR_CHECK_VERSION(4, 4, 0)
10167 libvirt_virConnectBaselineHypervisorCPU(PyObject
*self ATTRIBUTE_UNUSED
,
10170 virConnectPtr conn
;
10171 PyObject
*pyobj_conn
;
10177 unsigned int flags
;
10178 char **xmlCPUs
= NULL
;
10182 PyObject
*ret
= NULL
;
10184 if (!PyArg_ParseTuple(args
, (char *)"OzzzzOI:virConnectBaselineHypervisorCPU",
10185 &pyobj_conn
, &emulator
, &arch
, &machine
, &virttype
,
10189 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
10191 if (PyList_Check(list
)) {
10192 ncpus
= PyList_Size(list
);
10193 if (VIR_ALLOC_N(xmlCPUs
, ncpus
) < 0)
10194 return PyErr_NoMemory();
10196 for (i
= 0; i
< ncpus
; i
++) {
10197 if (libvirt_charPtrUnwrap(PyList_GetItem(list
, i
),
10198 &(xmlCPUs
[i
])) < 0)
10203 LIBVIRT_BEGIN_ALLOW_THREADS
;
10204 cpu
= virConnectBaselineHypervisorCPU(conn
, emulator
, arch
, machine
, virttype
,
10205 (const char **)xmlCPUs
, ncpus
, flags
);
10206 LIBVIRT_END_ALLOW_THREADS
;
10208 ret
= libvirt_constcharPtrWrap(cpu
);
10211 for (i
= 0; i
< ncpus
; i
++)
10212 VIR_FREE(xmlCPUs
[i
]);
10218 #endif /* LIBVIR_CHECK_VERSION(4, 4, 0) */
10221 #if LIBVIR_CHECK_VERSION(4, 5, 0)
10223 libvirt_virDomainGetLaunchSecurityInfo(PyObject
*self ATTRIBUTE_UNUSED
,
10226 PyObject
*pyobj_dom
= NULL
;
10227 PyObject
*ret
= NULL
;
10229 virDomainPtr dom
= NULL
;
10230 virTypedParameterPtr params
= NULL
;
10232 unsigned int flags
= 0;
10235 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetLaunchSecurityInfo",
10236 &pyobj_dom
, &flags
))
10238 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10240 LIBVIRT_BEGIN_ALLOW_THREADS
;
10241 i_retval
= virDomainGetLaunchSecurityInfo(dom
, ¶ms
, &nparams
, flags
);
10242 LIBVIRT_END_ALLOW_THREADS
;
10244 if (i_retval
< 0) {
10249 ret
= getPyVirTypedParameter(params
, nparams
);
10251 virTypedParamsFree(params
, nparams
);
10257 libvirt_virNodeGetSEVInfo(PyObject
*self ATTRIBUTE_UNUSED
,
10260 PyObject
*pyobj_conn
= NULL
;
10261 PyObject
*ret
= NULL
;
10263 virConnectPtr conn
= NULL
;
10264 virTypedParameterPtr params
= NULL
;
10266 unsigned int flags
= 0;
10269 if (!PyArg_ParseTuple(args
, (char *)"OI:virNodeGetSEVInfo",
10270 &pyobj_conn
, &flags
))
10272 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
10274 LIBVIRT_BEGIN_ALLOW_THREADS
;
10275 i_retval
= virNodeGetSEVInfo(conn
, ¶ms
, &nparams
, flags
);
10276 LIBVIRT_END_ALLOW_THREADS
;
10278 if (i_retval
< 0) {
10283 ret
= getPyVirTypedParameter(params
, nparams
);
10285 virTypedParamsFree(params
, nparams
);
10288 #endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
10290 #if LIBVIR_CHECK_VERSION(5, 5, 0)
10292 libvirt_virNetworkListAllPorts(PyObject
*self ATTRIBUTE_UNUSED
,
10295 PyObject
*pyobj_conn
;
10296 PyObject
*py_retval
= NULL
;
10297 virNetworkPtr conn
;
10298 virNetworkPortPtr
*doms
= NULL
;
10301 unsigned int flags
;
10303 if (!PyArg_ParseTuple(args
, (char *)"OI:virNetworkListAllPorts",
10304 &pyobj_conn
, &flags
))
10306 conn
= (virNetworkPtr
) PyvirNetwork_Get(pyobj_conn
);
10308 LIBVIRT_BEGIN_ALLOW_THREADS
;
10309 c_retval
= virNetworkListAllPorts(conn
, &doms
, flags
);
10310 LIBVIRT_END_ALLOW_THREADS
;
10313 return VIR_PY_NONE
;
10315 if (!(py_retval
= PyList_New(c_retval
)))
10318 for (i
= 0; i
< c_retval
; i
++) {
10319 VIR_PY_LIST_SET_GOTO(py_retval
, i
, libvirt_virNetworkPortPtrWrap(doms
[i
]), error
);
10320 /* python steals the pointer */
10325 for (i
= 0; i
< c_retval
; i
++)
10327 virNetworkPortFree(doms
[i
]);
10332 Py_CLEAR(py_retval
);
10337 libvirt_virNetworkPortSetParameters(PyObject
*self ATTRIBUTE_UNUSED
,
10340 virNetworkPortPtr port
;
10341 PyObject
*pyobj_port
, *info
;
10342 PyObject
*ret
= NULL
;
10345 Py_ssize_t size
= 0;
10346 unsigned int flags
;
10347 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
10349 if (!PyArg_ParseTuple(args
,
10350 (char *)"OOI:virNetworkPortSetParameters",
10351 &pyobj_port
, &info
, &flags
))
10353 port
= (virNetworkPortPtr
) PyvirNetworkPort_Get(pyobj_port
);
10355 if ((size
= PyDict_Size(info
)) < 0)
10359 PyErr_Format(PyExc_LookupError
,
10360 "Need non-empty dictionary to set attributes");
10364 LIBVIRT_BEGIN_ALLOW_THREADS
;
10365 i_retval
= virNetworkPortGetParameters(port
, ¶ms
, &nparams
, flags
);
10366 LIBVIRT_END_ALLOW_THREADS
;
10369 return VIR_PY_INT_FAIL
;
10371 if (nparams
== 0) {
10372 PyErr_Format(PyExc_LookupError
,
10373 "Port has no settable attributes");
10377 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
10381 LIBVIRT_BEGIN_ALLOW_THREADS
;
10382 i_retval
= virNetworkPortSetParameters(port
, new_params
, size
, flags
);
10383 LIBVIRT_END_ALLOW_THREADS
;
10385 if (i_retval
< 0) {
10386 ret
= VIR_PY_INT_FAIL
;
10390 ret
= VIR_PY_INT_SUCCESS
;
10393 virTypedParamsFree(params
, nparams
);
10394 virTypedParamsFree(new_params
, size
);
10399 libvirt_virNetworkPortGetParameters(PyObject
*self ATTRIBUTE_UNUSED
,
10402 PyObject
*pyobj_port
;
10403 virNetworkPortPtr port
;
10404 virTypedParameterPtr params
= NULL
;
10406 PyObject
*dict
= NULL
;
10407 unsigned int flags
;
10410 if (!PyArg_ParseTuple(args
, (char *) "OI:virNetworkPortGetParameters",
10411 &pyobj_port
, &flags
))
10413 port
= (virNetworkPortPtr
) PyvirNetworkPort_Get(pyobj_port
);
10415 LIBVIRT_BEGIN_ALLOW_THREADS
;
10416 rc
= virNetworkPortGetParameters(port
, ¶ms
, &nparams
, flags
);
10417 LIBVIRT_END_ALLOW_THREADS
;
10420 return VIR_PY_NONE
;
10422 dict
= getPyVirTypedParameter(params
, nparams
);
10424 virTypedParamsFree(params
, nparams
);
10429 libvirt_virNetworkPortGetUUID(PyObject
*self ATTRIBUTE_UNUSED
,
10432 unsigned char uuid
[VIR_UUID_BUFLEN
];
10433 virNetworkPortPtr port
;
10434 PyObject
*pyobj_port
;
10437 if (!PyArg_ParseTuple(args
, (char *)"O:virNetworkPortGetUUID", &pyobj_port
))
10439 port
= (virNetworkPortPtr
) PyvirNetworkPort_Get(pyobj_port
);
10442 return VIR_PY_NONE
;
10444 LIBVIRT_BEGIN_ALLOW_THREADS
;
10445 c_retval
= virNetworkPortGetUUID(port
, &uuid
[0]);
10446 LIBVIRT_END_ALLOW_THREADS
;
10449 return VIR_PY_NONE
;
10451 return libvirt_charPtrSizeWrap((char *) &uuid
[0], VIR_UUID_BUFLEN
);
10455 libvirt_virNetworkPortGetUUIDString(PyObject
*self ATTRIBUTE_UNUSED
,
10458 char uuidstr
[VIR_UUID_STRING_BUFLEN
];
10459 virNetworkPortPtr port
;
10460 PyObject
*pyobj_port
;
10463 if (!PyArg_ParseTuple(args
, (char *)"O:virNetworkPortGetUUIDString",
10466 port
= (virNetworkPortPtr
) PyvirNetworkPort_Get(pyobj_port
);
10469 return VIR_PY_NONE
;
10471 LIBVIRT_BEGIN_ALLOW_THREADS
;
10472 c_retval
= virNetworkPortGetUUIDString(port
, &uuidstr
[0]);
10473 LIBVIRT_END_ALLOW_THREADS
;
10476 return VIR_PY_NONE
;
10478 return libvirt_constcharPtrWrap((char *) &uuidstr
[0]);
10482 libvirt_virNetworkPortLookupByUUID(PyObject
*self ATTRIBUTE_UNUSED
,
10485 virNetworkPortPtr c_retval
;
10487 PyObject
*pyobj_net
;
10488 unsigned char *uuid
;
10491 if (!PyArg_ParseTuple(args
, (char *)"Oz#:virNetworkPortLookupByUUID",
10492 &pyobj_net
, &uuid
, &len
))
10494 net
= (virNetworkPtr
) PyvirNetwork_Get(pyobj_net
);
10496 if ((uuid
== NULL
) || (len
!= VIR_UUID_BUFLEN
))
10497 return VIR_PY_NONE
;
10499 LIBVIRT_BEGIN_ALLOW_THREADS
;
10500 c_retval
= virNetworkPortLookupByUUID(net
, uuid
);
10501 LIBVIRT_END_ALLOW_THREADS
;
10503 return libvirt_virNetworkPortPtrWrap((virNetworkPortPtr
) c_retval
);
10507 #endif /* LIBVIR_CHECK_VERSION(5, 5, 0) */
10509 #if LIBVIR_CHECK_VERSION(5, 7, 0)
10511 libvirt_virDomainGetGuestInfo(PyObject
*self ATTRIBUTE_UNUSED
,
10514 PyObject
*pyobj_dom
= NULL
;
10515 PyObject
*dict
= NULL
;
10516 virDomainPtr dom
= NULL
;
10517 virTypedParameterPtr params
= NULL
;
10519 unsigned int types
;
10520 unsigned int flags
;
10523 if (!PyArg_ParseTuple(args
, (char *) "OII:virDomainGetGuestInfo",
10524 &pyobj_dom
, &types
, &flags
))
10526 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10528 LIBVIRT_BEGIN_ALLOW_THREADS
;
10529 rc
= virDomainGetGuestInfo(dom
, types
, ¶ms
, &nparams
, flags
);
10530 LIBVIRT_END_ALLOW_THREADS
;
10533 return VIR_PY_NONE
;
10535 dict
= getPyVirTypedParameter(params
, nparams
);
10537 virTypedParamsFree(params
, nparams
);
10540 #endif /* LIBVIR_CHECK_VERSION(5, 7, 0) */
10543 #if LIBVIR_CHECK_VERSION(5, 8, 0)
10544 static virPyTypedParamsHint virPyConnectSetIdentityParams
[] = {
10545 { VIR_CONNECT_IDENTITY_USER_NAME
, VIR_TYPED_PARAM_STRING
},
10546 { VIR_CONNECT_IDENTITY_UNIX_USER_ID
, VIR_TYPED_PARAM_ULLONG
},
10547 { VIR_CONNECT_IDENTITY_GROUP_NAME
, VIR_TYPED_PARAM_STRING
},
10548 { VIR_CONNECT_IDENTITY_UNIX_GROUP_ID
, VIR_TYPED_PARAM_ULLONG
},
10549 { VIR_CONNECT_IDENTITY_PROCESS_ID
, VIR_TYPED_PARAM_LLONG
},
10550 { VIR_CONNECT_IDENTITY_PROCESS_TIME
, VIR_TYPED_PARAM_ULLONG
},
10551 { VIR_CONNECT_IDENTITY_SASL_USER_NAME
, VIR_TYPED_PARAM_STRING
},
10552 { VIR_CONNECT_IDENTITY_X509_DISTINGUISHED_NAME
, VIR_TYPED_PARAM_STRING
},
10553 { VIR_CONNECT_IDENTITY_SELINUX_CONTEXT
, VIR_TYPED_PARAM_STRING
},
10557 libvirt_virConnectSetIdentity(PyObject
*self ATTRIBUTE_UNUSED
,
10560 virConnectPtr conn
;
10561 PyObject
*pyobj_conn
, *dict
;
10562 PyObject
*ret
= NULL
;
10565 unsigned int flags
;
10566 virTypedParameterPtr params
= NULL
;
10568 if (!PyArg_ParseTuple(args
,
10569 (char *)"OOI:virConnectSetIdentity",
10570 &pyobj_conn
, &dict
, &flags
))
10572 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
10574 if (!PyDict_Check(dict
)) {
10575 PyErr_Format(PyExc_TypeError
, "migration params must be a dictionary");
10579 if (virPyDictToTypedParams(dict
, ¶ms
, &nparams
,
10580 virPyConnectSetIdentityParams
,
10581 VIR_N_ELEMENTS(virPyConnectSetIdentityParams
)) < 0) {
10585 LIBVIRT_BEGIN_ALLOW_THREADS
;
10586 i_retval
= virConnectSetIdentity(conn
, params
, nparams
, flags
);
10587 LIBVIRT_END_ALLOW_THREADS
;
10589 if (i_retval
< 0) {
10590 ret
= VIR_PY_INT_FAIL
;
10594 ret
= VIR_PY_INT_SUCCESS
;
10597 virTypedParamsFree(params
, nparams
);
10600 #endif /* LIBVIR_CHECK_VERSION(5, 8, 0) */
10603 #if LIBVIR_CHECK_VERSION(6, 10, 0)
10605 libvirt_virDomainAuthorizedSSHKeysGet(PyObject
*self ATTRIBUTE_UNUSED
,
10608 PyObject
*pyobj_dom
= NULL
;
10609 virDomainPtr dom
= NULL
;
10610 const char *user
= NULL
;
10611 char **keys
= NULL
;
10614 unsigned int flags
;
10615 PyObject
*ret
= NULL
;
10617 if (!PyArg_ParseTuple(args
, (char *)"OsI:virDomainAuthorizedSSHKeysGet",
10618 &pyobj_dom
, &user
, &flags
))
10620 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10622 LIBVIRT_BEGIN_ALLOW_THREADS
;
10623 nkeys
= virDomainAuthorizedSSHKeysGet(dom
, user
, &keys
, flags
);
10624 LIBVIRT_END_ALLOW_THREADS
;
10627 return VIR_PY_NONE
;
10629 if ((ret
= PyList_New(nkeys
)) == NULL
)
10632 for (i
= 0; i
< nkeys
; i
++)
10633 VIR_PY_LIST_SET_GOTO(ret
, i
, libvirt_constcharPtrWrap(keys
[i
]), error
);
10636 for (i
= 0; i
< nkeys
; i
++)
10648 libvirt_virDomainAuthorizedSSHKeysSet(PyObject
*self ATTRIBUTE_UNUSED
,
10651 PyObject
*pyobj_dom
= NULL
;
10652 virDomainPtr dom
= NULL
;
10653 const char *user
= NULL
;
10654 PyObject
*pyobj_keys
= NULL
;
10655 char **keys
= NULL
;
10658 unsigned int flags
;
10660 PyObject
*py_retval
= NULL
;
10662 if (!PyArg_ParseTuple(args
, (char *)"OsOI:virDomainAuthorizedSSHKeysSet",
10663 &pyobj_dom
, &user
, &pyobj_keys
, &flags
))
10665 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10667 if (PyList_Check(pyobj_keys
)) {
10668 nkeys
= PyList_Size(pyobj_keys
);
10670 if (VIR_ALLOC_N(keys
, nkeys
) < 0)
10671 return PyErr_NoMemory();
10673 for (i
= 0; i
< nkeys
; i
++) {
10674 if (libvirt_charPtrUnwrap(PyList_GetItem(pyobj_keys
, i
),
10680 LIBVIRT_BEGIN_ALLOW_THREADS
;
10681 c_retval
= virDomainAuthorizedSSHKeysSet(dom
, user
, (const char **)keys
, nkeys
, flags
);
10682 LIBVIRT_END_ALLOW_THREADS
;
10684 py_retval
= libvirt_intWrap(c_retval
);
10686 for (i
= 0 ; i
< nkeys
; i
++)
10692 #endif /* LIBVIR_CHECK_VERSION(6, 10, 0) */
10694 #if LIBVIR_CHECK_VERSION(7, 1, 0)
10696 libvirt_virDomainGetMessages(PyObject
*self ATTRIBUTE_UNUSED
,
10699 PyObject
*pyobj_dom
= NULL
;
10700 virDomainPtr dom
= NULL
;
10701 char **msgs
= NULL
;
10704 unsigned int flags
;
10705 PyObject
*ret
= NULL
;
10707 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetMessages",
10708 &pyobj_dom
, &flags
))
10710 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10712 LIBVIRT_BEGIN_ALLOW_THREADS
;
10713 nmsgs
= virDomainGetMessages(dom
, &msgs
, flags
);
10714 LIBVIRT_END_ALLOW_THREADS
;
10717 return VIR_PY_NONE
;
10719 if ((ret
= PyList_New(nmsgs
)) == NULL
)
10722 for (i
= 0; i
< nmsgs
; i
++)
10723 VIR_PY_LIST_SET_GOTO(ret
, i
, libvirt_constcharPtrWrap(msgs
[i
]), error
);
10726 for (i
= 0; i
< nmsgs
; i
++)
10735 #endif /* LIBVIR_CHECK_VERSION(7, 1, 0) */
10737 #if LIBVIR_CHECK_VERSION(8, 0, 0)
10739 static virPyTypedParamsHint virPyDomainSetLaunchSecurityStateParams
[] = {
10740 { VIR_DOMAIN_LAUNCH_SECURITY_SEV_SECRET
, VIR_TYPED_PARAM_STRING
},
10741 { VIR_DOMAIN_LAUNCH_SECURITY_SEV_SECRET_HEADER
, VIR_TYPED_PARAM_STRING
},
10742 { VIR_DOMAIN_LAUNCH_SECURITY_SEV_SECRET_SET_ADDRESS
, VIR_TYPED_PARAM_ULLONG
},
10746 libvirt_virDomainSetLaunchSecurityState(PyObject
*self ATTRIBUTE_UNUSED
,
10749 PyObject
*pyobj_dom
= NULL
;
10750 PyObject
*pyobj_dict
= NULL
;
10753 virTypedParameterPtr params
= NULL
;
10755 unsigned int flags
;
10758 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainSetLaunchSecurityState",
10759 &pyobj_dom
, &pyobj_dict
, &flags
))
10762 if (PyDict_Check(pyobj_dict
)) {
10763 if (virPyDictToTypedParams(pyobj_dict
, ¶ms
, &nparams
,
10764 virPyDomainSetLaunchSecurityStateParams
,
10765 VIR_N_ELEMENTS(virPyDomainSetLaunchSecurityStateParams
)) < 0) {
10769 PyErr_Format(PyExc_TypeError
, "Launch security state params must be "
10774 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10776 LIBVIRT_BEGIN_ALLOW_THREADS
;
10777 c_retval
= virDomainSetLaunchSecurityState(dom
, params
, nparams
, flags
);
10778 LIBVIRT_END_ALLOW_THREADS
;
10780 virTypedParamsFree(params
, nparams
);
10782 return libvirt_intWrap(c_retval
);
10784 #endif /* LIBVIR_CHECK_VERSION(8, 0, 0) */
10787 #if LIBVIR_CHECK_VERSION(8, 4, 0)
10788 static virPyTypedParamsHint virPyDomainSaveParams
[] = {
10789 { VIR_DOMAIN_SAVE_PARAM_FILE
, VIR_TYPED_PARAM_STRING
},
10790 { VIR_DOMAIN_SAVE_PARAM_DXML
, VIR_TYPED_PARAM_STRING
},
10795 libvirt_virDomainSaveParams(PyObject
*self ATTRIBUTE_UNUSED
,
10798 PyObject
*pyobj_dom
= NULL
;
10799 PyObject
*pyobj_dict
= NULL
;
10801 virTypedParameterPtr params
= NULL
;
10803 unsigned int flags
= 0;
10806 if (!PyArg_ParseTuple(args
, (char *)"OO|I:virDomainSaveParams",
10807 &pyobj_dom
, &pyobj_dict
, &flags
))
10810 if (PyDict_Check(pyobj_dict
)) {
10811 if (virPyDictToTypedParams(pyobj_dict
, ¶ms
, &nparams
,
10812 virPyDomainSaveParams
,
10813 VIR_N_ELEMENTS(virPyDomainSaveParams
)) < 0) {
10817 PyErr_Format(PyExc_TypeError
, "Save params must be a dictionary");
10821 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10823 LIBVIRT_BEGIN_ALLOW_THREADS
;
10824 c_retval
= virDomainSaveParams(dom
, params
, nparams
, flags
);
10825 LIBVIRT_END_ALLOW_THREADS
;
10827 virTypedParamsFree(params
, nparams
);
10829 return libvirt_intWrap(c_retval
);
10833 libvirt_virDomainRestoreParams(PyObject
*self ATTRIBUTE_UNUSED
,
10836 PyObject
*pyobj_conn
= NULL
;
10837 PyObject
*pyobj_dict
= NULL
;
10838 virConnectPtr conn
;
10839 virTypedParameterPtr params
= NULL
;
10841 unsigned int flags
= 0;
10844 if (!PyArg_ParseTuple(args
, (char *)"OO|I:virDomainRestoreParams",
10845 &pyobj_conn
, &pyobj_dict
, &flags
))
10848 if (PyDict_Check(pyobj_dict
)) {
10849 if (virPyDictToTypedParams(pyobj_dict
, ¶ms
, &nparams
,
10850 virPyDomainSaveParams
,
10851 VIR_N_ELEMENTS(virPyDomainSaveParams
)) < 0) {
10855 PyErr_Format(PyExc_TypeError
, "Restore params must be a dictionary");
10859 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
10861 LIBVIRT_BEGIN_ALLOW_THREADS
;
10862 c_retval
= virDomainRestoreParams(conn
, params
, nparams
, flags
);
10863 LIBVIRT_END_ALLOW_THREADS
;
10865 virTypedParamsFree(params
, nparams
);
10867 return libvirt_intWrap(c_retval
);
10869 #endif /* LIBVIR_CHECK_VERSION(8, 4, 0) */
10872 #if LIBVIR_CHECK_VERSION(9, 0, 0)
10874 libvirt_virDomainFDAssociate(PyObject
*self ATTRIBUTE_UNUSED
,
10877 PyObject
*py_retval
= NULL
;
10879 virDomainPtr domain
;
10880 PyObject
*pyobj_domain
;
10881 PyObject
*pyobj_files
;
10882 const char *name
= NULL
;
10883 unsigned int flags
;
10884 unsigned int nfiles
;
10888 if (!PyArg_ParseTuple(args
, (char *)"OsOI:virDomainFDAssociate",
10889 &pyobj_domain
, &name
, &pyobj_files
, &flags
))
10891 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
10893 nfiles
= PyList_Size(pyobj_files
);
10895 if (VIR_ALLOC_N(files
, nfiles
) < 0)
10896 return PyErr_NoMemory();
10898 for (i
= 0; i
< nfiles
; i
++) {
10902 pyfd
= PyList_GetItem(pyobj_files
, i
);
10904 if (libvirt_intUnwrap(pyfd
, &fd
) < 0)
10910 LIBVIRT_BEGIN_ALLOW_THREADS
;
10911 c_retval
= virDomainFDAssociate(domain
, name
, nfiles
, files
, flags
);
10912 LIBVIRT_END_ALLOW_THREADS
;
10914 py_retval
= libvirt_intWrap(c_retval
);
10920 #endif /* LIBVIR_CHECK_VERSION(9, 0, 0) */
10924 /************************************************************************
10926 * The registration stuff *
10928 ************************************************************************/
10929 static PyMethodDef libvirtMethods
[] = {
10930 #include "build/libvirt-export.c"
10931 {(char *) "virGetVersion", libvirt_virGetVersion
, METH_VARARGS
, NULL
},
10932 {(char *) "virConnectGetVersion", libvirt_virConnectGetVersion
, METH_VARARGS
, NULL
},
10933 #if LIBVIR_CHECK_VERSION(1, 1, 3)
10934 {(char *) "virConnectGetCPUModelNames", libvirt_virConnectGetCPUModelNames
, METH_VARARGS
, NULL
},
10935 #endif /* LIBVIR_CHECK_VERSION(1, 1, 3) */
10936 {(char *) "virConnectGetLibVersion", libvirt_virConnectGetLibVersion
, METH_VARARGS
, NULL
},
10937 {(char *) "virConnectOpenAuth", libvirt_virConnectOpenAuth
, METH_VARARGS
, NULL
},
10938 {(char *) "virConnectListDomainsID", libvirt_virConnectListDomainsID
, METH_VARARGS
, NULL
},
10939 {(char *) "virConnectListDefinedDomains", libvirt_virConnectListDefinedDomains
, METH_VARARGS
, NULL
},
10940 #if LIBVIR_CHECK_VERSION(0, 9, 13)
10941 {(char *) "virConnectListAllDomains", libvirt_virConnectListAllDomains
, METH_VARARGS
, NULL
},
10942 #endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
10943 {(char *) "virConnectDomainEventRegister", libvirt_virConnectDomainEventRegister
, METH_VARARGS
, NULL
},
10944 {(char *) "virConnectDomainEventDeregister", libvirt_virConnectDomainEventDeregister
, METH_VARARGS
, NULL
},
10945 {(char *) "virConnectDomainEventRegisterAny", libvirt_virConnectDomainEventRegisterAny
, METH_VARARGS
, NULL
},
10946 {(char *) "virConnectDomainEventDeregisterAny", libvirt_virConnectDomainEventDeregisterAny
, METH_VARARGS
, NULL
},
10947 #if LIBVIR_CHECK_VERSION(1, 2, 1)
10948 {(char *) "virConnectNetworkEventRegisterAny", libvirt_virConnectNetworkEventRegisterAny
, METH_VARARGS
, NULL
},
10949 {(char *) "virConnectNetworkEventDeregisterAny", libvirt_virConnectNetworkEventDeregisterAny
, METH_VARARGS
, NULL
},
10950 #endif /* LIBVIR_CHECK_VERSION(1, 2, 1) */
10951 #if LIBVIR_CHECK_VERSION(0, 10, 0)
10952 {(char *) "virConnectRegisterCloseCallback", libvirt_virConnectRegisterCloseCallback
, METH_VARARGS
, NULL
},
10953 {(char *) "virConnectUnregisterCloseCallback", libvirt_virConnectUnregisterCloseCallback
, METH_VARARGS
, NULL
},
10954 #endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
10955 {(char *) "virStreamEventAddCallback", libvirt_virStreamEventAddCallback
, METH_VARARGS
, NULL
},
10956 {(char *) "virStreamRecv", libvirt_virStreamRecv
, METH_VARARGS
, NULL
},
10957 {(char *) "virStreamSend", libvirt_virStreamSend
, METH_VARARGS
, NULL
},
10958 {(char *) "virDomainGetInfo", libvirt_virDomainGetInfo
, METH_VARARGS
, NULL
},
10959 {(char *) "virDomainGetState", libvirt_virDomainGetState
, METH_VARARGS
, NULL
},
10960 {(char *) "virDomainGetControlInfo", libvirt_virDomainGetControlInfo
, METH_VARARGS
, NULL
},
10961 {(char *) "virDomainGetBlockInfo", libvirt_virDomainGetBlockInfo
, METH_VARARGS
, NULL
},
10962 {(char *) "virNodeGetInfo", libvirt_virNodeGetInfo
, METH_VARARGS
, NULL
},
10963 {(char *) "virNodeGetSecurityModel", libvirt_virNodeGetSecurityModel
, METH_VARARGS
, NULL
},
10964 {(char *) "virDomainGetSecurityLabel", libvirt_virDomainGetSecurityLabel
, METH_VARARGS
, NULL
},
10965 #if LIBVIR_CHECK_VERSION(0, 10, 0)
10966 {(char *) "virDomainGetSecurityLabelList", libvirt_virDomainGetSecurityLabelList
, METH_VARARGS
, NULL
},
10967 #endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
10968 {(char *) "virNodeGetCPUStats", libvirt_virNodeGetCPUStats
, METH_VARARGS
, NULL
},
10969 {(char *) "virNodeGetMemoryStats", libvirt_virNodeGetMemoryStats
, METH_VARARGS
, NULL
},
10970 {(char *) "virDomainGetUUID", libvirt_virDomainGetUUID
, METH_VARARGS
, NULL
},
10971 {(char *) "virDomainGetUUIDString", libvirt_virDomainGetUUIDString
, METH_VARARGS
, NULL
},
10972 {(char *) "virDomainLookupByUUID", libvirt_virDomainLookupByUUID
, METH_VARARGS
, NULL
},
10973 {(char *) "virRegisterErrorHandler", libvirt_virRegisterErrorHandler
, METH_VARARGS
, NULL
},
10974 {(char *) "virGetLastError", libvirt_virGetLastError
, METH_VARARGS
, NULL
},
10975 {(char *) "virConnGetLastError", libvirt_virConnGetLastError
, METH_VARARGS
, NULL
},
10976 {(char *) "virConnectListNetworks", libvirt_virConnectListNetworks
, METH_VARARGS
, NULL
},
10977 {(char *) "virConnectListDefinedNetworks", libvirt_virConnectListDefinedNetworks
, METH_VARARGS
, NULL
},
10978 #if LIBVIR_CHECK_VERSION(0, 10, 2)
10979 {(char *) "virConnectListAllNetworks", libvirt_virConnectListAllNetworks
, METH_VARARGS
, NULL
},
10980 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
10981 {(char *) "virNetworkGetUUID", libvirt_virNetworkGetUUID
, METH_VARARGS
, NULL
},
10982 {(char *) "virNetworkGetUUIDString", libvirt_virNetworkGetUUIDString
, METH_VARARGS
, NULL
},
10983 {(char *) "virNetworkLookupByUUID", libvirt_virNetworkLookupByUUID
, METH_VARARGS
, NULL
},
10984 {(char *) "virDomainGetAutostart", libvirt_virDomainGetAutostart
, METH_VARARGS
, NULL
},
10985 {(char *) "virNetworkGetAutostart", libvirt_virNetworkGetAutostart
, METH_VARARGS
, NULL
},
10986 {(char *) "virDomainBlockStats", libvirt_virDomainBlockStats
, METH_VARARGS
, NULL
},
10987 {(char *) "virDomainBlockStatsFlags", libvirt_virDomainBlockStatsFlags
, METH_VARARGS
, NULL
},
10988 {(char *) "virDomainGetCPUStats", libvirt_virDomainGetCPUStats
, METH_VARARGS
, NULL
},
10989 {(char *) "virDomainInterfaceStats", libvirt_virDomainInterfaceStats
, METH_VARARGS
, NULL
},
10990 {(char *) "virDomainMemoryStats", libvirt_virDomainMemoryStats
, METH_VARARGS
, NULL
},
10991 {(char *) "virNodeGetCellsFreeMemory", libvirt_virNodeGetCellsFreeMemory
, METH_VARARGS
, NULL
},
10992 {(char *) "virDomainGetSchedulerType", libvirt_virDomainGetSchedulerType
, METH_VARARGS
, NULL
},
10993 {(char *) "virDomainGetSchedulerParameters", libvirt_virDomainGetSchedulerParameters
, METH_VARARGS
, NULL
},
10994 {(char *) "virDomainGetSchedulerParametersFlags", libvirt_virDomainGetSchedulerParametersFlags
, METH_VARARGS
, NULL
},
10995 {(char *) "virDomainSetSchedulerParameters", libvirt_virDomainSetSchedulerParameters
, METH_VARARGS
, NULL
},
10996 {(char *) "virDomainSetSchedulerParametersFlags", libvirt_virDomainSetSchedulerParametersFlags
, METH_VARARGS
, NULL
},
10997 {(char *) "virDomainSetBlkioParameters", libvirt_virDomainSetBlkioParameters
, METH_VARARGS
, NULL
},
10998 {(char *) "virDomainGetBlkioParameters", libvirt_virDomainGetBlkioParameters
, METH_VARARGS
, NULL
},
10999 {(char *) "virDomainSetMemoryParameters", libvirt_virDomainSetMemoryParameters
, METH_VARARGS
, NULL
},
11000 {(char *) "virDomainGetMemoryParameters", libvirt_virDomainGetMemoryParameters
, METH_VARARGS
, NULL
},
11001 {(char *) "virDomainSetNumaParameters", libvirt_virDomainSetNumaParameters
, METH_VARARGS
, NULL
},
11002 {(char *) "virDomainGetNumaParameters", libvirt_virDomainGetNumaParameters
, METH_VARARGS
, NULL
},
11003 {(char *) "virDomainSetInterfaceParameters", libvirt_virDomainSetInterfaceParameters
, METH_VARARGS
, NULL
},
11004 {(char *) "virDomainGetInterfaceParameters", libvirt_virDomainGetInterfaceParameters
, METH_VARARGS
, NULL
},
11005 {(char *) "virDomainGetVcpus", libvirt_virDomainGetVcpus
, METH_VARARGS
, NULL
},
11006 {(char *) "virDomainPinVcpu", libvirt_virDomainPinVcpu
, METH_VARARGS
, NULL
},
11007 {(char *) "virDomainPinVcpuFlags", libvirt_virDomainPinVcpuFlags
, METH_VARARGS
, NULL
},
11008 {(char *) "virDomainGetVcpuPinInfo", libvirt_virDomainGetVcpuPinInfo
, METH_VARARGS
, NULL
},
11009 #if LIBVIR_CHECK_VERSION(0, 10, 0)
11010 {(char *) "virDomainGetEmulatorPinInfo", libvirt_virDomainGetEmulatorPinInfo
, METH_VARARGS
, NULL
},
11011 {(char *) "virDomainPinEmulator", libvirt_virDomainPinEmulator
, METH_VARARGS
, NULL
},
11012 #endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
11013 #if LIBVIR_CHECK_VERSION(1, 2, 14)
11014 {(char *) "virDomainGetIOThreadInfo", libvirt_virDomainGetIOThreadInfo
, METH_VARARGS
, NULL
},
11015 {(char *) "virDomainPinIOThread", libvirt_virDomainPinIOThread
, METH_VARARGS
, NULL
},
11016 #endif /* LIBVIR_CHECK_VERSION(1, 2, 14) */
11017 #if LIBVIR_CHECK_VERSION(4, 10, 0)
11018 {(char *) "virDomainSetIOThreadParams", libvirt_virDomainSetIOThreadParams
, METH_VARARGS
, NULL
},
11019 #endif /* LIBVIR_CHECK_VERSION(4, 10, 0) */
11020 {(char *) "virConnectListStoragePools", libvirt_virConnectListStoragePools
, METH_VARARGS
, NULL
},
11021 {(char *) "virConnectListDefinedStoragePools", libvirt_virConnectListDefinedStoragePools
, METH_VARARGS
, NULL
},
11022 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11023 {(char *) "virConnectListAllStoragePools", libvirt_virConnectListAllStoragePools
, METH_VARARGS
, NULL
},
11024 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11025 {(char *) "virStoragePoolGetAutostart", libvirt_virStoragePoolGetAutostart
, METH_VARARGS
, NULL
},
11026 {(char *) "virStoragePoolListVolumes", libvirt_virStoragePoolListVolumes
, METH_VARARGS
, NULL
},
11027 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11028 {(char *) "virStoragePoolListAllVolumes", libvirt_virStoragePoolListAllVolumes
, METH_VARARGS
, NULL
},
11029 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11030 {(char *) "virStoragePoolGetInfo", libvirt_virStoragePoolGetInfo
, METH_VARARGS
, NULL
},
11031 {(char *) "virStorageVolGetInfo", libvirt_virStorageVolGetInfo
, METH_VARARGS
, NULL
},
11032 #if LIBVIR_CHECK_VERSION(3, 0, 0)
11033 {(char *) "virStorageVolGetInfoFlags", libvirt_virStorageVolGetInfoFlags
, METH_VARARGS
, NULL
},
11034 #endif /* LIBVIR_CHECK_VERSION(3, 0, 0) */
11035 {(char *) "virStoragePoolGetUUID", libvirt_virStoragePoolGetUUID
, METH_VARARGS
, NULL
},
11036 {(char *) "virStoragePoolGetUUIDString", libvirt_virStoragePoolGetUUIDString
, METH_VARARGS
, NULL
},
11037 {(char *) "virStoragePoolLookupByUUID", libvirt_virStoragePoolLookupByUUID
, METH_VARARGS
, NULL
},
11038 {(char *) "virEventRegisterImpl", libvirt_virEventRegisterImpl
, METH_VARARGS
, NULL
},
11039 {(char *) "virEventAddHandle", libvirt_virEventAddHandle
, METH_VARARGS
, NULL
},
11040 {(char *) "virEventAddTimeout", libvirt_virEventAddTimeout
, METH_VARARGS
, NULL
},
11041 {(char *) "virEventInvokeHandleCallback", libvirt_virEventInvokeHandleCallback
, METH_VARARGS
, NULL
},
11042 {(char *) "virEventInvokeTimeoutCallback", libvirt_virEventInvokeTimeoutCallback
, METH_VARARGS
, NULL
},
11043 {(char *) "virEventInvokeFreeCallback", libvirt_virEventInvokeFreeCallback
, METH_VARARGS
, NULL
},
11044 {(char *) "virNodeListDevices", libvirt_virNodeListDevices
, METH_VARARGS
, NULL
},
11045 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11046 {(char *) "virConnectListAllNodeDevices", libvirt_virConnectListAllNodeDevices
, METH_VARARGS
, NULL
},
11047 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11048 {(char *) "virNodeDeviceListCaps", libvirt_virNodeDeviceListCaps
, METH_VARARGS
, NULL
},
11049 {(char *) "virSecretGetUUID", libvirt_virSecretGetUUID
, METH_VARARGS
, NULL
},
11050 {(char *) "virSecretGetUUIDString", libvirt_virSecretGetUUIDString
, METH_VARARGS
, NULL
},
11051 {(char *) "virSecretLookupByUUID", libvirt_virSecretLookupByUUID
, METH_VARARGS
, NULL
},
11052 {(char *) "virConnectListSecrets", libvirt_virConnectListSecrets
, METH_VARARGS
, NULL
},
11053 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11054 {(char *) "virConnectListAllSecrets", libvirt_virConnectListAllSecrets
, METH_VARARGS
, NULL
},
11055 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11056 {(char *) "virSecretGetValue", libvirt_virSecretGetValue
, METH_VARARGS
, NULL
},
11057 {(char *) "virSecretSetValue", libvirt_virSecretSetValue
, METH_VARARGS
, NULL
},
11058 {(char *) "virNWFilterGetUUID", libvirt_virNWFilterGetUUID
, METH_VARARGS
, NULL
},
11059 {(char *) "virNWFilterGetUUIDString", libvirt_virNWFilterGetUUIDString
, METH_VARARGS
, NULL
},
11060 {(char *) "virNWFilterLookupByUUID", libvirt_virNWFilterLookupByUUID
, METH_VARARGS
, NULL
},
11061 {(char *) "virConnectListNWFilters", libvirt_virConnectListNWFilters
, METH_VARARGS
, NULL
},
11062 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11063 {(char *) "virConnectListAllNWFilters", libvirt_virConnectListAllNWFilters
, METH_VARARGS
, NULL
},
11064 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11065 #if LIBVIR_CHECK_VERSION(4, 5, 0)
11066 {(char *) "virConnectListAllNWFilterBindings", libvirt_virConnectListAllNWFilterBindings
, METH_VARARGS
, NULL
},
11067 #endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
11068 {(char *) "virConnectListInterfaces", libvirt_virConnectListInterfaces
, METH_VARARGS
, NULL
},
11069 {(char *) "virConnectListDefinedInterfaces", libvirt_virConnectListDefinedInterfaces
, METH_VARARGS
, NULL
},
11070 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11071 {(char *) "virConnectListAllInterfaces", libvirt_virConnectListAllInterfaces
, METH_VARARGS
, NULL
},
11072 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11073 {(char *) "virConnectBaselineCPU", libvirt_virConnectBaselineCPU
, METH_VARARGS
, NULL
},
11074 {(char *) "virDomainGetJobInfo", libvirt_virDomainGetJobInfo
, METH_VARARGS
, NULL
},
11075 #if LIBVIR_CHECK_VERSION(1, 0, 3)
11076 {(char *) "virDomainGetJobStats", libvirt_virDomainGetJobStats
, METH_VARARGS
, NULL
},
11077 #endif /* LIBVIR_CHECK_VERSION(1, 0, 3) */
11078 #if LIBVIR_CHECK_VERSION(5, 6, 0)
11079 {(char *) "virDomainListAllCheckpoints", libvirt_virDomainListAllCheckpoints
, METH_VARARGS
, NULL
},
11080 {(char *) "virDomainCheckpointListAllChildren", libvirt_virDomainCheckpointListAllChildren
, METH_VARARGS
, NULL
},
11081 #endif /* LIBVIR_CHECK_VERSION(5, 6, 0) */
11082 {(char *) "virDomainSnapshotListNames", libvirt_virDomainSnapshotListNames
, METH_VARARGS
, NULL
},
11083 #if LIBVIR_CHECK_VERSION(0, 9, 13)
11084 {(char *) "virDomainListAllSnapshots", libvirt_virDomainListAllSnapshots
, METH_VARARGS
, NULL
},
11085 #endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
11086 {(char *) "virDomainSnapshotListChildrenNames", libvirt_virDomainSnapshotListChildrenNames
, METH_VARARGS
, NULL
},
11087 #if LIBVIR_CHECK_VERSION(0, 9, 13)
11088 {(char *) "virDomainSnapshotListAllChildren", libvirt_virDomainSnapshotListAllChildren
, METH_VARARGS
, NULL
},
11089 #endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
11090 {(char *) "virDomainRevertToSnapshot", libvirt_virDomainRevertToSnapshot
, METH_VARARGS
, NULL
},
11091 {(char *) "virDomainGetBlockJobInfo", libvirt_virDomainGetBlockJobInfo
, METH_VARARGS
, NULL
},
11092 {(char *) "virDomainSetBlockIoTune", libvirt_virDomainSetBlockIoTune
, METH_VARARGS
, NULL
},
11093 {(char *) "virDomainGetBlockIoTune", libvirt_virDomainGetBlockIoTune
, METH_VARARGS
, NULL
},
11094 {(char *) "virDomainSendKey", libvirt_virDomainSendKey
, METH_VARARGS
, NULL
},
11095 #if LIBVIR_CHECK_VERSION(1, 0, 3)
11096 {(char *) "virDomainMigrateGetCompressionCache", libvirt_virDomainMigrateGetCompressionCache
, METH_VARARGS
, NULL
},
11097 #endif /* LIBVIR_CHECK_VERSION(1, 0, 3) */
11098 {(char *) "virDomainMigrateGetMaxSpeed", libvirt_virDomainMigrateGetMaxSpeed
, METH_VARARGS
, NULL
},
11099 #if LIBVIR_CHECK_VERSION(3, 7, 0)
11100 {(char *) "virDomainMigrateGetMaxDowntime", libvirt_virDomainMigrateGetMaxDowntime
, METH_VARARGS
, NULL
},
11101 #endif /* LIBVIR_CHECK_VERSION(3, 7, 0) */
11102 {(char *) "virDomainMigrateGetMaxSpeed", libvirt_virDomainMigrateGetMaxSpeed
, METH_VARARGS
, NULL
},
11103 #if LIBVIR_CHECK_VERSION(1, 1, 0)
11104 {(char *) "virDomainMigrate3", libvirt_virDomainMigrate3
, METH_VARARGS
, NULL
},
11105 {(char *) "virDomainMigrateToURI3", libvirt_virDomainMigrateToURI3
, METH_VARARGS
, NULL
},
11106 #endif /* LIBVIR_CHECK_VERSION(1, 1, 0) */
11107 {(char *) "virDomainBlockPeek", libvirt_virDomainBlockPeek
, METH_VARARGS
, NULL
},
11108 {(char *) "virDomainMemoryPeek", libvirt_virDomainMemoryPeek
, METH_VARARGS
, NULL
},
11109 {(char *) "virDomainGetDiskErrors", libvirt_virDomainGetDiskErrors
, METH_VARARGS
, NULL
},
11110 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11111 {(char *) "virNodeGetMemoryParameters", libvirt_virNodeGetMemoryParameters
, METH_VARARGS
, NULL
},
11112 {(char *) "virNodeSetMemoryParameters", libvirt_virNodeSetMemoryParameters
, METH_VARARGS
, NULL
},
11113 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11114 #if LIBVIR_CHECK_VERSION(1, 0, 0)
11115 {(char *) "virNodeGetCPUMap", libvirt_virNodeGetCPUMap
, METH_VARARGS
, NULL
},
11116 #endif /* LIBVIR_CHECK_VERSION(1, 0, 0) */
11117 #if LIBVIR_CHECK_VERSION(1, 1, 1)
11118 {(char *) "virDomainCreateXMLWithFiles", libvirt_virDomainCreateXMLWithFiles
, METH_VARARGS
, NULL
},
11119 {(char *) "virDomainCreateWithFiles", libvirt_virDomainCreateWithFiles
, METH_VARARGS
, NULL
},
11120 #endif /* LIBVIR_CHECK_VERSION(1, 1, 1) */
11121 #if LIBVIR_CHECK_VERSION(1, 2, 5)
11122 {(char *) "virDomainFSFreeze", libvirt_virDomainFSFreeze
, METH_VARARGS
, NULL
},
11123 {(char *) "virDomainFSThaw", libvirt_virDomainFSThaw
, METH_VARARGS
, NULL
},
11124 {(char *) "virDomainGetTime", libvirt_virDomainGetTime
, METH_VARARGS
, NULL
},
11125 {(char *) "virDomainSetTime", libvirt_virDomainSetTime
, METH_VARARGS
, NULL
},
11126 #endif /* LIBVIR_CHECK_VERSION(1, 2, 5) */
11127 #if LIBVIR_CHECK_VERSION(1, 2, 6)
11128 {(char *) "virNodeGetFreePages", libvirt_virNodeGetFreePages
, METH_VARARGS
, NULL
},
11129 {(char *) "virNetworkGetDHCPLeases", libvirt_virNetworkGetDHCPLeases
, METH_VARARGS
, NULL
},
11130 #endif /* LIBVIR_CHECK_VERSION(1, 2, 6) */
11131 #if LIBVIR_CHECK_VERSION(1, 2, 8)
11132 {(char *) "virConnectGetAllDomainStats", libvirt_virConnectGetAllDomainStats
, METH_VARARGS
, NULL
},
11133 {(char *) "virDomainListGetStats", libvirt_virDomainListGetStats
, METH_VARARGS
, NULL
},
11134 {(char *) "virDomainBlockCopy", libvirt_virDomainBlockCopy
, METH_VARARGS
, NULL
},
11135 #endif /* LIBVIR_CHECK_VERSION(1, 2, 8) */
11136 #if LIBVIR_CHECK_VERSION(1, 2, 9)
11137 {(char *) "virNodeAllocPages", libvirt_virNodeAllocPages
, METH_VARARGS
, NULL
},
11138 #endif /* LIBVIR_CHECK_VERSION(1, 2, 9) */
11139 #if LIBVIR_CHECK_VERSION(1, 2, 11)
11140 {(char *) "virDomainGetFSInfo", libvirt_virDomainGetFSInfo
, METH_VARARGS
, NULL
},
11141 #endif /* LIBVIR_CHECK_VERSION(1, 2, 11) */
11142 #if LIBVIR_CHECK_VERSION(1, 2, 14)
11143 {(char *) "virDomainInterfaceAddresses", libvirt_virDomainInterfaceAddresses
, METH_VARARGS
, NULL
},
11144 #endif /* LIBVIR_CHECK_VERSION(1, 2, 14) */
11145 #if LIBVIR_CHECK_VERSION(1, 3, 3)
11146 {(char *) "virDomainGetPerfEvents", libvirt_virDomainGetPerfEvents
, METH_VARARGS
, NULL
},
11147 {(char *) "virDomainSetPerfEvents", libvirt_virDomainSetPerfEvents
, METH_VARARGS
, NULL
},
11148 #endif /* LIBVIR_CHECK_VERSION(1, 3, 3) */
11149 #if LIBVIR_CHECK_VERSION(2, 0, 0)
11150 {(char *) "virConnectStoragePoolEventRegisterAny", libvirt_virConnectStoragePoolEventRegisterAny
, METH_VARARGS
, NULL
},
11151 {(char *) "virConnectStoragePoolEventDeregisterAny", libvirt_virConnectStoragePoolEventDeregisterAny
, METH_VARARGS
, NULL
},
11152 {(char *) "virDomainGetGuestVcpus", libvirt_virDomainGetGuestVcpus
, METH_VARARGS
, NULL
},
11153 #endif /* LIBVIR_CHECK_VERSION(2, 0, 0) */
11154 #if LIBVIR_CHECK_VERSION(2, 2, 0)
11155 {(char *) "virConnectNodeDeviceEventRegisterAny", libvirt_virConnectNodeDeviceEventRegisterAny
, METH_VARARGS
, NULL
},
11156 {(char *) "virConnectNodeDeviceEventDeregisterAny", libvirt_virConnectNodeDeviceEventDeregisterAny
, METH_VARARGS
, NULL
},
11157 #endif /* LIBVIR_CHECK_VERSION(2, 2, 0) */
11158 #if LIBVIR_CHECK_VERSION(3, 0, 0)
11159 {(char *) "virConnectSecretEventRegisterAny", libvirt_virConnectSecretEventRegisterAny
, METH_VARARGS
, NULL
},
11160 {(char *) "virConnectSecretEventDeregisterAny", libvirt_virConnectSecretEventDeregisterAny
, METH_VARARGS
, NULL
},
11161 #endif /* LIBVIR_CHECK_VERSION(3, 0, 0) */
11162 #if LIBVIR_CHECK_VERSION(3, 4, 0)
11163 {(char *) "virStreamRecvHole", libvirt_virStreamRecvHole
, METH_VARARGS
, NULL
},
11164 {(char *) "virStreamSendHole", libvirt_virStreamSendHole
, METH_VARARGS
, NULL
},
11165 {(char *) "virStreamRecvFlags", libvirt_virStreamRecvFlags
, METH_VARARGS
, NULL
},
11166 #endif /* LIBVIR_CHECK_VERSION(3, 4, 0) */
11167 #if LIBVIR_CHECK_VERSION(4, 4, 0)
11168 {(char *) "virConnectBaselineHypervisorCPU", libvirt_virConnectBaselineHypervisorCPU
, METH_VARARGS
, NULL
},
11169 #endif /* LIBVIR_CHECK_VERSION(4, 4, 0) */
11170 #if LIBVIR_CHECK_VERSION(4, 5, 0)
11171 {(char *) "virDomainGetLaunchSecurityInfo", libvirt_virDomainGetLaunchSecurityInfo
, METH_VARARGS
, NULL
},
11172 {(char *) "virNodeGetSEVInfo", libvirt_virNodeGetSEVInfo
, METH_VARARGS
, NULL
},
11173 #endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
11174 #if LIBVIR_CHECK_VERSION(5, 5, 0)
11175 {(char *) "virNetworkListAllPorts", libvirt_virNetworkListAllPorts
, METH_VARARGS
, NULL
},
11176 {(char *) "virNetworkPortSetParameters", libvirt_virNetworkPortSetParameters
, METH_VARARGS
, NULL
},
11177 {(char *) "virNetworkPortGetParameters", libvirt_virNetworkPortGetParameters
, METH_VARARGS
, NULL
},
11178 {(char *) "virNetworkPortGetUUID", libvirt_virNetworkPortGetUUID
, METH_VARARGS
, NULL
},
11179 {(char *) "virNetworkPortGetUUIDString", libvirt_virNetworkPortGetUUIDString
, METH_VARARGS
, NULL
},
11180 {(char *) "virNetworkPortLookupByUUID", libvirt_virNetworkPortLookupByUUID
, METH_VARARGS
, NULL
},
11181 #endif /* LIBVIR_CHECK_VERSION(5, 5, 0) */
11182 #if LIBVIR_CHECK_VERSION(5, 7, 0)
11183 {(char *) "virDomainGetGuestInfo", libvirt_virDomainGetGuestInfo
, METH_VARARGS
, NULL
},
11184 #endif /* LIBVIR_CHECK_VERSION(5, 7, 0) */
11185 #if LIBVIR_CHECK_VERSION(5, 8, 0)
11186 {(char *) "virConnectSetIdentity", libvirt_virConnectSetIdentity
, METH_VARARGS
, NULL
},
11187 #endif /* LIBVIR_CHECK_VERSION(5, 8, 0) */
11188 #if LIBVIR_CHECK_VERSION(6, 10, 0)
11189 {(char *) "virDomainAuthorizedSSHKeysGet", libvirt_virDomainAuthorizedSSHKeysGet
, METH_VARARGS
, NULL
},
11190 {(char *) "virDomainAuthorizedSSHKeysSet", libvirt_virDomainAuthorizedSSHKeysSet
, METH_VARARGS
, NULL
},
11191 #endif /* LIBVIR_CHECK_VERSION(6, 10, 0) */
11192 #if LIBVIR_CHECK_VERSION(7, 1, 0)
11193 {(char *) "virDomainGetMessages", libvirt_virDomainGetMessages
, METH_VARARGS
, NULL
},
11194 #endif /* LIBVIR_CHECK_VERSION(7, 1, 0) */
11195 #if LIBVIR_CHECK_VERSION(7, 8, 0)
11196 {(char *) "virNodeDeviceGetAutostart", libvirt_virNodeDeviceGetAutostart
, METH_VARARGS
, NULL
},
11197 #endif /* LIBVIR_CHECK_VERSION(7, 8, 0) */
11198 #if LIBVIR_CHECK_VERSION(8, 0, 0)
11199 {(char *) "virDomainSetLaunchSecurityState", libvirt_virDomainSetLaunchSecurityState
, METH_VARARGS
, NULL
},
11200 #endif /* LIBVIR_CHECK_VERSION(8, 0, 0) */
11201 #if LIBVIR_CHECK_VERSION(8, 4, 0)
11202 {(char *) "virDomainSaveParams", libvirt_virDomainSaveParams
, METH_VARARGS
, NULL
},
11203 {(char *) "virDomainRestoreParams", libvirt_virDomainRestoreParams
, METH_VARARGS
, NULL
},
11204 #endif /* LIBVIR_CHECK_VERSION(8, 4, 0) */
11205 #if LIBVIR_CHECK_VERSION(9, 0, 0)
11206 {(char *) "virDomainFDAssociate", libvirt_virDomainFDAssociate
, METH_VARARGS
, NULL
},
11207 #endif /* LIBVIR_CHECK_VERSION(9, 0, 0) */
11208 {NULL
, NULL
, 0, NULL
}
11211 static struct PyModuleDef moduledef
= {
11212 PyModuleDef_HEAD_INIT
,
11237 if (virInitialize() < 0)
11240 module
= PyModule_Create(&moduledef
);