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"
30 #include "libvirt-utils.h"
33 # define DEBUG_ERROR 1
37 # define DEBUG(fmt, ...) \
38 printf(fmt, __VA_ARGS__)
40 # define DEBUG(fmt, ...) \
41 while (0) {printf(fmt, __VA_ARGS__);}
46 * Utility function to retrieve the number of node CPUs present.
47 * It first tries virNodeGetCPUMap, which will return the
48 * number reliably, if available.
49 * As a fallback and for compatibility with backlevel libvirt
50 * versions virNodeGetInfo will be called to calculate the
51 * CPU number, which has the potential to return a too small
52 * number if some host CPUs are offline.
55 getPyNodeCPUCount(virConnectPtr conn
)
59 #if LIBVIR_CHECK_VERSION(1, 0, 0)
60 LIBVIRT_BEGIN_ALLOW_THREADS
;
61 i_retval
= virNodeGetCPUMap(conn
, NULL
, NULL
, 0);
62 LIBVIRT_END_ALLOW_THREADS
;
63 #else /* fallback: use nodeinfo */
66 LIBVIRT_BEGIN_ALLOW_THREADS
;
67 i_retval
= virNodeGetInfo(conn
, &nodeinfo
);
68 LIBVIRT_END_ALLOW_THREADS
;
71 i_retval
= VIR_NODEINFO_MAXCPUS(nodeinfo
);
72 #endif /* LIBVIR_CHECK_VERSION(1, 0, 0) */
77 /************************************************************************
81 ************************************************************************/
84 libvirt_virDomainBlockStats(PyObject
*self ATTRIBUTE_UNUSED
,
88 PyObject
*pyobj_domain
;
91 virDomainBlockStatsStruct stats
;
94 if (!PyArg_ParseTuple(args
, (char *)"Oz:virDomainBlockStats",
95 &pyobj_domain
, &path
))
97 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
99 LIBVIRT_BEGIN_ALLOW_THREADS
;
100 c_retval
= virDomainBlockStats(domain
, path
, &stats
, sizeof(stats
));
101 LIBVIRT_END_ALLOW_THREADS
;
106 /* convert to a Python tuple of long objects */
107 if ((info
= PyTuple_New(5)) == NULL
)
110 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_longlongWrap(stats
.rd_req
), error
);
111 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_longlongWrap(stats
.rd_bytes
), error
);
112 VIR_PY_TUPLE_SET_GOTO(info
, 2, libvirt_longlongWrap(stats
.wr_req
), error
);
113 VIR_PY_TUPLE_SET_GOTO(info
, 3, libvirt_longlongWrap(stats
.wr_bytes
), error
);
114 VIR_PY_TUPLE_SET_GOTO(info
, 4, libvirt_longlongWrap(stats
.errs
), error
);
124 libvirt_virDomainBlockStatsFlags(PyObject
*self ATTRIBUTE_UNUSED
,
128 PyObject
*pyobj_domain
;
129 PyObject
*ret
= NULL
;
133 virTypedParameterPtr params
;
136 if (!PyArg_ParseTuple(args
, (char *)"OzI:virDomainBlockStatsFlags",
137 &pyobj_domain
, &path
, &flags
))
139 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
141 LIBVIRT_BEGIN_ALLOW_THREADS
;
142 i_retval
= virDomainBlockStatsFlags(domain
, path
, NULL
, &nparams
, flags
);
143 LIBVIRT_END_ALLOW_THREADS
;
151 if (VIR_ALLOC_N(params
, nparams
) < 0)
152 return PyErr_NoMemory();
154 LIBVIRT_BEGIN_ALLOW_THREADS
;
155 i_retval
= virDomainBlockStatsFlags(domain
, path
, params
, &nparams
, flags
);
156 LIBVIRT_END_ALLOW_THREADS
;
163 ret
= getPyVirTypedParameter(params
, nparams
);
166 virTypedParamsFree(params
, nparams
);
171 libvirt_virDomainGetCPUStats(PyObject
*self ATTRIBUTE_UNUSED
,
175 PyObject
*pyobj_domain
, *totalbool
;
176 PyObject
*ret
= NULL
;
177 PyObject
*error
= NULL
;
178 int ncpus
= -1, start_cpu
= 0;
179 int sumparams
= 0, nparams
= -1;
184 virTypedParameterPtr params
= NULL
, cpuparams
;
186 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainGetCPUStats",
187 &pyobj_domain
, &totalbool
, &flags
))
189 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
191 if (libvirt_boolUnwrap(totalbool
, &totalflag
) < 0)
194 if ((ret
= PyList_New(0)) == NULL
)
198 LIBVIRT_BEGIN_ALLOW_THREADS
;
199 ncpus
= virDomainGetCPUStats(domain
, NULL
, 0, 0, 0, flags
);
200 LIBVIRT_END_ALLOW_THREADS
;
207 LIBVIRT_BEGIN_ALLOW_THREADS
;
208 nparams
= virDomainGetCPUStats(domain
, NULL
, 0, 0, 1, flags
);
209 LIBVIRT_END_ALLOW_THREADS
;
216 sumparams
= nparams
* MIN(ncpus
, 128);
218 if (VIR_ALLOC_N(params
, sumparams
) < 0) {
219 error
= PyErr_NoMemory();
224 int queried_ncpus
= MIN(ncpus
, 128);
227 LIBVIRT_BEGIN_ALLOW_THREADS
;
228 i_retval
= virDomainGetCPUStats(domain
, params
,
230 queried_ncpus
, flags
);
231 LIBVIRT_END_ALLOW_THREADS
;
241 for (i
= 0; i
< queried_ncpus
; i
++) {
242 cpuparams
= ¶ms
[i
* nparams
];
243 VIR_PY_LIST_APPEND_GOTO(ret
,
244 getPyVirTypedParameter(cpuparams
,
249 start_cpu
+= queried_ncpus
;
250 ncpus
-= queried_ncpus
;
251 virTypedParamsClear(params
, sumparams
);
254 LIBVIRT_BEGIN_ALLOW_THREADS
;
255 nparams
= virDomainGetCPUStats(domain
, NULL
, 0, -1, 1, flags
);
256 LIBVIRT_END_ALLOW_THREADS
;
266 if (VIR_ALLOC_N(params
, nparams
) < 0) {
267 error
= PyErr_NoMemory();
271 LIBVIRT_BEGIN_ALLOW_THREADS
;
272 i_retval
= virDomainGetCPUStats(domain
, params
, nparams
,
274 LIBVIRT_END_ALLOW_THREADS
;
284 VIR_PY_LIST_APPEND_GOTO(ret
, getPyVirTypedParameter(params
, i_retval
),
288 virTypedParamsFree(params
, sumparams
);
292 virTypedParamsFree(params
, sumparams
);
298 libvirt_virDomainInterfaceStats(PyObject
*self ATTRIBUTE_UNUSED
,
302 PyObject
*pyobj_domain
;
305 virDomainInterfaceStatsStruct stats
;
308 if (!PyArg_ParseTuple(args
, (char *)"Oz:virDomainInterfaceStats",
309 &pyobj_domain
, &path
))
311 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
313 LIBVIRT_BEGIN_ALLOW_THREADS
;
314 c_retval
= virDomainInterfaceStats(domain
, path
, &stats
, sizeof(stats
));
315 LIBVIRT_END_ALLOW_THREADS
;
320 /* convert to a Python tuple of long objects */
321 if ((info
= PyTuple_New(8)) == NULL
)
324 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_longlongWrap(stats
.rx_bytes
), error
);
325 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_longlongWrap(stats
.rx_packets
), error
);
326 VIR_PY_TUPLE_SET_GOTO(info
, 2, libvirt_longlongWrap(stats
.rx_errs
), error
);
327 VIR_PY_TUPLE_SET_GOTO(info
, 3, libvirt_longlongWrap(stats
.rx_drop
), error
);
328 VIR_PY_TUPLE_SET_GOTO(info
, 4, libvirt_longlongWrap(stats
.tx_bytes
), error
);
329 VIR_PY_TUPLE_SET_GOTO(info
, 5, libvirt_longlongWrap(stats
.tx_packets
), error
);
330 VIR_PY_TUPLE_SET_GOTO(info
, 6, libvirt_longlongWrap(stats
.tx_errs
), error
);
331 VIR_PY_TUPLE_SET_GOTO(info
, 7, libvirt_longlongWrap(stats
.tx_drop
), error
);
341 libvirt_virDomainMemoryStats(PyObject
*self ATTRIBUTE_UNUSED
,
345 PyObject
*pyobj_domain
;
346 unsigned int nr_stats
;
348 virDomainMemoryStatStruct stats
[VIR_DOMAIN_MEMORY_STAT_NR
];
350 PyObject
*key
= NULL
, *val
= NULL
;
352 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainMemoryStats", &pyobj_domain
))
354 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
356 LIBVIRT_BEGIN_ALLOW_THREADS
;
357 nr_stats
= virDomainMemoryStats(domain
, stats
,
358 VIR_DOMAIN_MEMORY_STAT_NR
, 0);
359 LIBVIRT_END_ALLOW_THREADS
;
361 if (nr_stats
== (unsigned int)-1)
364 /* convert to a Python dictionary */
365 if ((info
= PyDict_New()) == NULL
)
368 for (i
= 0; i
< nr_stats
; i
++) {
369 switch (stats
[i
].tag
) {
370 case VIR_DOMAIN_MEMORY_STAT_SWAP_IN
:
371 key
= libvirt_constcharPtrWrap("swap_in");
373 case VIR_DOMAIN_MEMORY_STAT_SWAP_OUT
:
374 key
= libvirt_constcharPtrWrap("swap_out");
376 case VIR_DOMAIN_MEMORY_STAT_MAJOR_FAULT
:
377 key
= libvirt_constcharPtrWrap("major_fault");
379 case VIR_DOMAIN_MEMORY_STAT_MINOR_FAULT
:
380 key
= libvirt_constcharPtrWrap("minor_fault");
382 case VIR_DOMAIN_MEMORY_STAT_UNUSED
:
383 key
= libvirt_constcharPtrWrap("unused");
385 case VIR_DOMAIN_MEMORY_STAT_AVAILABLE
:
386 key
= libvirt_constcharPtrWrap("available");
388 case VIR_DOMAIN_MEMORY_STAT_ACTUAL_BALLOON
:
389 key
= libvirt_constcharPtrWrap("actual");
391 case VIR_DOMAIN_MEMORY_STAT_RSS
:
392 key
= libvirt_constcharPtrWrap("rss");
394 #if LIBVIR_CHECK_VERSION(2, 1, 0)
395 case VIR_DOMAIN_MEMORY_STAT_USABLE
:
396 key
= libvirt_constcharPtrWrap("usable");
398 case VIR_DOMAIN_MEMORY_STAT_LAST_UPDATE
:
399 key
= libvirt_constcharPtrWrap("last_update");
401 #endif /* LIBVIR_CHECK_VERSION(2, 1, 0) */
402 #if LIBVIR_CHECK_VERSION(4, 6, 0)
403 case VIR_DOMAIN_MEMORY_STAT_DISK_CACHES
:
404 key
= libvirt_constcharPtrWrap("disk_caches");
406 #endif /* LIBVIR_CHECK_VERSION(4, 6, 0) */
407 #if LIBVIR_CHECK_VERSION(5, 4, 0)
408 case VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGALLOC
:
409 key
= libvirt_constcharPtrWrap("hugetlb_pgalloc");
411 case VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGFAIL
:
412 key
= libvirt_constcharPtrWrap("hugetlb_pgfail");
414 #endif /* LIBVIR_CHECK_VERSION(5, 4, 0) */
418 val
= libvirt_ulonglongWrap(stats
[i
].val
);
420 VIR_PY_DICT_SET_GOTO(info
, key
, val
, error
);
431 libvirt_virDomainGetSchedulerType(PyObject
*self ATTRIBUTE_UNUSED
,
435 PyObject
*pyobj_domain
, *info
;
439 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetScedulerType",
442 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
444 LIBVIRT_BEGIN_ALLOW_THREADS
;
445 c_retval
= virDomainGetSchedulerType(domain
, &nparams
);
446 LIBVIRT_END_ALLOW_THREADS
;
448 if (c_retval
== NULL
)
451 /* convert to a Python tuple of long objects */
452 if ((info
= PyTuple_New(2)) == NULL
)
455 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_constcharPtrWrap(c_retval
), error
);
456 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_intWrap(nparams
), error
);
469 libvirt_virDomainGetSchedulerParameters(PyObject
*self ATTRIBUTE_UNUSED
,
473 PyObject
*pyobj_domain
;
474 PyObject
*ret
= NULL
;
478 virTypedParameterPtr params
;
480 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetScedulerParameters",
483 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
485 LIBVIRT_BEGIN_ALLOW_THREADS
;
486 c_retval
= virDomainGetSchedulerType(domain
, &nparams
);
487 LIBVIRT_END_ALLOW_THREADS
;
489 if (c_retval
== NULL
)
496 if (VIR_ALLOC_N(params
, nparams
) < 0)
497 return PyErr_NoMemory();
499 LIBVIRT_BEGIN_ALLOW_THREADS
;
500 i_retval
= virDomainGetSchedulerParameters(domain
, params
, &nparams
);
501 LIBVIRT_END_ALLOW_THREADS
;
508 ret
= getPyVirTypedParameter(params
, nparams
);
511 virTypedParamsFree(params
, nparams
);
516 libvirt_virDomainGetSchedulerParametersFlags(PyObject
*self ATTRIBUTE_UNUSED
,
520 PyObject
*pyobj_domain
;
521 PyObject
*ret
= NULL
;
526 virTypedParameterPtr params
;
528 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetScedulerParametersFlags",
529 &pyobj_domain
, &flags
))
531 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
533 LIBVIRT_BEGIN_ALLOW_THREADS
;
534 c_retval
= virDomainGetSchedulerType(domain
, &nparams
);
535 LIBVIRT_END_ALLOW_THREADS
;
537 if (c_retval
== NULL
)
544 if (VIR_ALLOC_N(params
, nparams
) < 0)
545 return PyErr_NoMemory();
547 LIBVIRT_BEGIN_ALLOW_THREADS
;
548 i_retval
= virDomainGetSchedulerParametersFlags(domain
, params
, &nparams
,
550 LIBVIRT_END_ALLOW_THREADS
;
557 ret
= getPyVirTypedParameter(params
, nparams
);
560 virTypedParamsFree(params
, nparams
);
565 libvirt_virDomainSetSchedulerParameters(PyObject
*self ATTRIBUTE_UNUSED
,
569 PyObject
*pyobj_domain
, *info
;
570 PyObject
*ret
= NULL
;
575 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
577 if (!PyArg_ParseTuple(args
, (char *)"OO:virDomainSetSchedulerParameters",
578 &pyobj_domain
, &info
))
580 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
582 if ((size
= PyDict_Size(info
)) < 0)
586 PyErr_Format(PyExc_LookupError
,
587 "Need non-empty dictionary to set attributes");
591 LIBVIRT_BEGIN_ALLOW_THREADS
;
592 c_retval
= virDomainGetSchedulerType(domain
, &nparams
);
593 LIBVIRT_END_ALLOW_THREADS
;
595 if (c_retval
== NULL
)
596 return VIR_PY_INT_FAIL
;
600 PyErr_Format(PyExc_LookupError
,
601 "Domain has no settable attributes");
605 if (VIR_ALLOC_N(params
, nparams
) < 0)
606 return PyErr_NoMemory();
608 LIBVIRT_BEGIN_ALLOW_THREADS
;
609 i_retval
= virDomainGetSchedulerParameters(domain
, params
, &nparams
);
610 LIBVIRT_END_ALLOW_THREADS
;
613 ret
= VIR_PY_INT_FAIL
;
617 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
621 LIBVIRT_BEGIN_ALLOW_THREADS
;
622 i_retval
= virDomainSetSchedulerParameters(domain
, new_params
, size
);
623 LIBVIRT_END_ALLOW_THREADS
;
626 ret
= VIR_PY_INT_FAIL
;
630 ret
= VIR_PY_INT_SUCCESS
;
633 virTypedParamsFree(params
, nparams
);
634 virTypedParamsFree(new_params
, size
);
639 libvirt_virDomainSetSchedulerParametersFlags(PyObject
*self ATTRIBUTE_UNUSED
,
643 PyObject
*pyobj_domain
, *info
;
644 PyObject
*ret
= NULL
;
650 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
652 if (!PyArg_ParseTuple(args
,
653 (char *)"OOI:virDomainSetSchedulerParametersFlags",
654 &pyobj_domain
, &info
, &flags
))
656 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
658 if ((size
= PyDict_Size(info
)) < 0)
662 PyErr_Format(PyExc_LookupError
,
663 "Need non-empty dictionary to set attributes");
667 LIBVIRT_BEGIN_ALLOW_THREADS
;
668 c_retval
= virDomainGetSchedulerType(domain
, &nparams
);
669 LIBVIRT_END_ALLOW_THREADS
;
671 if (c_retval
== NULL
)
672 return VIR_PY_INT_FAIL
;
676 PyErr_Format(PyExc_LookupError
,
677 "Domain has no settable attributes");
681 if (VIR_ALLOC_N(params
, nparams
) < 0)
682 return PyErr_NoMemory();
684 LIBVIRT_BEGIN_ALLOW_THREADS
;
685 i_retval
= virDomainGetSchedulerParametersFlags(domain
, params
, &nparams
,
687 LIBVIRT_END_ALLOW_THREADS
;
690 ret
= VIR_PY_INT_FAIL
;
694 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
698 LIBVIRT_BEGIN_ALLOW_THREADS
;
699 i_retval
= virDomainSetSchedulerParametersFlags(domain
, new_params
, size
,
701 LIBVIRT_END_ALLOW_THREADS
;
704 ret
= VIR_PY_INT_FAIL
;
708 ret
= VIR_PY_INT_SUCCESS
;
711 virTypedParamsFree(params
, nparams
);
712 virTypedParamsFree(new_params
, size
);
717 libvirt_virDomainSetBlkioParameters(PyObject
*self ATTRIBUTE_UNUSED
,
721 PyObject
*pyobj_domain
, *info
;
722 PyObject
*ret
= NULL
;
727 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
729 if (!PyArg_ParseTuple(args
,
730 (char *)"OOI:virDomainSetBlkioParameters",
731 &pyobj_domain
, &info
, &flags
))
733 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
735 if ((size
= PyDict_Size(info
)) < 0)
739 PyErr_Format(PyExc_LookupError
,
740 "Need non-empty dictionary to set attributes");
744 LIBVIRT_BEGIN_ALLOW_THREADS
;
745 i_retval
= virDomainGetBlkioParameters(domain
, NULL
, &nparams
, flags
);
746 LIBVIRT_END_ALLOW_THREADS
;
749 return VIR_PY_INT_FAIL
;
752 PyErr_Format(PyExc_LookupError
,
753 "Domain has no settable attributes");
757 if (VIR_ALLOC_N(params
, nparams
) < 0)
758 return PyErr_NoMemory();
760 LIBVIRT_BEGIN_ALLOW_THREADS
;
761 i_retval
= virDomainGetBlkioParameters(domain
, params
, &nparams
, flags
);
762 LIBVIRT_END_ALLOW_THREADS
;
765 ret
= VIR_PY_INT_FAIL
;
769 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
773 LIBVIRT_BEGIN_ALLOW_THREADS
;
774 i_retval
= virDomainSetBlkioParameters(domain
, new_params
, size
, flags
);
775 LIBVIRT_END_ALLOW_THREADS
;
778 ret
= VIR_PY_INT_FAIL
;
782 ret
= VIR_PY_INT_SUCCESS
;
785 virTypedParamsFree(params
, nparams
);
786 virTypedParamsFree(new_params
, size
);
791 libvirt_virDomainGetBlkioParameters(PyObject
*self ATTRIBUTE_UNUSED
,
795 PyObject
*pyobj_domain
;
796 PyObject
*ret
= NULL
;
800 virTypedParameterPtr params
;
802 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetBlkioParameters",
803 &pyobj_domain
, &flags
))
805 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
807 LIBVIRT_BEGIN_ALLOW_THREADS
;
808 i_retval
= virDomainGetBlkioParameters(domain
, NULL
, &nparams
, flags
);
809 LIBVIRT_END_ALLOW_THREADS
;
817 if (VIR_ALLOC_N(params
, nparams
) < 0)
818 return PyErr_NoMemory();
820 LIBVIRT_BEGIN_ALLOW_THREADS
;
821 i_retval
= virDomainGetBlkioParameters(domain
, params
, &nparams
, flags
);
822 LIBVIRT_END_ALLOW_THREADS
;
829 ret
= getPyVirTypedParameter(params
, nparams
);
832 virTypedParamsFree(params
, nparams
);
837 libvirt_virDomainSetMemoryParameters(PyObject
*self ATTRIBUTE_UNUSED
,
841 PyObject
*pyobj_domain
, *info
;
842 PyObject
*ret
= NULL
;
847 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
849 if (!PyArg_ParseTuple(args
,
850 (char *)"OOI:virDomainSetMemoryParameters",
851 &pyobj_domain
, &info
, &flags
))
853 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
855 if ((size
= PyDict_Size(info
)) < 0)
859 PyErr_Format(PyExc_LookupError
,
860 "Need non-empty dictionary to set attributes");
864 LIBVIRT_BEGIN_ALLOW_THREADS
;
865 i_retval
= virDomainGetMemoryParameters(domain
, NULL
, &nparams
, flags
);
866 LIBVIRT_END_ALLOW_THREADS
;
869 return VIR_PY_INT_FAIL
;
872 PyErr_Format(PyExc_LookupError
,
873 "Domain has no settable attributes");
877 if (VIR_ALLOC_N(params
, nparams
) < 0)
878 return PyErr_NoMemory();
880 LIBVIRT_BEGIN_ALLOW_THREADS
;
881 i_retval
= virDomainGetMemoryParameters(domain
, params
, &nparams
, flags
);
882 LIBVIRT_END_ALLOW_THREADS
;
885 ret
= VIR_PY_INT_FAIL
;
889 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
893 LIBVIRT_BEGIN_ALLOW_THREADS
;
894 i_retval
= virDomainSetMemoryParameters(domain
, new_params
, size
, flags
);
895 LIBVIRT_END_ALLOW_THREADS
;
898 ret
= VIR_PY_INT_FAIL
;
902 ret
= VIR_PY_INT_SUCCESS
;
905 virTypedParamsFree(params
, nparams
);
906 virTypedParamsFree(new_params
, size
);
911 libvirt_virDomainGetMemoryParameters(PyObject
*self ATTRIBUTE_UNUSED
,
915 PyObject
*pyobj_domain
;
916 PyObject
*ret
= NULL
;
920 virTypedParameterPtr params
;
922 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetMemoryParameters",
923 &pyobj_domain
, &flags
))
925 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
927 LIBVIRT_BEGIN_ALLOW_THREADS
;
928 i_retval
= virDomainGetMemoryParameters(domain
, NULL
, &nparams
, flags
);
929 LIBVIRT_END_ALLOW_THREADS
;
937 if (VIR_ALLOC_N(params
, nparams
) < 0)
938 return PyErr_NoMemory();
940 LIBVIRT_BEGIN_ALLOW_THREADS
;
941 i_retval
= virDomainGetMemoryParameters(domain
, params
, &nparams
, flags
);
942 LIBVIRT_END_ALLOW_THREADS
;
949 ret
= getPyVirTypedParameter(params
, nparams
);
952 virTypedParamsFree(params
, nparams
);
957 libvirt_virDomainSetNumaParameters(PyObject
*self ATTRIBUTE_UNUSED
,
961 PyObject
*pyobj_domain
, *info
;
962 PyObject
*ret
= NULL
;
967 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
969 if (!PyArg_ParseTuple(args
,
970 (char *)"OOI:virDomainSetNumaParameters",
971 &pyobj_domain
, &info
, &flags
))
973 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
975 if ((size
= PyDict_Size(info
)) < 0)
979 PyErr_Format(PyExc_LookupError
,
980 "Need non-empty dictionary to set attributes");
984 LIBVIRT_BEGIN_ALLOW_THREADS
;
985 i_retval
= virDomainGetNumaParameters(domain
, NULL
, &nparams
, flags
);
986 LIBVIRT_END_ALLOW_THREADS
;
989 return VIR_PY_INT_FAIL
;
992 PyErr_Format(PyExc_LookupError
,
993 "Domain has no settable attributes");
997 if (VIR_ALLOC_N(params
, nparams
) < 0)
998 return PyErr_NoMemory();
1000 LIBVIRT_BEGIN_ALLOW_THREADS
;
1001 i_retval
= virDomainGetNumaParameters(domain
, params
, &nparams
, flags
);
1002 LIBVIRT_END_ALLOW_THREADS
;
1005 ret
= VIR_PY_INT_FAIL
;
1009 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
1013 LIBVIRT_BEGIN_ALLOW_THREADS
;
1014 i_retval
= virDomainSetNumaParameters(domain
, new_params
, size
, flags
);
1015 LIBVIRT_END_ALLOW_THREADS
;
1018 ret
= VIR_PY_INT_FAIL
;
1022 ret
= VIR_PY_INT_SUCCESS
;
1025 virTypedParamsFree(params
, nparams
);
1026 virTypedParamsFree(new_params
, size
);
1031 libvirt_virDomainGetNumaParameters(PyObject
*self ATTRIBUTE_UNUSED
,
1034 virDomainPtr domain
;
1035 PyObject
*pyobj_domain
;
1036 PyObject
*ret
= NULL
;
1040 virTypedParameterPtr params
;
1042 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetNumaParameters",
1043 &pyobj_domain
, &flags
))
1045 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1047 LIBVIRT_BEGIN_ALLOW_THREADS
;
1048 i_retval
= virDomainGetNumaParameters(domain
, NULL
, &nparams
, flags
);
1049 LIBVIRT_END_ALLOW_THREADS
;
1055 return PyDict_New();
1057 if (VIR_ALLOC_N(params
, nparams
) < 0)
1058 return PyErr_NoMemory();
1060 LIBVIRT_BEGIN_ALLOW_THREADS
;
1061 i_retval
= virDomainGetNumaParameters(domain
, params
, &nparams
, flags
);
1062 LIBVIRT_END_ALLOW_THREADS
;
1069 ret
= getPyVirTypedParameter(params
, nparams
);
1072 virTypedParamsFree(params
, nparams
);
1077 libvirt_virDomainSetInterfaceParameters(PyObject
*self ATTRIBUTE_UNUSED
,
1080 virDomainPtr domain
;
1081 PyObject
*pyobj_domain
, *info
;
1082 PyObject
*ret
= NULL
;
1085 Py_ssize_t size
= 0;
1087 const char *device
= NULL
;
1088 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
1090 if (!PyArg_ParseTuple(args
,
1091 (char *)"OzOI:virDomainSetInterfaceParameters",
1092 &pyobj_domain
, &device
, &info
, &flags
))
1094 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1096 if ((size
= PyDict_Size(info
)) < 0)
1100 PyErr_Format(PyExc_LookupError
,
1101 "Need non-empty dictionary to set attributes");
1105 LIBVIRT_BEGIN_ALLOW_THREADS
;
1106 i_retval
= virDomainGetInterfaceParameters(domain
, device
, NULL
, &nparams
,
1108 LIBVIRT_END_ALLOW_THREADS
;
1111 return VIR_PY_INT_FAIL
;
1114 PyErr_Format(PyExc_LookupError
,
1115 "Domain has no settable attributes");
1119 if (VIR_ALLOC_N(params
, nparams
) < 0)
1120 return PyErr_NoMemory();
1122 LIBVIRT_BEGIN_ALLOW_THREADS
;
1123 i_retval
= virDomainGetInterfaceParameters(domain
, device
, params
, &nparams
,
1125 LIBVIRT_END_ALLOW_THREADS
;
1128 ret
= VIR_PY_INT_FAIL
;
1132 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
1136 LIBVIRT_BEGIN_ALLOW_THREADS
;
1137 i_retval
= virDomainSetInterfaceParameters(domain
, device
, new_params
, size
,
1139 LIBVIRT_END_ALLOW_THREADS
;
1142 ret
= VIR_PY_INT_FAIL
;
1146 ret
= VIR_PY_INT_SUCCESS
;
1149 virTypedParamsFree(params
, nparams
);
1150 virTypedParamsFree(new_params
, size
);
1155 libvirt_virDomainGetInterfaceParameters(PyObject
*self ATTRIBUTE_UNUSED
,
1158 virDomainPtr domain
;
1159 PyObject
*pyobj_domain
;
1160 PyObject
*ret
= NULL
;
1164 const char *device
= NULL
;
1165 virTypedParameterPtr params
;
1167 if (!PyArg_ParseTuple(args
, (char *)"OzI:virDomainGetInterfaceParameters",
1168 &pyobj_domain
, &device
, &flags
))
1170 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1172 LIBVIRT_BEGIN_ALLOW_THREADS
;
1173 i_retval
= virDomainGetInterfaceParameters(domain
, device
, NULL
, &nparams
,
1175 LIBVIRT_END_ALLOW_THREADS
;
1181 return PyDict_New();
1183 if (VIR_ALLOC_N(params
, nparams
) < 0)
1184 return PyErr_NoMemory();
1186 LIBVIRT_BEGIN_ALLOW_THREADS
;
1187 i_retval
= virDomainGetInterfaceParameters(domain
, device
, params
, &nparams
,
1189 LIBVIRT_END_ALLOW_THREADS
;
1196 ret
= getPyVirTypedParameter(params
, nparams
);
1199 virTypedParamsFree(params
, nparams
);
1204 libvirt_virDomainGetVcpus(PyObject
*self ATTRIBUTE_UNUSED
,
1207 virDomainPtr domain
;
1208 PyObject
*pyobj_domain
, *pyretval
= NULL
;
1209 PyObject
*pycpuinfo
= NULL
, *pycpumap
= NULL
;
1210 PyObject
*error
= NULL
;
1211 virDomainInfo dominfo
;
1212 virVcpuInfoPtr cpuinfo
= NULL
;
1213 unsigned char *cpumap
= NULL
;
1214 ssize_t cpumaplen
, i
;
1215 int i_retval
, cpunum
;
1217 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetVcpus",
1220 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1222 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1225 LIBVIRT_BEGIN_ALLOW_THREADS
;
1226 i_retval
= virDomainGetInfo(domain
, &dominfo
);
1227 LIBVIRT_END_ALLOW_THREADS
;
1232 if (VIR_ALLOC_N(cpuinfo
, dominfo
.nrVirtCpu
) < 0)
1233 return PyErr_NoMemory();
1235 cpumaplen
= VIR_CPU_MAPLEN(cpunum
);
1236 if (xalloc_oversized(dominfo
.nrVirtCpu
, cpumaplen
) ||
1237 VIR_ALLOC_N(cpumap
, dominfo
.nrVirtCpu
* cpumaplen
) < 0) {
1238 error
= PyErr_NoMemory();
1242 LIBVIRT_BEGIN_ALLOW_THREADS
;
1243 i_retval
= virDomainGetVcpus(domain
,
1244 cpuinfo
, dominfo
.nrVirtCpu
,
1246 LIBVIRT_END_ALLOW_THREADS
;
1249 error
= VIR_PY_NONE
;
1253 /* convert to a Python tuple of long objects */
1254 if ((pyretval
= PyTuple_New(2)) == NULL
)
1256 if ((pycpuinfo
= PyList_New(dominfo
.nrVirtCpu
)) == NULL
)
1259 VIR_PY_TUPLE_SET_GOTO(pyretval
, 0, pycpuinfo
, cleanup
);
1261 if ((pycpumap
= PyList_New(dominfo
.nrVirtCpu
)) == NULL
)
1264 VIR_PY_TUPLE_SET_GOTO(pyretval
, 1, pycpumap
, cleanup
);
1266 for (i
= 0; i
< dominfo
.nrVirtCpu
; i
++) {
1267 PyObject
*info
= PyTuple_New(4);
1272 VIR_PY_LIST_SET_GOTO(pycpuinfo
, i
, info
, cleanup
);
1274 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_intWrap(cpuinfo
[i
].number
),
1276 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_intWrap(cpuinfo
[i
].state
),
1278 VIR_PY_TUPLE_SET_GOTO(info
, 2,
1279 libvirt_ulonglongWrap(cpuinfo
[i
].cpuTime
),
1281 VIR_PY_TUPLE_SET_GOTO(info
, 3, libvirt_intWrap(cpuinfo
[i
].cpu
),
1284 for (i
= 0; i
< dominfo
.nrVirtCpu
; i
++) {
1285 PyObject
*info
= PyTuple_New(cpunum
);
1290 VIR_PY_LIST_SET_GOTO(pycpumap
, i
, info
, cleanup
);
1292 for (j
= 0; j
< cpunum
; j
++) {
1293 VIR_PY_TUPLE_SET_GOTO(info
, j
,
1294 PyBool_FromLong(VIR_CPU_USABLE(cpumap
,
1309 Py_XDECREF(pyretval
);
1315 libvirt_virDomainPinVcpu(PyObject
*self ATTRIBUTE_UNUSED
,
1318 virDomainPtr domain
;
1319 PyObject
*pyobj_domain
, *pycpumap
;
1320 PyObject
*ret
= NULL
;
1321 unsigned char *cpumap
;
1322 int cpumaplen
, vcpu
, cpunum
;
1325 if (!PyArg_ParseTuple(args
, (char *)"OiO:virDomainPinVcpu",
1326 &pyobj_domain
, &vcpu
, &pycpumap
))
1328 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1330 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1331 return VIR_PY_INT_FAIL
;
1333 if (virPyCpumapConvert(cpunum
, pycpumap
, &cpumap
, &cpumaplen
) < 0)
1336 LIBVIRT_BEGIN_ALLOW_THREADS
;
1337 i_retval
= virDomainPinVcpu(domain
, vcpu
, cpumap
, cpumaplen
);
1338 LIBVIRT_END_ALLOW_THREADS
;
1341 ret
= VIR_PY_INT_FAIL
;
1344 ret
= VIR_PY_INT_SUCCESS
;
1352 libvirt_virDomainPinVcpuFlags(PyObject
*self ATTRIBUTE_UNUSED
,
1355 virDomainPtr domain
;
1356 PyObject
*pyobj_domain
, *pycpumap
;
1357 PyObject
*ret
= NULL
;
1358 unsigned char *cpumap
;
1359 int cpumaplen
, vcpu
, cpunum
;
1363 if (!PyArg_ParseTuple(args
, (char *)"OiOI:virDomainPinVcpuFlags",
1364 &pyobj_domain
, &vcpu
, &pycpumap
, &flags
))
1366 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1368 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1369 return VIR_PY_INT_FAIL
;
1371 if (virPyCpumapConvert(cpunum
, pycpumap
, &cpumap
, &cpumaplen
) < 0)
1374 LIBVIRT_BEGIN_ALLOW_THREADS
;
1375 i_retval
= virDomainPinVcpuFlags(domain
, vcpu
, cpumap
, cpumaplen
, flags
);
1376 LIBVIRT_END_ALLOW_THREADS
;
1378 ret
= VIR_PY_INT_FAIL
;
1381 ret
= VIR_PY_INT_SUCCESS
;
1389 libvirt_virDomainGetVcpuPinInfo(PyObject
*self ATTRIBUTE_UNUSED
,
1392 virDomainPtr domain
;
1393 PyObject
*pyobj_domain
, *pycpumaps
= NULL
, *error
= NULL
;
1394 virDomainInfo dominfo
;
1395 unsigned char *cpumaps
= NULL
;
1396 ssize_t cpumaplen
, vcpu
, pcpu
;
1398 int i_retval
, cpunum
;
1400 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetVcpuPinInfo",
1401 &pyobj_domain
, &flags
))
1403 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1405 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1408 LIBVIRT_BEGIN_ALLOW_THREADS
;
1409 i_retval
= virDomainGetInfo(domain
, &dominfo
);
1410 LIBVIRT_END_ALLOW_THREADS
;
1415 cpumaplen
= VIR_CPU_MAPLEN(cpunum
);
1416 if (xalloc_oversized(dominfo
.nrVirtCpu
, cpumaplen
) ||
1417 VIR_ALLOC_N(cpumaps
, dominfo
.nrVirtCpu
* cpumaplen
) < 0)
1420 LIBVIRT_BEGIN_ALLOW_THREADS
;
1421 i_retval
= virDomainGetVcpuPinInfo(domain
, dominfo
.nrVirtCpu
,
1422 cpumaps
, cpumaplen
, flags
);
1423 LIBVIRT_END_ALLOW_THREADS
;
1426 error
= VIR_PY_NONE
;
1430 if ((pycpumaps
= PyList_New(dominfo
.nrVirtCpu
)) == NULL
)
1433 for (vcpu
= 0; vcpu
< dominfo
.nrVirtCpu
; vcpu
++) {
1434 PyObject
*mapinfo
= PyTuple_New(cpunum
);
1435 if (mapinfo
== NULL
)
1438 VIR_PY_LIST_SET_GOTO(pycpumaps
, vcpu
, mapinfo
, cleanup
);
1440 for (pcpu
= 0; pcpu
< cpunum
; pcpu
++) {
1441 VIR_PY_TUPLE_SET_GOTO(mapinfo
,
1443 PyBool_FromLong(VIR_CPU_USABLE(cpumaps
,
1458 Py_XDECREF(pycpumaps
);
1464 #if LIBVIR_CHECK_VERSION(0, 10, 0)
1466 libvirt_virDomainPinEmulator(PyObject
*self ATTRIBUTE_UNUSED
,
1469 virDomainPtr domain
;
1470 PyObject
*pyobj_domain
, *pycpumap
;
1471 unsigned char *cpumap
= NULL
;
1472 int cpumaplen
, cpunum
;
1476 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainPinEmulator",
1477 &pyobj_domain
, &pycpumap
, &flags
))
1480 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1482 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1483 return VIR_PY_INT_FAIL
;
1485 if (virPyCpumapConvert(cpunum
, pycpumap
, &cpumap
, &cpumaplen
) < 0)
1488 LIBVIRT_BEGIN_ALLOW_THREADS
;
1489 i_retval
= virDomainPinEmulator(domain
, cpumap
, cpumaplen
, flags
);
1490 LIBVIRT_END_ALLOW_THREADS
;
1495 return VIR_PY_INT_FAIL
;
1497 return VIR_PY_INT_SUCCESS
;
1502 libvirt_virDomainGetEmulatorPinInfo(PyObject
*self ATTRIBUTE_UNUSED
,
1505 virDomainPtr domain
;
1506 PyObject
*pyobj_domain
;
1508 unsigned char *cpumap
;
1515 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetEmulatorPinInfo",
1516 &pyobj_domain
, &flags
))
1519 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1521 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1524 cpumaplen
= VIR_CPU_MAPLEN(cpunum
);
1526 if (VIR_ALLOC_N(cpumap
, cpumaplen
) < 0)
1527 return PyErr_NoMemory();
1529 LIBVIRT_BEGIN_ALLOW_THREADS
;
1530 ret
= virDomainGetEmulatorPinInfo(domain
, cpumap
, cpumaplen
, flags
);
1531 LIBVIRT_END_ALLOW_THREADS
;
1538 if (!(pycpumap
= PyTuple_New(cpunum
))) {
1543 for (pcpu
= 0; pcpu
< cpunum
; pcpu
++) {
1544 VIR_PY_TUPLE_SET_GOTO(pycpumap
,
1546 PyBool_FromLong(VIR_CPU_USABLE(cpumap
,
1561 #endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
1563 #if LIBVIR_CHECK_VERSION(1, 2, 14)
1565 libvirt_virDomainGetIOThreadInfo(PyObject
*self ATTRIBUTE_UNUSED
,
1568 virDomainPtr domain
;
1569 PyObject
*pyobj_domain
;
1570 PyObject
*py_retval
= NULL
;
1571 PyObject
*py_iothrinfo
= NULL
;
1572 virDomainIOThreadInfoPtr
*iothrinfo
= NULL
;
1575 int niothreads
, cpunum
;
1577 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetIOThreadInfo",
1578 &pyobj_domain
, &flags
))
1580 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1582 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1585 LIBVIRT_BEGIN_ALLOW_THREADS
;
1586 niothreads
= virDomainGetIOThreadInfo(domain
, &iothrinfo
, flags
);
1587 LIBVIRT_END_ALLOW_THREADS
;
1589 if (niothreads
< 0) {
1590 py_retval
= VIR_PY_NONE
;
1594 /* convert to a Python list */
1595 if ((py_iothrinfo
= PyList_New(niothreads
)) == NULL
)
1598 /* NOTE: If there are zero IOThreads we will return an empty list */
1599 for (i
= 0; i
< niothreads
; i
++) {
1600 PyObject
*iothrtpl
= NULL
;
1601 PyObject
*iothrmap
= NULL
;
1602 virDomainIOThreadInfoPtr iothr
= iothrinfo
[i
];
1604 if (iothr
== NULL
) {
1605 py_retval
= VIR_PY_NONE
;
1609 if ((iothrtpl
= PyTuple_New(2)) == NULL
)
1612 VIR_PY_LIST_SET_GOTO(py_iothrinfo
, i
, iothrtpl
, cleanup
);
1614 /* 0: IOThread ID */
1615 VIR_PY_TUPLE_SET_GOTO(iothrtpl
, 0, libvirt_uintWrap(iothr
->iothread_id
),
1619 if ((iothrmap
= PyList_New(cpunum
)) == NULL
)
1622 VIR_PY_TUPLE_SET_GOTO(iothrtpl
, 1, iothrmap
, cleanup
);
1624 for (pcpu
= 0; pcpu
< cpunum
; pcpu
++)
1625 if (VIR_CPU_MAPLEN(pcpu
+ 1) > iothr
->cpumaplen
) {
1626 VIR_PY_LIST_SET_GOTO(iothrmap
, pcpu
, PyBool_FromLong(0), cleanup
);
1628 VIR_PY_LIST_SET_GOTO(iothrmap
, pcpu
,
1629 PyBool_FromLong(VIR_CPU_USED(iothr
->cpumap
,
1635 py_retval
= py_iothrinfo
;
1636 py_iothrinfo
= NULL
;
1639 if (niothreads
> 0) {
1640 for (i
= 0; i
< niothreads
; i
++)
1641 virDomainIOThreadInfoFree(iothrinfo
[i
]);
1643 VIR_FREE(iothrinfo
);
1644 Py_XDECREF(py_iothrinfo
);
1649 libvirt_virDomainPinIOThread(PyObject
*self ATTRIBUTE_UNUSED
,
1652 virDomainPtr domain
;
1653 PyObject
*pyobj_domain
, *pycpumap
;
1654 PyObject
*ret
= NULL
;
1655 unsigned char *cpumap
;
1656 int cpumaplen
, iothread_val
, cpunum
;
1660 if (!PyArg_ParseTuple(args
, (char *)"OiOI:virDomainPinIOThread",
1661 &pyobj_domain
, &iothread_val
, &pycpumap
, &flags
))
1663 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
1665 if ((cpunum
= getPyNodeCPUCount(virDomainGetConnect(domain
))) < 0)
1666 return VIR_PY_INT_FAIL
;
1668 if (virPyCpumapConvert(cpunum
, pycpumap
, &cpumap
, &cpumaplen
) < 0)
1671 LIBVIRT_BEGIN_ALLOW_THREADS
;
1672 i_retval
= virDomainPinIOThread(domain
, iothread_val
,
1673 cpumap
, cpumaplen
, flags
);
1674 LIBVIRT_END_ALLOW_THREADS
;
1677 ret
= VIR_PY_INT_FAIL
;
1680 ret
= VIR_PY_INT_SUCCESS
;
1687 #endif /* LIBVIR_CHECK_VERSION(1, 2, 14) */
1689 #if LIBVIR_CHECK_VERSION(4, 10, 0)
1691 static virPyTypedParamsHint virPyDomainSetIOThreadParams
[] = {
1692 { VIR_DOMAIN_IOTHREAD_POLL_MAX_NS
, VIR_TYPED_PARAM_ULLONG
},
1693 { VIR_DOMAIN_IOTHREAD_POLL_GROW
, VIR_TYPED_PARAM_UINT
},
1694 { VIR_DOMAIN_IOTHREAD_POLL_SHRINK
, VIR_TYPED_PARAM_UINT
},
1695 # if LIBVIR_CHECK_VERSION(8, 5, 0)
1696 { VIR_DOMAIN_IOTHREAD_THREAD_POOL_MIN
, VIR_TYPED_PARAM_INT
},
1697 { VIR_DOMAIN_IOTHREAD_THREAD_POOL_MAX
, VIR_TYPED_PARAM_INT
},
1698 # endif /* LIBVIR_CHECK_VERSION(8, 5, 0) */
1702 libvirt_virDomainSetIOThreadParams(PyObject
*self ATTRIBUTE_UNUSED
,
1705 PyObject
*pyobj_dom
= NULL
;
1706 PyObject
*pyobj_dict
= NULL
;
1710 virTypedParameterPtr params
= NULL
;
1715 if (!PyArg_ParseTuple(args
, (char *)"OiOI:virDomainSetIOThreadParams",
1716 &pyobj_dom
, &iothread_val
, &pyobj_dict
, &flags
))
1719 if (PyDict_Check(pyobj_dict
)) {
1720 if (virPyDictToTypedParams(pyobj_dict
, ¶ms
, &nparams
,
1721 virPyDomainSetIOThreadParams
,
1722 VIR_N_ELEMENTS(virPyDomainSetIOThreadParams
)) < 0) {
1726 PyErr_Format(PyExc_TypeError
, "IOThread polling params must be "
1731 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
1733 LIBVIRT_BEGIN_ALLOW_THREADS
;
1734 c_retval
= virDomainSetIOThreadParams(dom
, iothread_val
,
1735 params
, nparams
, flags
);
1736 LIBVIRT_END_ALLOW_THREADS
;
1738 virTypedParamsFree(params
, nparams
);
1740 return libvirt_intWrap(c_retval
);
1742 #endif /* LIBVIR_CHECK_VERSION(4, 10, 0) */
1744 /************************************************************************
1746 * Global error handler at the Python level *
1748 ************************************************************************/
1750 static PyObject
*libvirt_virPythonErrorFuncHandler
= NULL
;
1751 static PyObject
*libvirt_virPythonErrorFuncCtxt
= NULL
;
1754 libvirt_virGetLastError(PyObject
*self ATTRIBUTE_UNUSED
,
1755 PyObject
*args ATTRIBUTE_UNUSED
)
1760 if ((err
= virGetLastError()) == NULL
)
1763 if ((info
= PyTuple_New(9)) == NULL
)
1766 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_intWrap(err
->code
), error
);
1767 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_intWrap(err
->domain
), error
);
1768 VIR_PY_TUPLE_SET_GOTO(info
, 2, libvirt_constcharPtrWrap(err
->message
), error
);
1769 VIR_PY_TUPLE_SET_GOTO(info
, 3, libvirt_intWrap(err
->level
), error
);
1770 VIR_PY_TUPLE_SET_GOTO(info
, 4, libvirt_constcharPtrWrap(err
->str1
), error
);
1771 VIR_PY_TUPLE_SET_GOTO(info
, 5, libvirt_constcharPtrWrap(err
->str2
), error
);
1772 VIR_PY_TUPLE_SET_GOTO(info
, 6, libvirt_constcharPtrWrap(err
->str3
), error
);
1773 VIR_PY_TUPLE_SET_GOTO(info
, 7, libvirt_intWrap(err
->int1
), error
);
1774 VIR_PY_TUPLE_SET_GOTO(info
, 8, libvirt_intWrap(err
->int2
), error
);
1784 libvirt_virConnGetLastError(PyObject
*self ATTRIBUTE_UNUSED
,
1790 PyObject
*pyobj_conn
;
1792 if (!PyArg_ParseTuple(args
, (char *)"O:virConGetLastError", &pyobj_conn
))
1794 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
1796 LIBVIRT_BEGIN_ALLOW_THREADS
;
1797 err
= virConnGetLastError(conn
);
1798 LIBVIRT_END_ALLOW_THREADS
;
1803 if ((info
= PyTuple_New(9)) == NULL
)
1806 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_intWrap(err
->code
), error
);
1807 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_intWrap(err
->domain
), error
);
1808 VIR_PY_TUPLE_SET_GOTO(info
, 2, libvirt_constcharPtrWrap(err
->message
), error
);
1809 VIR_PY_TUPLE_SET_GOTO(info
, 3, libvirt_intWrap(err
->level
), error
);
1810 VIR_PY_TUPLE_SET_GOTO(info
, 4, libvirt_constcharPtrWrap(err
->str1
), error
);
1811 VIR_PY_TUPLE_SET_GOTO(info
, 5, libvirt_constcharPtrWrap(err
->str2
), error
);
1812 VIR_PY_TUPLE_SET_GOTO(info
, 6, libvirt_constcharPtrWrap(err
->str3
), error
);
1813 VIR_PY_TUPLE_SET_GOTO(info
, 7, libvirt_intWrap(err
->int1
), error
);
1814 VIR_PY_TUPLE_SET_GOTO(info
, 8, libvirt_intWrap(err
->int2
), error
);
1824 libvirt_virErrorFuncHandler(ATTRIBUTE_UNUSED
void *ctx
,
1827 PyObject
*list
= NULL
, *info
= NULL
;
1830 DEBUG("libvirt_virErrorFuncHandler(%p, %s, ...) called\n", ctx
,
1833 if ((err
== NULL
) || (err
->code
== VIR_ERR_OK
))
1836 LIBVIRT_ENSURE_THREAD_STATE
;
1838 if ((libvirt_virPythonErrorFuncHandler
== NULL
) ||
1839 (libvirt_virPythonErrorFuncHandler
== Py_None
)) {
1840 virDefaultErrorFunc(err
);
1842 if ((list
= PyTuple_New(2)) == NULL
)
1845 Py_XINCREF(libvirt_virPythonErrorFuncCtxt
);
1846 VIR_PY_TUPLE_SET_GOTO(list
, 0, libvirt_virPythonErrorFuncCtxt
, cleanup
);
1848 if ((info
= PyTuple_New(9)) == NULL
)
1851 VIR_PY_TUPLE_SET_GOTO(list
, 1, info
, cleanup
);
1853 VIR_PY_TUPLE_SET_GOTO(info
, 0, libvirt_intWrap(err
->code
), cleanup
);
1854 VIR_PY_TUPLE_SET_GOTO(info
, 1, libvirt_intWrap(err
->domain
), cleanup
);
1855 VIR_PY_TUPLE_SET_GOTO(info
, 2, libvirt_constcharPtrWrap(err
->message
), cleanup
);
1856 VIR_PY_TUPLE_SET_GOTO(info
, 3, libvirt_intWrap(err
->level
), cleanup
);
1857 VIR_PY_TUPLE_SET_GOTO(info
, 4, libvirt_constcharPtrWrap(err
->str1
), cleanup
);
1858 VIR_PY_TUPLE_SET_GOTO(info
, 5, libvirt_constcharPtrWrap(err
->str2
), cleanup
);
1859 VIR_PY_TUPLE_SET_GOTO(info
, 6, libvirt_constcharPtrWrap(err
->str3
), cleanup
);
1860 VIR_PY_TUPLE_SET_GOTO(info
, 7, libvirt_intWrap(err
->int1
), cleanup
);
1861 VIR_PY_TUPLE_SET_GOTO(info
, 8, libvirt_intWrap(err
->int2
), cleanup
);
1863 /* TODO pass conn and dom if available */
1864 result
= PyObject_Call(libvirt_virPythonErrorFuncHandler
, list
, NULL
);
1870 LIBVIRT_RELEASE_THREAD_STATE
;
1874 libvirt_virRegisterErrorHandler(ATTRIBUTE_UNUSED PyObject
*self
,
1877 PyObject
*py_retval
;
1879 PyObject
*pyobj_ctx
;
1881 if (!PyArg_ParseTuple(args
, (char *) "OO:virRegisterErrorHandler",
1882 &pyobj_f
, &pyobj_ctx
))
1885 DEBUG("libvirt_virRegisterErrorHandler(%p, %p) called\n", pyobj_ctx
,
1888 virSetErrorFunc(NULL
, libvirt_virErrorFuncHandler
);
1890 Py_XDECREF(libvirt_virPythonErrorFuncHandler
);
1891 Py_XDECREF(libvirt_virPythonErrorFuncCtxt
);
1893 if ((pyobj_f
== Py_None
) && (pyobj_ctx
== Py_None
)) {
1894 libvirt_virPythonErrorFuncHandler
= NULL
;
1895 libvirt_virPythonErrorFuncCtxt
= NULL
;
1897 Py_XINCREF(pyobj_ctx
);
1898 Py_XINCREF(pyobj_f
);
1900 /* TODO: check f is a function ! */
1901 libvirt_virPythonErrorFuncHandler
= pyobj_f
;
1902 libvirt_virPythonErrorFuncCtxt
= pyobj_ctx
;
1905 py_retval
= libvirt_intWrap(1);
1910 virConnectCredCallbackWrapper(virConnectCredentialPtr cred
,
1914 PyObject
*list
= NULL
;
1916 PyObject
*pyauth
= (PyObject
*)cbdata
;
1919 PyObject
*pyret
= NULL
;
1923 LIBVIRT_ENSURE_THREAD_STATE
;
1925 pycb
= PyList_GetItem(pyauth
, 1);
1926 pycbdata
= PyList_GetItem(pyauth
, 2);
1928 if ((list
= PyTuple_New(2)) == NULL
)
1931 if ((pycred
= PyTuple_New(ncred
)) == NULL
)
1934 VIR_PY_TUPLE_SET_GOTO(list
, 0, pycred
, cleanup
);
1936 for (i
= 0; i
< ncred
; i
++) {
1937 PyObject
*pycreditem
;
1938 if ((pycreditem
= PyList_New(5)) == NULL
)
1941 VIR_PY_TUPLE_SET_GOTO(pycred
, i
, pycreditem
, cleanup
);
1943 VIR_PY_LIST_SET_GOTO(pycreditem
, 0,
1944 libvirt_intWrap(cred
[i
].type
), cleanup
);
1945 VIR_PY_LIST_SET_GOTO(pycreditem
, 1,
1946 libvirt_constcharPtrWrap(cred
[i
].prompt
), cleanup
);
1948 if (cred
[i
].challenge
) {
1949 VIR_PY_LIST_SET_GOTO(pycreditem
, 2,
1950 libvirt_constcharPtrWrap(cred
[i
].challenge
),
1953 VIR_PY_LIST_SET_GOTO(pycreditem
, 2, VIR_PY_NONE
, cleanup
);
1955 if (cred
[i
].defresult
) {
1956 VIR_PY_LIST_SET_GOTO(pycreditem
, 3,
1957 libvirt_constcharPtrWrap(cred
[i
].defresult
),
1960 VIR_PY_LIST_SET_GOTO(pycreditem
, 3, VIR_PY_NONE
, cleanup
);
1962 VIR_PY_LIST_SET_GOTO(pycreditem
, 4, VIR_PY_NONE
, cleanup
);
1965 Py_XINCREF(pycbdata
);
1966 VIR_PY_TUPLE_SET_GOTO(list
, 1, pycbdata
, cleanup
);
1969 pyret
= PyObject_Call(pycb
, list
, NULL
);
1970 if (PyErr_Occurred()) {
1975 ret
= PyLong_AsLong(pyret
);
1977 for (i
= 0; i
< ncred
; i
++) {
1978 PyObject
*pycreditem
;
1980 char *result
= NULL
;
1981 pycreditem
= PyTuple_GetItem(pycred
, i
);
1982 pyresult
= PyList_GetItem(pycreditem
, 4);
1983 if (pyresult
!= Py_None
) {
1984 libvirt_charPtrUnwrap(pyresult
, &result
);
1987 if (result
!= NULL
) {
1988 cred
[i
].result
= result
;
1989 cred
[i
].resultlen
= strlen(result
);
1991 cred
[i
].result
= NULL
;
1992 cred
[i
].resultlen
= 0;
2001 LIBVIRT_RELEASE_THREAD_STATE
;
2008 libvirt_virConnectOpenAuth(PyObject
*self ATTRIBUTE_UNUSED
,
2011 PyObject
*py_retval
;
2012 virConnectPtr c_retval
= NULL
;
2017 PyObject
*pycredtype
;
2018 virConnectAuth auth
;
2020 memset(&auth
, 0, sizeof(auth
));
2021 if (!PyArg_ParseTuple(args
, (char *)"zOI:virConnectOpenAuth",
2022 &name
, &pyauth
, &flags
))
2025 pycredtype
= PyList_GetItem(pyauth
, 0);
2026 pycredcb
= PyList_GetItem(pyauth
, 1);
2028 auth
.ncredtype
= PyList_Size(pycredtype
);
2029 if (auth
.ncredtype
) {
2031 if (VIR_ALLOC_N(auth
.credtype
, auth
.ncredtype
) < 0)
2032 return PyErr_NoMemory();
2033 for (i
= 0; i
< auth
.ncredtype
; i
++) {
2035 val
= PyList_GetItem(pycredtype
, i
);
2036 if (libvirt_intUnwrap(val
, &auth
.credtype
[i
]) < 0)
2040 if (pycredcb
&& pycredcb
!= Py_None
)
2041 auth
.cb
= virConnectCredCallbackWrapper
;
2042 auth
.cbdata
= pyauth
;
2044 LIBVIRT_BEGIN_ALLOW_THREADS
;
2045 c_retval
= virConnectOpenAuth(name
, &auth
, flags
);
2046 LIBVIRT_END_ALLOW_THREADS
;
2049 VIR_FREE(auth
.credtype
);
2050 py_retval
= libvirt_virConnectPtrWrap((virConnectPtr
) c_retval
);
2055 /************************************************************************
2057 * Wrappers for functions where generator fails *
2059 ************************************************************************/
2062 libvirt_virGetVersion(PyObject
*self ATTRIBUTE_UNUSED
,
2066 unsigned long libVer
, typeVer
= 0;
2069 if (!PyArg_ParseTuple(args
, (char *) "|s:virGetVersion", &type
))
2072 LIBVIRT_BEGIN_ALLOW_THREADS
;
2074 c_retval
= virGetVersion(&libVer
, NULL
, NULL
);
2076 c_retval
= virGetVersion(&libVer
, type
, &typeVer
);
2077 LIBVIRT_END_ALLOW_THREADS
;
2083 return libvirt_intWrap(libVer
);
2085 return Py_BuildValue((char *) "kk", libVer
, typeVer
);
2089 libvirt_virConnectGetVersion(PyObject
*self ATTRIBUTE_UNUSED
,
2092 unsigned long hvVersion
;
2095 PyObject
*pyobj_conn
;
2097 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectGetVersion",
2100 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2102 LIBVIRT_BEGIN_ALLOW_THREADS
;
2103 c_retval
= virConnectGetVersion(conn
, &hvVersion
);
2104 LIBVIRT_END_ALLOW_THREADS
;
2107 return VIR_PY_INT_FAIL
;
2109 return libvirt_intWrap(hvVersion
);
2112 #if LIBVIR_CHECK_VERSION(1, 1, 3)
2114 libvirt_virConnectGetCPUModelNames(PyObject
*self ATTRIBUTE_UNUSED
,
2119 PyObject
*rv
= NULL
, *pyobj_conn
;
2120 char **models
= NULL
;
2122 unsigned int flags
= 0;
2123 const char *arch
= NULL
;
2125 if (!PyArg_ParseTuple(args
, (char *)"OsI:virConnectGetCPUModelNames",
2126 &pyobj_conn
, &arch
, &flags
))
2128 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2130 LIBVIRT_BEGIN_ALLOW_THREADS
;
2131 c_retval
= virConnectGetCPUModelNames(conn
, arch
, &models
, flags
);
2132 LIBVIRT_END_ALLOW_THREADS
;
2137 if ((rv
= PyList_New(c_retval
)) == NULL
)
2140 for (i
= 0; i
< c_retval
; i
++)
2141 VIR_PY_LIST_SET_GOTO(rv
, i
, libvirt_constcharPtrWrap(models
[i
]), error
);
2145 for (i
= 0; i
< c_retval
; i
++)
2146 VIR_FREE(models
[i
]);
2156 #endif /* LIBVIR_CHECK_VERSION(1, 1, 3) */
2159 libvirt_virConnectGetLibVersion(PyObject
*self ATTRIBUTE_UNUSED
,
2162 unsigned long libVer
;
2165 PyObject
*pyobj_conn
;
2167 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectGetLibVersion",
2170 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2172 LIBVIRT_BEGIN_ALLOW_THREADS
;
2173 c_retval
= virConnectGetLibVersion(conn
, &libVer
);
2174 LIBVIRT_END_ALLOW_THREADS
;
2177 return VIR_PY_INT_FAIL
;
2179 return libvirt_intWrap(libVer
);
2183 libvirt_virConnectListDomainsID(PyObject
*self ATTRIBUTE_UNUSED
,
2186 PyObject
*py_retval
;
2187 int *ids
= NULL
, c_retval
;
2190 PyObject
*pyobj_conn
;
2193 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListDomains", &pyobj_conn
))
2195 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2197 LIBVIRT_BEGIN_ALLOW_THREADS
;
2198 c_retval
= virConnectNumOfDomains(conn
);
2199 LIBVIRT_END_ALLOW_THREADS
;
2205 if (VIR_ALLOC_N(ids
, c_retval
) < 0)
2206 return PyErr_NoMemory();
2208 LIBVIRT_BEGIN_ALLOW_THREADS
;
2209 c_retval
= virConnectListDomains(conn
, ids
, c_retval
);
2210 LIBVIRT_END_ALLOW_THREADS
;
2213 py_retval
= VIR_PY_NONE
;
2218 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
2222 for (i
= 0; i
< c_retval
; i
++)
2223 VIR_PY_LIST_SET_GOTO(py_retval
, i
, libvirt_intWrap(ids
[i
]), error
);
2231 Py_XDECREF(py_retval
);
2235 #if LIBVIR_CHECK_VERSION(0, 9, 13)
2237 libvirt_virConnectListAllDomains(PyObject
*self ATTRIBUTE_UNUSED
,
2240 PyObject
*pyobj_conn
;
2241 PyObject
*py_retval
= NULL
;
2243 virDomainPtr
*doms
= NULL
;
2248 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllDomains",
2249 &pyobj_conn
, &flags
))
2251 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2253 LIBVIRT_BEGIN_ALLOW_THREADS
;
2254 c_retval
= virConnectListAllDomains(conn
, &doms
, flags
);
2255 LIBVIRT_END_ALLOW_THREADS
;
2260 if (!(py_retval
= PyList_New(c_retval
)))
2263 for (i
= 0; i
< c_retval
; i
++) {
2264 VIR_PY_LIST_SET_GOTO(py_retval
, i
, libvirt_virDomainPtrWrap(doms
[i
]), error
);
2265 /* python steals the pointer */
2270 for (i
= 0; i
< c_retval
; i
++)
2272 virDomainFree(doms
[i
]);
2277 Py_CLEAR(py_retval
);
2280 #endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
2283 libvirt_virConnectListDefinedDomains(PyObject
*self ATTRIBUTE_UNUSED
,
2286 PyObject
*py_retval
;
2287 char **names
= NULL
;
2291 PyObject
*pyobj_conn
;
2294 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListDefinedDomains",
2297 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2299 LIBVIRT_BEGIN_ALLOW_THREADS
;
2300 c_retval
= virConnectNumOfDefinedDomains(conn
);
2301 LIBVIRT_END_ALLOW_THREADS
;
2307 if (VIR_ALLOC_N(names
, c_retval
) < 0)
2308 return PyErr_NoMemory();
2310 LIBVIRT_BEGIN_ALLOW_THREADS
;
2311 c_retval
= virConnectListDefinedDomains(conn
, names
, c_retval
);
2312 LIBVIRT_END_ALLOW_THREADS
;
2315 py_retval
= VIR_PY_NONE
;
2320 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
2324 for (i
= 0; i
< c_retval
; i
++)
2325 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
2326 libvirt_constcharPtrWrap(names
[i
]), error
);
2331 for (i
= 0; i
< c_retval
; i
++)
2337 Py_CLEAR(py_retval
);
2341 #if LIBVIR_CHECK_VERSION(5, 6, 0)
2343 libvirt_virDomainListAllCheckpoints(PyObject
*self ATTRIBUTE_UNUSED
,
2346 PyObject
*py_retval
= NULL
;
2347 virDomainCheckpointPtr
*chks
= NULL
;
2351 PyObject
*pyobj_dom
;
2354 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainListAllCheckpoints",
2355 &pyobj_dom
, &flags
))
2357 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
2359 LIBVIRT_BEGIN_ALLOW_THREADS
;
2360 c_retval
= virDomainListAllCheckpoints(dom
, &chks
, flags
);
2361 LIBVIRT_END_ALLOW_THREADS
;
2366 if (!(py_retval
= PyList_New(c_retval
)))
2369 for (i
= 0; i
< c_retval
; i
++) {
2370 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
2371 libvirt_virDomainCheckpointPtrWrap(chks
[i
]), error
);
2376 for (i
= 0; i
< c_retval
; i
++)
2378 virDomainCheckpointFree(chks
[i
]);
2383 Py_CLEAR(py_retval
);
2388 libvirt_virDomainCheckpointListAllChildren(PyObject
*self ATTRIBUTE_UNUSED
,
2391 PyObject
*py_retval
= NULL
;
2392 virDomainCheckpointPtr
*chks
= NULL
;
2395 virDomainCheckpointPtr parent
;
2396 PyObject
*pyobj_parent
;
2399 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainCheckpointListAllChildren",
2400 &pyobj_parent
, &flags
))
2402 parent
= (virDomainCheckpointPtr
) PyvirDomainCheckpoint_Get(pyobj_parent
);
2404 LIBVIRT_BEGIN_ALLOW_THREADS
;
2405 c_retval
= virDomainCheckpointListAllChildren(parent
, &chks
, flags
);
2406 LIBVIRT_END_ALLOW_THREADS
;
2411 if (!(py_retval
= PyList_New(c_retval
)))
2414 for (i
= 0; i
< c_retval
; i
++) {
2415 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
2416 libvirt_virDomainCheckpointPtrWrap(chks
[i
]), error
);
2421 for (i
= 0; i
< c_retval
; i
++)
2423 virDomainCheckpointFree(chks
[i
]);
2428 Py_CLEAR(py_retval
);
2431 #endif /* LIBVIR_CHECK_VERSION(5, 6, 0) */
2434 libvirt_virDomainSnapshotListNames(PyObject
*self ATTRIBUTE_UNUSED
,
2437 PyObject
*py_retval
;
2438 char **names
= NULL
;
2442 PyObject
*pyobj_dom
;
2445 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainSnapshotListNames",
2446 &pyobj_dom
, &flags
))
2448 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
2450 LIBVIRT_BEGIN_ALLOW_THREADS
;
2451 c_retval
= virDomainSnapshotNum(dom
, flags
);
2452 LIBVIRT_END_ALLOW_THREADS
;
2458 if (VIR_ALLOC_N(names
, c_retval
) < 0)
2459 return PyErr_NoMemory();
2461 LIBVIRT_BEGIN_ALLOW_THREADS
;
2462 c_retval
= virDomainSnapshotListNames(dom
, names
, c_retval
, flags
);
2463 LIBVIRT_END_ALLOW_THREADS
;
2466 py_retval
= VIR_PY_NONE
;
2470 py_retval
= PyList_New(c_retval
);
2474 for (i
= 0; i
< c_retval
; i
++)
2475 VIR_PY_LIST_SET_GOTO(py_retval
, i
, libvirt_constcharPtrWrap(names
[i
]), error
);
2479 for (i
= 0; i
< c_retval
; i
++)
2485 Py_CLEAR(py_retval
);
2489 #if LIBVIR_CHECK_VERSION(0, 9, 13)
2491 libvirt_virDomainListAllSnapshots(PyObject
*self ATTRIBUTE_UNUSED
,
2494 PyObject
*py_retval
= NULL
;
2495 virDomainSnapshotPtr
*snaps
= NULL
;
2499 PyObject
*pyobj_dom
;
2502 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainListAllSnapshots",
2503 &pyobj_dom
, &flags
))
2505 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
2507 LIBVIRT_BEGIN_ALLOW_THREADS
;
2508 c_retval
= virDomainListAllSnapshots(dom
, &snaps
, flags
);
2509 LIBVIRT_END_ALLOW_THREADS
;
2514 if (!(py_retval
= PyList_New(c_retval
)))
2517 for (i
= 0; i
< c_retval
; i
++) {
2518 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
2519 libvirt_virDomainSnapshotPtrWrap(snaps
[i
]), error
);
2524 for (i
= 0; i
< c_retval
; i
++)
2526 virDomainSnapshotFree(snaps
[i
]);
2531 Py_CLEAR(py_retval
);
2534 #endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
2537 libvirt_virDomainSnapshotListChildrenNames(PyObject
*self ATTRIBUTE_UNUSED
,
2540 PyObject
*py_retval
;
2541 char **names
= NULL
;
2544 virDomainSnapshotPtr snap
;
2545 PyObject
*pyobj_snap
;
2548 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainSnapshotListChildrenNames",
2549 &pyobj_snap
, &flags
))
2551 snap
= (virDomainSnapshotPtr
) PyvirDomainSnapshot_Get(pyobj_snap
);
2553 LIBVIRT_BEGIN_ALLOW_THREADS
;
2554 c_retval
= virDomainSnapshotNumChildren(snap
, flags
);
2555 LIBVIRT_END_ALLOW_THREADS
;
2561 if (VIR_ALLOC_N(names
, c_retval
) < 0)
2562 return PyErr_NoMemory();
2564 LIBVIRT_BEGIN_ALLOW_THREADS
;
2565 c_retval
= virDomainSnapshotListChildrenNames(snap
, names
, c_retval
,
2567 LIBVIRT_END_ALLOW_THREADS
;
2570 py_retval
= VIR_PY_NONE
;
2575 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
2578 for (i
= 0; i
< c_retval
; i
++)
2579 VIR_PY_LIST_SET_GOTO(py_retval
, i
, libvirt_constcharPtrWrap(names
[i
]), error
);
2583 for (i
= 0; i
< c_retval
; i
++)
2589 Py_CLEAR(py_retval
);
2593 #if LIBVIR_CHECK_VERSION(0, 9, 13)
2595 libvirt_virDomainSnapshotListAllChildren(PyObject
*self ATTRIBUTE_UNUSED
,
2598 PyObject
*py_retval
= NULL
;
2599 virDomainSnapshotPtr
*snaps
= NULL
;
2602 virDomainSnapshotPtr parent
;
2603 PyObject
*pyobj_parent
;
2606 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainSnapshotListAllChildren",
2607 &pyobj_parent
, &flags
))
2609 parent
= (virDomainSnapshotPtr
) PyvirDomainSnapshot_Get(pyobj_parent
);
2611 LIBVIRT_BEGIN_ALLOW_THREADS
;
2612 c_retval
= virDomainSnapshotListAllChildren(parent
, &snaps
, flags
);
2613 LIBVIRT_END_ALLOW_THREADS
;
2618 if (!(py_retval
= PyList_New(c_retval
)))
2621 for (i
= 0; i
< c_retval
; i
++) {
2622 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
2623 libvirt_virDomainSnapshotPtrWrap(snaps
[i
]), error
);
2628 for (i
= 0; i
< c_retval
; i
++)
2630 virDomainSnapshotFree(snaps
[i
]);
2635 Py_CLEAR(py_retval
);
2638 #endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
2641 libvirt_virDomainRevertToSnapshot(PyObject
*self ATTRIBUTE_UNUSED
,
2645 virDomainSnapshotPtr snap
;
2646 PyObject
*pyobj_snap
;
2647 PyObject
*pyobj_dom
;
2650 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainRevertToSnapshot",
2651 &pyobj_dom
, &pyobj_snap
, &flags
))
2653 snap
= (virDomainSnapshotPtr
) PyvirDomainSnapshot_Get(pyobj_snap
);
2655 LIBVIRT_BEGIN_ALLOW_THREADS
;
2656 c_retval
= virDomainRevertToSnapshot(snap
, flags
);
2657 LIBVIRT_END_ALLOW_THREADS
;
2660 return VIR_PY_INT_FAIL
;
2662 return libvirt_intWrap(c_retval
);
2666 libvirt_virDomainGetInfo(PyObject
*self ATTRIBUTE_UNUSED
,
2669 PyObject
*py_retval
;
2671 virDomainPtr domain
;
2672 PyObject
*pyobj_domain
;
2675 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetInfo", &pyobj_domain
))
2677 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
2679 LIBVIRT_BEGIN_ALLOW_THREADS
;
2680 c_retval
= virDomainGetInfo(domain
, &info
);
2681 LIBVIRT_END_ALLOW_THREADS
;
2686 if ((py_retval
= PyList_New(5)) == NULL
)
2689 VIR_PY_LIST_SET_GOTO(py_retval
, 0, libvirt_intWrap(info
.state
), error
);
2690 VIR_PY_LIST_SET_GOTO(py_retval
, 1, libvirt_ulongWrap(info
.maxMem
), error
);
2691 VIR_PY_LIST_SET_GOTO(py_retval
, 2, libvirt_ulongWrap(info
.memory
), error
);
2692 VIR_PY_LIST_SET_GOTO(py_retval
, 3,
2693 libvirt_intWrap(info
.nrVirtCpu
), error
);
2694 VIR_PY_LIST_SET_GOTO(py_retval
, 4,
2695 libvirt_ulonglongWrap(info
.cpuTime
), error
);
2700 Py_XDECREF(py_retval
);
2705 libvirt_virDomainGetState(PyObject
*self ATTRIBUTE_UNUSED
,
2708 PyObject
*py_retval
;
2710 virDomainPtr domain
;
2711 PyObject
*pyobj_domain
;
2716 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetState",
2717 &pyobj_domain
, &flags
))
2720 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
2722 LIBVIRT_BEGIN_ALLOW_THREADS
;
2723 c_retval
= virDomainGetState(domain
, &state
, &reason
, flags
);
2724 LIBVIRT_END_ALLOW_THREADS
;
2729 if ((py_retval
= PyList_New(2)) == NULL
)
2732 VIR_PY_LIST_SET_GOTO(py_retval
, 0, libvirt_intWrap(state
), error
);
2733 VIR_PY_LIST_SET_GOTO(py_retval
, 1, libvirt_intWrap(reason
), error
);
2738 Py_XDECREF(py_retval
);
2743 libvirt_virDomainGetControlInfo(PyObject
*self ATTRIBUTE_UNUSED
,
2746 PyObject
*py_retval
;
2748 virDomainPtr domain
;
2749 PyObject
*pyobj_domain
;
2750 virDomainControlInfo info
;
2753 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetControlInfo",
2754 &pyobj_domain
, &flags
))
2756 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
2758 LIBVIRT_BEGIN_ALLOW_THREADS
;
2759 c_retval
= virDomainGetControlInfo(domain
, &info
, flags
);
2760 LIBVIRT_END_ALLOW_THREADS
;
2765 if ((py_retval
= PyList_New(3)) == NULL
)
2768 VIR_PY_LIST_SET_GOTO(py_retval
, 0, libvirt_intWrap(info
.state
), error
);
2769 VIR_PY_LIST_SET_GOTO(py_retval
, 1, libvirt_intWrap(info
.details
), error
);
2770 VIR_PY_LIST_SET_GOTO(py_retval
, 2,
2771 libvirt_ulonglongWrap(info
.stateTime
), error
);
2776 Py_XDECREF(py_retval
);
2781 libvirt_virDomainGetBlockInfo(PyObject
*self ATTRIBUTE_UNUSED
,
2784 PyObject
*py_retval
;
2786 virDomainPtr domain
;
2787 PyObject
*pyobj_domain
;
2788 virDomainBlockInfo info
;
2792 if (!PyArg_ParseTuple(args
, (char *)"OzI:virDomainGetBlockInfo",
2793 &pyobj_domain
, &path
, &flags
))
2795 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
2797 LIBVIRT_BEGIN_ALLOW_THREADS
;
2798 c_retval
= virDomainGetBlockInfo(domain
, path
, &info
, flags
);
2799 LIBVIRT_END_ALLOW_THREADS
;
2804 if ((py_retval
= PyList_New(3)) == NULL
)
2807 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
2808 libvirt_ulonglongWrap(info
.capacity
), error
);
2809 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
2810 libvirt_ulonglongWrap(info
.allocation
), error
);
2811 VIR_PY_LIST_SET_GOTO(py_retval
, 2,
2812 libvirt_ulonglongWrap(info
.physical
), error
);
2817 Py_XDECREF(py_retval
);
2822 libvirt_virNodeGetInfo(PyObject
*self ATTRIBUTE_UNUSED
,
2825 PyObject
*py_retval
;
2828 PyObject
*pyobj_conn
;
2831 if (!PyArg_ParseTuple(args
, (char *)"O:virNodeGetInfo", &pyobj_conn
))
2833 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2835 LIBVIRT_BEGIN_ALLOW_THREADS
;
2836 c_retval
= virNodeGetInfo(conn
, &info
);
2837 LIBVIRT_END_ALLOW_THREADS
;
2842 if ((py_retval
= PyList_New(8)) == NULL
)
2845 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
2846 libvirt_constcharPtrWrap(&info
.model
[0]), error
);
2847 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
2848 libvirt_ulongWrap(info
.memory
>> 10), error
);
2849 VIR_PY_LIST_SET_GOTO(py_retval
, 2, libvirt_intWrap(info
.cpus
), error
);
2850 VIR_PY_LIST_SET_GOTO(py_retval
, 3, libvirt_intWrap(info
.mhz
), error
);
2851 VIR_PY_LIST_SET_GOTO(py_retval
, 4, libvirt_intWrap(info
.nodes
), error
);
2852 VIR_PY_LIST_SET_GOTO(py_retval
, 5, libvirt_intWrap(info
.sockets
), error
);
2853 VIR_PY_LIST_SET_GOTO(py_retval
, 6, libvirt_intWrap(info
.cores
), error
);
2854 VIR_PY_LIST_SET_GOTO(py_retval
, 7, libvirt_intWrap(info
.threads
), error
);
2859 Py_XDECREF(py_retval
);
2864 libvirt_virNodeGetSecurityModel(PyObject
*self ATTRIBUTE_UNUSED
,
2867 PyObject
*py_retval
;
2870 PyObject
*pyobj_conn
;
2871 virSecurityModel model
;
2873 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetSecurityModel",
2876 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
2878 LIBVIRT_BEGIN_ALLOW_THREADS
;
2879 c_retval
= virNodeGetSecurityModel(conn
, &model
);
2880 LIBVIRT_END_ALLOW_THREADS
;
2885 if ((py_retval
= PyList_New(2)) == NULL
)
2888 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
2889 libvirt_constcharPtrWrap(&model
.model
[0]), error
);
2890 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
2891 libvirt_constcharPtrWrap(&model
.doi
[0]), error
);
2896 Py_XDECREF(py_retval
);
2901 libvirt_virDomainGetSecurityLabel(PyObject
*self ATTRIBUTE_UNUSED
,
2904 PyObject
*py_retval
;
2907 PyObject
*pyobj_dom
;
2908 virSecurityLabel label
;
2910 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetSecurityLabel",
2913 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
2915 LIBVIRT_BEGIN_ALLOW_THREADS
;
2916 c_retval
= virDomainGetSecurityLabel(dom
, &label
);
2917 LIBVIRT_END_ALLOW_THREADS
;
2922 if ((py_retval
= PyList_New(2)) == NULL
)
2925 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
2926 libvirt_constcharPtrWrap(&label
.label
[0]), error
);
2927 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
2928 libvirt_boolWrap(label
.enforcing
), error
);
2933 Py_XDECREF(py_retval
);
2937 #if LIBVIR_CHECK_VERSION(0, 10, 0)
2939 libvirt_virDomainGetSecurityLabelList(PyObject
*self ATTRIBUTE_UNUSED
,
2942 PyObject
*py_retval
;
2945 PyObject
*pyobj_dom
;
2946 virSecurityLabel
*labels
= NULL
;
2949 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetSecurityLabelList",
2953 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
2955 LIBVIRT_BEGIN_ALLOW_THREADS
;
2956 c_retval
= virDomainGetSecurityLabelList(dom
, &labels
);
2957 LIBVIRT_END_ALLOW_THREADS
;
2962 if (!(py_retval
= PyList_New(0)))
2965 for (i
= 0 ; i
< c_retval
; i
++) {
2968 if (!(entry
= PyList_New(2)))
2971 VIR_PY_LIST_APPEND_GOTO(py_retval
, entry
, error
);
2973 VIR_PY_LIST_SET_GOTO(entry
, 0,
2974 libvirt_constcharPtrWrap(&labels
[i
].label
[0]),
2976 VIR_PY_LIST_SET_GOTO(entry
, 1,
2977 libvirt_boolWrap(labels
[i
].enforcing
), error
);
2985 Py_CLEAR(py_retval
);
2988 #endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
2991 libvirt_virDomainGetUUID(PyObject
*self ATTRIBUTE_UNUSED
,
2994 unsigned char uuid
[VIR_UUID_BUFLEN
];
2995 virDomainPtr domain
;
2996 PyObject
*pyobj_domain
;
2999 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetUUID", &pyobj_domain
))
3001 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
3006 LIBVIRT_BEGIN_ALLOW_THREADS
;
3007 c_retval
= virDomainGetUUID(domain
, &uuid
[0]);
3008 LIBVIRT_END_ALLOW_THREADS
;
3013 return libvirt_charPtrSizeWrap((char *) &uuid
[0], VIR_UUID_BUFLEN
);
3017 libvirt_virDomainGetUUIDString(PyObject
*self ATTRIBUTE_UNUSED
,
3020 char uuidstr
[VIR_UUID_STRING_BUFLEN
];
3022 PyObject
*pyobj_dom
;
3025 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetUUIDString",
3028 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
3033 LIBVIRT_BEGIN_ALLOW_THREADS
;
3034 c_retval
= virDomainGetUUIDString(dom
, &uuidstr
[0]);
3035 LIBVIRT_END_ALLOW_THREADS
;
3040 return libvirt_constcharPtrWrap((char *) &uuidstr
[0]);
3044 libvirt_virDomainLookupByUUID(PyObject
*self ATTRIBUTE_UNUSED
,
3047 virDomainPtr c_retval
;
3049 PyObject
*pyobj_conn
;
3050 unsigned char * uuid
;
3053 if (!PyArg_ParseTuple(args
, (char *)"Oz#:virDomainLookupByUUID",
3054 &pyobj_conn
, &uuid
, &len
))
3056 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3058 if ((uuid
== NULL
) || (len
!= VIR_UUID_BUFLEN
))
3061 LIBVIRT_BEGIN_ALLOW_THREADS
;
3062 c_retval
= virDomainLookupByUUID(conn
, uuid
);
3063 LIBVIRT_END_ALLOW_THREADS
;
3065 return libvirt_virDomainPtrWrap((virDomainPtr
) c_retval
);
3070 libvirt_virConnectListNetworks(PyObject
*self ATTRIBUTE_UNUSED
,
3073 PyObject
*py_retval
;
3074 char **names
= NULL
;
3078 PyObject
*pyobj_conn
;
3081 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListNetworks",
3084 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3086 LIBVIRT_BEGIN_ALLOW_THREADS
;
3087 c_retval
= virConnectNumOfNetworks(conn
);
3088 LIBVIRT_END_ALLOW_THREADS
;
3094 if (VIR_ALLOC_N(names
, c_retval
) < 0)
3095 return PyErr_NoMemory();
3097 LIBVIRT_BEGIN_ALLOW_THREADS
;
3098 c_retval
= virConnectListNetworks(conn
, names
, c_retval
);
3099 LIBVIRT_END_ALLOW_THREADS
;
3102 py_retval
= VIR_PY_NONE
;
3107 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
3111 for (i
= 0; i
< c_retval
; i
++)
3112 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3113 libvirt_constcharPtrWrap(names
[i
]), error
);
3117 for (i
= 0; i
< c_retval
; i
++)
3123 Py_CLEAR(py_retval
);
3129 libvirt_virConnectListDefinedNetworks(PyObject
*self ATTRIBUTE_UNUSED
,
3132 PyObject
*py_retval
;
3133 char **names
= NULL
;
3137 PyObject
*pyobj_conn
;
3140 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListDefinedNetworks",
3143 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3145 LIBVIRT_BEGIN_ALLOW_THREADS
;
3146 c_retval
= virConnectNumOfDefinedNetworks(conn
);
3147 LIBVIRT_END_ALLOW_THREADS
;
3153 if (VIR_ALLOC_N(names
, c_retval
) < 0)
3154 return PyErr_NoMemory();
3156 LIBVIRT_BEGIN_ALLOW_THREADS
;
3157 c_retval
= virConnectListDefinedNetworks(conn
, names
, c_retval
);
3158 LIBVIRT_END_ALLOW_THREADS
;
3161 py_retval
= VIR_PY_NONE
;
3166 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
3169 for (i
= 0; i
< c_retval
; i
++)
3170 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3171 libvirt_constcharPtrWrap(names
[i
]), error
);
3175 for (i
= 0; i
< c_retval
; i
++)
3181 Py_CLEAR(py_retval
);
3185 #if LIBVIR_CHECK_VERSION(0, 10, 2)
3187 libvirt_virConnectListAllNetworks(PyObject
*self ATTRIBUTE_UNUSED
,
3190 PyObject
*pyobj_conn
;
3191 PyObject
*py_retval
= NULL
;
3193 virNetworkPtr
*nets
= NULL
;
3198 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllNetworks",
3199 &pyobj_conn
, &flags
))
3201 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3203 LIBVIRT_BEGIN_ALLOW_THREADS
;
3204 c_retval
= virConnectListAllNetworks(conn
, &nets
, flags
);
3205 LIBVIRT_END_ALLOW_THREADS
;
3210 if (!(py_retval
= PyList_New(c_retval
)))
3213 for (i
= 0; i
< c_retval
; i
++) {
3214 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3215 libvirt_virNetworkPtrWrap(nets
[i
]), error
);
3220 for (i
= 0; i
< c_retval
; i
++)
3222 virNetworkFree(nets
[i
]);
3227 Py_CLEAR(py_retval
);
3230 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
3234 libvirt_virNetworkGetUUID(PyObject
*self ATTRIBUTE_UNUSED
,
3237 unsigned char uuid
[VIR_UUID_BUFLEN
];
3238 virNetworkPtr domain
;
3239 PyObject
*pyobj_domain
;
3242 if (!PyArg_ParseTuple(args
, (char *)"O:virNetworkGetUUID", &pyobj_domain
))
3244 domain
= (virNetworkPtr
) PyvirNetwork_Get(pyobj_domain
);
3249 LIBVIRT_BEGIN_ALLOW_THREADS
;
3250 c_retval
= virNetworkGetUUID(domain
, &uuid
[0]);
3251 LIBVIRT_END_ALLOW_THREADS
;
3256 return libvirt_charPtrSizeWrap((char *) &uuid
[0], VIR_UUID_BUFLEN
);
3260 libvirt_virNetworkGetUUIDString(PyObject
*self ATTRIBUTE_UNUSED
,
3263 char uuidstr
[VIR_UUID_STRING_BUFLEN
];
3265 PyObject
*pyobj_net
;
3268 if (!PyArg_ParseTuple(args
, (char *)"O:virNetworkGetUUIDString",
3271 net
= (virNetworkPtr
) PyvirNetwork_Get(pyobj_net
);
3276 LIBVIRT_BEGIN_ALLOW_THREADS
;
3277 c_retval
= virNetworkGetUUIDString(net
, &uuidstr
[0]);
3278 LIBVIRT_END_ALLOW_THREADS
;
3283 return libvirt_constcharPtrWrap((char *) &uuidstr
[0]);
3287 libvirt_virNetworkLookupByUUID(PyObject
*self ATTRIBUTE_UNUSED
,
3290 virNetworkPtr c_retval
;
3292 PyObject
*pyobj_conn
;
3293 unsigned char * uuid
;
3296 if (!PyArg_ParseTuple(args
, (char *)"Oz#:virNetworkLookupByUUID",
3297 &pyobj_conn
, &uuid
, &len
))
3299 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3301 if ((uuid
== NULL
) || (len
!= VIR_UUID_BUFLEN
))
3304 LIBVIRT_BEGIN_ALLOW_THREADS
;
3305 c_retval
= virNetworkLookupByUUID(conn
, uuid
);
3306 LIBVIRT_END_ALLOW_THREADS
;
3308 return libvirt_virNetworkPtrWrap((virNetworkPtr
) c_retval
);
3313 libvirt_virDomainGetAutostart(PyObject
*self ATTRIBUTE_UNUSED
,
3316 int c_retval
, autostart
;
3317 virDomainPtr domain
;
3318 PyObject
*pyobj_domain
;
3320 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetAutostart",
3324 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
3326 LIBVIRT_BEGIN_ALLOW_THREADS
;
3327 c_retval
= virDomainGetAutostart(domain
, &autostart
);
3328 LIBVIRT_END_ALLOW_THREADS
;
3331 return VIR_PY_INT_FAIL
;
3333 return libvirt_intWrap(autostart
);
3338 libvirt_virNetworkGetAutostart(PyObject
*self ATTRIBUTE_UNUSED
,
3341 int c_retval
, autostart
;
3342 virNetworkPtr network
;
3343 PyObject
*pyobj_network
;
3345 if (!PyArg_ParseTuple(args
, (char *)"O:virNetworkGetAutostart",
3349 network
= (virNetworkPtr
) PyvirNetwork_Get(pyobj_network
);
3351 LIBVIRT_BEGIN_ALLOW_THREADS
;
3352 c_retval
= virNetworkGetAutostart(network
, &autostart
);
3353 LIBVIRT_END_ALLOW_THREADS
;
3356 return VIR_PY_INT_FAIL
;
3358 return libvirt_intWrap(autostart
);
3361 #if LIBVIR_CHECK_VERSION(7, 8, 0)
3363 libvirt_virNodeDeviceGetAutostart(PyObject
*self ATTRIBUTE_UNUSED
,
3366 int c_retval
, autostart
;
3367 virNodeDevicePtr dev
;
3368 PyObject
*pyobj_dev
;
3370 if (!PyArg_ParseTuple(args
, (char *)"O:virNodeDeviceGetAutostart",
3374 dev
= (virNodeDevicePtr
) PyvirNodeDevice_Get(pyobj_dev
);
3376 LIBVIRT_BEGIN_ALLOW_THREADS
;
3377 c_retval
= virNodeDeviceGetAutostart(dev
, &autostart
);
3378 LIBVIRT_END_ALLOW_THREADS
;
3381 return VIR_PY_INT_FAIL
;
3383 return libvirt_intWrap(autostart
);
3385 #endif /* LIBVIR_CHECK_VERSION(7, 8, 0) */
3388 libvirt_virNodeGetCellsFreeMemory(PyObject
*self ATTRIBUTE_UNUSED
,
3391 PyObject
*py_retval
;
3392 PyObject
*pyobj_conn
;
3393 int startCell
, maxCells
, c_retval
;
3396 unsigned long long *freeMems
;
3398 if (!PyArg_ParseTuple(args
, (char *)"Oii:virNodeGetCellsFreeMemory",
3399 &pyobj_conn
, &startCell
, &maxCells
))
3402 if ((startCell
< 0) || (maxCells
<= 0) || (startCell
+ maxCells
> 10000))
3405 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3406 if (VIR_ALLOC_N(freeMems
, maxCells
) < 0)
3407 return PyErr_NoMemory();
3409 LIBVIRT_BEGIN_ALLOW_THREADS
;
3410 c_retval
= virNodeGetCellsFreeMemory(conn
, freeMems
, startCell
, maxCells
);
3411 LIBVIRT_END_ALLOW_THREADS
;
3414 py_retval
= VIR_PY_NONE
;
3418 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
3421 for (i
= 0; i
< c_retval
; i
++)
3422 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3423 libvirt_ulonglongWrap(freeMems
[i
]), error
);
3430 Py_CLEAR(py_retval
);
3435 libvirt_virNodeGetCPUStats(PyObject
*self ATTRIBUTE_UNUSED
,
3438 PyObject
*ret
= NULL
;
3439 PyObject
*key
= NULL
;
3440 PyObject
*val
= NULL
;
3441 PyObject
*pyobj_conn
;
3444 int cpuNum
, c_retval
;
3447 virNodeCPUStatsPtr stats
= NULL
;
3449 if (!PyArg_ParseTuple(args
, (char *)"OiI:virNodeGetCPUStats",
3450 &pyobj_conn
, &cpuNum
, &flags
))
3452 conn
= (virConnectPtr
)(PyvirConnect_Get(pyobj_conn
));
3454 LIBVIRT_BEGIN_ALLOW_THREADS
;
3455 c_retval
= virNodeGetCPUStats(conn
, cpuNum
, NULL
, &nparams
, flags
);
3456 LIBVIRT_END_ALLOW_THREADS
;
3462 if (VIR_ALLOC_N(stats
, nparams
) < 0)
3463 return PyErr_NoMemory();
3465 LIBVIRT_BEGIN_ALLOW_THREADS
;
3466 c_retval
= virNodeGetCPUStats(conn
, cpuNum
, stats
, &nparams
, flags
);
3467 LIBVIRT_END_ALLOW_THREADS
;
3475 if (!(ret
= PyDict_New()))
3478 for (i
= 0; i
< nparams
; i
++) {
3479 key
= libvirt_constcharPtrWrap(stats
[i
].field
);
3480 val
= libvirt_ulonglongWrap(stats
[i
].value
);
3482 VIR_PY_DICT_SET_GOTO(ret
, key
, val
, error
);
3495 libvirt_virNodeGetMemoryStats(PyObject
*self ATTRIBUTE_UNUSED
,
3498 PyObject
*ret
= NULL
;
3499 PyObject
*key
= NULL
;
3500 PyObject
*val
= NULL
;
3501 PyObject
*pyobj_conn
;
3504 int cellNum
, c_retval
;
3507 virNodeMemoryStatsPtr stats
= NULL
;
3509 if (!PyArg_ParseTuple(args
, (char *)"OiI:virNodeGetMemoryStats",
3510 &pyobj_conn
, &cellNum
, &flags
))
3512 conn
= (virConnectPtr
)(PyvirConnect_Get(pyobj_conn
));
3514 LIBVIRT_BEGIN_ALLOW_THREADS
;
3515 c_retval
= virNodeGetMemoryStats(conn
, cellNum
, NULL
, &nparams
, flags
);
3516 LIBVIRT_END_ALLOW_THREADS
;
3522 if (VIR_ALLOC_N(stats
, nparams
) < 0)
3523 return PyErr_NoMemory();
3525 LIBVIRT_BEGIN_ALLOW_THREADS
;
3526 c_retval
= virNodeGetMemoryStats(conn
, cellNum
, stats
, &nparams
, flags
);
3527 LIBVIRT_END_ALLOW_THREADS
;
3535 if (!(ret
= PyDict_New()))
3538 for (i
= 0; i
< nparams
; i
++) {
3539 key
= libvirt_constcharPtrWrap(stats
[i
].field
);
3540 val
= libvirt_ulonglongWrap(stats
[i
].value
);
3542 VIR_PY_DICT_SET_GOTO(ret
, key
, val
, error
);
3555 libvirt_virConnectListStoragePools(PyObject
*self ATTRIBUTE_UNUSED
,
3558 PyObject
*py_retval
;
3559 char **names
= NULL
;
3563 PyObject
*pyobj_conn
;
3565 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListStoragePools",
3568 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3570 LIBVIRT_BEGIN_ALLOW_THREADS
;
3571 c_retval
= virConnectNumOfStoragePools(conn
);
3572 LIBVIRT_END_ALLOW_THREADS
;
3578 if (VIR_ALLOC_N(names
, c_retval
) < 0)
3579 return PyErr_NoMemory();
3581 LIBVIRT_BEGIN_ALLOW_THREADS
;
3582 c_retval
= virConnectListStoragePools(conn
, names
, c_retval
);
3583 LIBVIRT_END_ALLOW_THREADS
;
3586 py_retval
= VIR_PY_NONE
;
3591 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
3594 for (i
= 0; i
< c_retval
; i
++)
3595 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3596 libvirt_constcharPtrWrap(names
[i
]), error
);
3600 for (i
= 0; i
< c_retval
; i
++)
3606 Py_CLEAR(py_retval
);
3612 libvirt_virConnectListDefinedStoragePools(PyObject
*self ATTRIBUTE_UNUSED
,
3615 PyObject
*py_retval
;
3616 char **names
= NULL
;
3620 PyObject
*pyobj_conn
;
3622 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListDefinedStoragePools",
3625 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3627 LIBVIRT_BEGIN_ALLOW_THREADS
;
3628 c_retval
= virConnectNumOfDefinedStoragePools(conn
);
3629 LIBVIRT_END_ALLOW_THREADS
;
3635 if (VIR_ALLOC_N(names
, c_retval
) < 0)
3636 return PyErr_NoMemory();
3638 LIBVIRT_BEGIN_ALLOW_THREADS
;
3639 c_retval
= virConnectListDefinedStoragePools(conn
, names
, c_retval
);
3640 LIBVIRT_END_ALLOW_THREADS
;
3643 py_retval
= VIR_PY_NONE
;
3648 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
3652 for (i
= 0; i
< c_retval
; i
++)
3653 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3654 libvirt_constcharPtrWrap(names
[i
]), error
);
3659 for (i
= 0; i
< c_retval
; i
++)
3665 Py_CLEAR(py_retval
);
3669 #if LIBVIR_CHECK_VERSION(0, 10, 2)
3671 libvirt_virConnectListAllStoragePools(PyObject
*self ATTRIBUTE_UNUSED
,
3674 PyObject
*pyobj_conn
;
3675 PyObject
*py_retval
= NULL
;
3677 virStoragePoolPtr
*pools
= NULL
;
3682 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllStoragePools",
3683 &pyobj_conn
, &flags
))
3685 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
3687 LIBVIRT_BEGIN_ALLOW_THREADS
;
3688 c_retval
= virConnectListAllStoragePools(conn
, &pools
, flags
);
3689 LIBVIRT_END_ALLOW_THREADS
;
3694 if (!(py_retval
= PyList_New(c_retval
)))
3697 for (i
= 0; i
< c_retval
; i
++) {
3698 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3699 libvirt_virStoragePoolPtrWrap(pools
[i
]), error
);
3700 /* python steals the pointer */
3705 for (i
= 0; i
< c_retval
; i
++)
3707 virStoragePoolFree(pools
[i
]);
3712 Py_CLEAR(py_retval
);
3715 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
3718 libvirt_virStoragePoolListVolumes(PyObject
*self ATTRIBUTE_UNUSED
,
3721 PyObject
*py_retval
;
3722 char **names
= NULL
;
3725 virStoragePoolPtr pool
;
3726 PyObject
*pyobj_pool
;
3728 if (!PyArg_ParseTuple(args
, (char *)"O:virStoragePoolListVolumes",
3731 pool
= (virStoragePoolPtr
) PyvirStoragePool_Get(pyobj_pool
);
3733 LIBVIRT_BEGIN_ALLOW_THREADS
;
3734 c_retval
= virStoragePoolNumOfVolumes(pool
);
3735 LIBVIRT_END_ALLOW_THREADS
;
3741 if (VIR_ALLOC_N(names
, c_retval
) < 0)
3742 return PyErr_NoMemory();
3744 LIBVIRT_BEGIN_ALLOW_THREADS
;
3745 c_retval
= virStoragePoolListVolumes(pool
, names
, c_retval
);
3746 LIBVIRT_END_ALLOW_THREADS
;
3749 py_retval
= VIR_PY_NONE
;
3754 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
3758 for (i
= 0; i
< c_retval
; i
++)
3759 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3760 libvirt_constcharPtrWrap(names
[i
]), error
);
3764 for (i
= 0; i
< c_retval
; i
++)
3770 Py_CLEAR(py_retval
);
3774 #if LIBVIR_CHECK_VERSION(0, 10, 2)
3776 libvirt_virStoragePoolListAllVolumes(PyObject
*self ATTRIBUTE_UNUSED
,
3779 PyObject
*py_retval
= NULL
;
3780 virStoragePoolPtr pool
;
3781 virStorageVolPtr
*vols
= NULL
;
3785 PyObject
*pyobj_pool
;
3787 if (!PyArg_ParseTuple(args
, (char *)"OI:virStoragePoolListAllVolumes",
3788 &pyobj_pool
, &flags
))
3791 pool
= (virStoragePoolPtr
) PyvirStoragePool_Get(pyobj_pool
);
3793 LIBVIRT_BEGIN_ALLOW_THREADS
;
3794 c_retval
= virStoragePoolListAllVolumes(pool
, &vols
, flags
);
3795 LIBVIRT_END_ALLOW_THREADS
;
3800 if (!(py_retval
= PyList_New(c_retval
)))
3803 for (i
= 0; i
< c_retval
; i
++) {
3804 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
3805 libvirt_virStorageVolPtrWrap(vols
[i
]), error
);
3806 /* python steals the pointer */
3811 for (i
= 0; i
< c_retval
; i
++)
3813 virStorageVolFree(vols
[i
]);
3818 Py_CLEAR(py_retval
);
3821 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
3825 libvirt_virStoragePoolGetAutostart(PyObject
*self ATTRIBUTE_UNUSED
,
3828 int c_retval
, autostart
;
3829 virStoragePoolPtr pool
;
3830 PyObject
*pyobj_pool
;
3832 if (!PyArg_ParseTuple(args
, (char *)"O:virStoragePoolGetAutostart",
3836 pool
= (virStoragePoolPtr
) PyvirStoragePool_Get(pyobj_pool
);
3838 LIBVIRT_BEGIN_ALLOW_THREADS
;
3839 c_retval
= virStoragePoolGetAutostart(pool
, &autostart
);
3840 LIBVIRT_END_ALLOW_THREADS
;
3843 return VIR_PY_INT_FAIL
;
3845 return libvirt_intWrap(autostart
);
3849 libvirt_virStoragePoolGetInfo(PyObject
*self ATTRIBUTE_UNUSED
,
3852 PyObject
*py_retval
;
3854 virStoragePoolPtr pool
;
3855 PyObject
*pyobj_pool
;
3856 virStoragePoolInfo info
;
3858 if (!PyArg_ParseTuple(args
, (char *)"O:virStoragePoolGetInfo", &pyobj_pool
))
3860 pool
= (virStoragePoolPtr
) PyvirStoragePool_Get(pyobj_pool
);
3862 LIBVIRT_BEGIN_ALLOW_THREADS
;
3863 c_retval
= virStoragePoolGetInfo(pool
, &info
);
3864 LIBVIRT_END_ALLOW_THREADS
;
3869 if ((py_retval
= PyList_New(4)) == NULL
)
3872 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
3873 libvirt_intWrap(info
.state
), error
);
3874 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
3875 libvirt_ulonglongWrap(info
.capacity
), error
);
3876 VIR_PY_LIST_SET_GOTO(py_retval
, 2,
3877 libvirt_ulonglongWrap(info
.allocation
), error
);
3878 VIR_PY_LIST_SET_GOTO(py_retval
, 3,
3879 libvirt_ulonglongWrap(info
.available
), error
);
3884 Py_XDECREF(py_retval
);
3890 libvirt_virStorageVolGetInfo(PyObject
*self ATTRIBUTE_UNUSED
,
3893 PyObject
*py_retval
;
3895 virStorageVolPtr pool
;
3896 PyObject
*pyobj_pool
;
3897 virStorageVolInfo info
;
3899 if (!PyArg_ParseTuple(args
, (char *)"O:virStorageVolGetInfo", &pyobj_pool
))
3901 pool
= (virStorageVolPtr
) PyvirStorageVol_Get(pyobj_pool
);
3903 LIBVIRT_BEGIN_ALLOW_THREADS
;
3904 c_retval
= virStorageVolGetInfo(pool
, &info
);
3905 LIBVIRT_END_ALLOW_THREADS
;
3910 if ((py_retval
= PyList_New(3)) == NULL
)
3913 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
3914 libvirt_intWrap(info
.type
), error
);
3915 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
3916 libvirt_ulonglongWrap(info
.capacity
), error
);
3917 VIR_PY_LIST_SET_GOTO(py_retval
, 2,
3918 libvirt_ulonglongWrap(info
.allocation
), error
);
3923 Py_DECREF(py_retval
);
3927 #if LIBVIR_CHECK_VERSION(3, 0, 0)
3929 libvirt_virStorageVolGetInfoFlags(PyObject
*self ATTRIBUTE_UNUSED
,
3932 PyObject
*py_retval
;
3934 virStorageVolPtr pool
;
3935 PyObject
*pyobj_pool
;
3936 virStorageVolInfo info
;
3939 if (!PyArg_ParseTuple(args
, (char *)"OI:virStorageVolGetInfoFlags", &pyobj_pool
, &flags
))
3941 pool
= (virStorageVolPtr
) PyvirStorageVol_Get(pyobj_pool
);
3943 LIBVIRT_BEGIN_ALLOW_THREADS
;
3944 c_retval
= virStorageVolGetInfoFlags(pool
, &info
, flags
);
3945 LIBVIRT_END_ALLOW_THREADS
;
3950 if ((py_retval
= PyList_New(3)) == NULL
)
3953 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
3954 libvirt_intWrap(info
.type
), error
);
3955 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
3956 libvirt_ulonglongWrap(info
.capacity
), error
);
3957 VIR_PY_LIST_SET_GOTO(py_retval
, 2,
3958 libvirt_ulonglongWrap(info
.allocation
), error
);
3963 Py_DECREF(py_retval
);
3969 libvirt_virStoragePoolGetUUID(PyObject
*self ATTRIBUTE_UNUSED
,
3972 unsigned char uuid
[VIR_UUID_BUFLEN
];
3973 virStoragePoolPtr pool
;
3974 PyObject
*pyobj_pool
;
3977 if (!PyArg_ParseTuple(args
, (char *)"O:virStoragePoolGetUUID", &pyobj_pool
))
3979 pool
= (virStoragePoolPtr
) PyvirStoragePool_Get(pyobj_pool
);
3984 LIBVIRT_BEGIN_ALLOW_THREADS
;
3985 c_retval
= virStoragePoolGetUUID(pool
, &uuid
[0]);
3986 LIBVIRT_END_ALLOW_THREADS
;
3991 return libvirt_charPtrSizeWrap((char *) &uuid
[0], VIR_UUID_BUFLEN
);
3995 libvirt_virStoragePoolGetUUIDString(PyObject
*self ATTRIBUTE_UNUSED
,
3998 char uuidstr
[VIR_UUID_STRING_BUFLEN
];
3999 virStoragePoolPtr pool
;
4000 PyObject
*pyobj_pool
;
4003 if (!PyArg_ParseTuple(args
, (char *)"O:virStoragePoolGetUUIDString",
4006 pool
= (virStoragePoolPtr
) PyvirStoragePool_Get(pyobj_pool
);
4011 LIBVIRT_BEGIN_ALLOW_THREADS
;
4012 c_retval
= virStoragePoolGetUUIDString(pool
, &uuidstr
[0]);
4013 LIBVIRT_END_ALLOW_THREADS
;
4018 return libvirt_constcharPtrWrap((char *) &uuidstr
[0]);
4022 libvirt_virStoragePoolLookupByUUID(PyObject
*self ATTRIBUTE_UNUSED
,
4025 virStoragePoolPtr c_retval
;
4027 PyObject
*pyobj_conn
;
4028 unsigned char * uuid
;
4031 if (!PyArg_ParseTuple(args
, (char *)"Oz#:virStoragePoolLookupByUUID",
4032 &pyobj_conn
, &uuid
, &len
))
4034 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4036 if ((uuid
== NULL
) || (len
!= VIR_UUID_BUFLEN
))
4039 LIBVIRT_BEGIN_ALLOW_THREADS
;
4040 c_retval
= virStoragePoolLookupByUUID(conn
, uuid
);
4041 LIBVIRT_END_ALLOW_THREADS
;
4043 return libvirt_virStoragePoolPtrWrap((virStoragePoolPtr
) c_retval
);
4047 libvirt_virNodeListDevices(PyObject
*self ATTRIBUTE_UNUSED
,
4050 PyObject
*py_retval
;
4051 char **names
= NULL
;
4055 PyObject
*pyobj_conn
;
4059 if (!PyArg_ParseTuple(args
, (char *)"OzI:virNodeListDevices",
4060 &pyobj_conn
, &cap
, &flags
))
4062 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4064 LIBVIRT_BEGIN_ALLOW_THREADS
;
4065 c_retval
= virNodeNumOfDevices(conn
, cap
, flags
);
4066 LIBVIRT_END_ALLOW_THREADS
;
4072 if (VIR_ALLOC_N(names
, c_retval
) < 0)
4073 return PyErr_NoMemory();
4075 LIBVIRT_BEGIN_ALLOW_THREADS
;
4076 c_retval
= virNodeListDevices(conn
, cap
, names
, c_retval
, flags
);
4077 LIBVIRT_END_ALLOW_THREADS
;
4080 py_retval
= VIR_PY_NONE
;
4085 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
4089 for (i
= 0; i
< c_retval
; i
++)
4090 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4091 libvirt_constcharPtrWrap(names
[i
]), error
);
4095 for (i
= 0; i
< c_retval
; i
++)
4101 Py_CLEAR(py_retval
);
4105 #if LIBVIR_CHECK_VERSION(0, 10, 2)
4107 libvirt_virConnectListAllNodeDevices(PyObject
*self ATTRIBUTE_UNUSED
,
4110 PyObject
*pyobj_conn
;
4111 PyObject
*py_retval
= NULL
;
4113 virNodeDevicePtr
*devices
= NULL
;
4118 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllNodeDevices",
4119 &pyobj_conn
, &flags
))
4121 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4123 LIBVIRT_BEGIN_ALLOW_THREADS
;
4124 c_retval
= virConnectListAllNodeDevices(conn
, &devices
, flags
);
4125 LIBVIRT_END_ALLOW_THREADS
;
4130 if (!(py_retval
= PyList_New(c_retval
)))
4133 for (i
= 0; i
< c_retval
; i
++) {
4134 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4135 libvirt_virNodeDevicePtrWrap(devices
[i
]), error
);
4136 /* python steals the pointer */
4141 for (i
= 0; i
< c_retval
; i
++)
4143 virNodeDeviceFree(devices
[i
]);
4148 Py_CLEAR(py_retval
);
4151 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
4154 libvirt_virNodeDeviceListCaps(PyObject
*self ATTRIBUTE_UNUSED
,
4157 PyObject
*py_retval
;
4158 char **names
= NULL
;
4161 virNodeDevicePtr dev
;
4162 PyObject
*pyobj_dev
;
4164 if (!PyArg_ParseTuple(args
, (char *)"O:virNodeDeviceListCaps", &pyobj_dev
))
4166 dev
= (virNodeDevicePtr
) PyvirNodeDevice_Get(pyobj_dev
);
4168 LIBVIRT_BEGIN_ALLOW_THREADS
;
4169 c_retval
= virNodeDeviceNumOfCaps(dev
);
4170 LIBVIRT_END_ALLOW_THREADS
;
4176 if (VIR_ALLOC_N(names
, c_retval
) < 0)
4177 return PyErr_NoMemory();
4179 LIBVIRT_BEGIN_ALLOW_THREADS
;
4180 c_retval
= virNodeDeviceListCaps(dev
, names
, c_retval
);
4181 LIBVIRT_END_ALLOW_THREADS
;
4184 py_retval
= VIR_PY_NONE
;
4189 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
4193 for (i
= 0; i
< c_retval
; i
++)
4194 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4195 libvirt_constcharPtrWrap(names
[i
]), error
);
4199 for (i
= 0; i
< c_retval
; i
++)
4205 Py_CLEAR(py_retval
);
4210 libvirt_virSecretGetUUID(PyObject
*self ATTRIBUTE_UNUSED
,
4213 unsigned char uuid
[VIR_UUID_BUFLEN
];
4214 virSecretPtr secret
;
4215 PyObject
*pyobj_secret
;
4218 if (!PyArg_ParseTuple(args
, (char *)"O:virSecretGetUUID", &pyobj_secret
))
4220 secret
= (virSecretPtr
) PyvirSecret_Get(pyobj_secret
);
4225 LIBVIRT_BEGIN_ALLOW_THREADS
;
4226 c_retval
= virSecretGetUUID(secret
, &uuid
[0]);
4227 LIBVIRT_END_ALLOW_THREADS
;
4232 return libvirt_charPtrSizeWrap((char *) &uuid
[0], VIR_UUID_BUFLEN
);
4236 libvirt_virSecretGetUUIDString(PyObject
*self ATTRIBUTE_UNUSED
,
4239 char uuidstr
[VIR_UUID_STRING_BUFLEN
];
4241 PyObject
*pyobj_dom
;
4244 if (!PyArg_ParseTuple(args
, (char *)"O:virSecretGetUUIDString",
4247 dom
= (virSecretPtr
) PyvirSecret_Get(pyobj_dom
);
4252 LIBVIRT_BEGIN_ALLOW_THREADS
;
4253 c_retval
= virSecretGetUUIDString(dom
, &uuidstr
[0]);
4254 LIBVIRT_END_ALLOW_THREADS
;
4259 return libvirt_constcharPtrWrap((char *) &uuidstr
[0]);
4263 libvirt_virSecretLookupByUUID(PyObject
*self ATTRIBUTE_UNUSED
,
4266 virSecretPtr c_retval
;
4268 PyObject
*pyobj_conn
;
4269 unsigned char * uuid
;
4272 if (!PyArg_ParseTuple(args
, (char *)"Oz#:virSecretLookupByUUID",
4273 &pyobj_conn
, &uuid
, &len
))
4275 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4277 if ((uuid
== NULL
) || (len
!= VIR_UUID_BUFLEN
))
4280 LIBVIRT_BEGIN_ALLOW_THREADS
;
4281 c_retval
= virSecretLookupByUUID(conn
, uuid
);
4282 LIBVIRT_END_ALLOW_THREADS
;
4284 return libvirt_virSecretPtrWrap((virSecretPtr
) c_retval
);
4289 libvirt_virConnectListSecrets(PyObject
*self ATTRIBUTE_UNUSED
,
4292 PyObject
*py_retval
;
4293 char **uuids
= NULL
;
4297 PyObject
*pyobj_conn
;
4299 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListSecrets", &pyobj_conn
))
4301 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4303 LIBVIRT_BEGIN_ALLOW_THREADS
;
4304 c_retval
= virConnectNumOfSecrets(conn
);
4305 LIBVIRT_END_ALLOW_THREADS
;
4311 if (VIR_ALLOC_N(uuids
, c_retval
) < 0)
4312 return PyErr_NoMemory();
4314 LIBVIRT_BEGIN_ALLOW_THREADS
;
4315 c_retval
= virConnectListSecrets(conn
, uuids
, c_retval
);
4316 LIBVIRT_END_ALLOW_THREADS
;
4319 py_retval
= VIR_PY_NONE
;
4324 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
4328 for (i
= 0; i
< c_retval
; i
++)
4329 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4330 libvirt_constcharPtrWrap(uuids
[i
]), error
);
4335 for (i
= 0; i
< c_retval
; i
++)
4341 Py_CLEAR(py_retval
);
4345 #if LIBVIR_CHECK_VERSION(0, 10, 2)
4347 libvirt_virConnectListAllSecrets(PyObject
*self ATTRIBUTE_UNUSED
,
4350 PyObject
*pyobj_conn
;
4351 PyObject
*py_retval
= NULL
;
4353 virSecretPtr
*secrets
= NULL
;
4358 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllSecrets",
4359 &pyobj_conn
, &flags
))
4361 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4363 LIBVIRT_BEGIN_ALLOW_THREADS
;
4364 c_retval
= virConnectListAllSecrets(conn
, &secrets
, flags
);
4365 LIBVIRT_END_ALLOW_THREADS
;
4370 if (!(py_retval
= PyList_New(c_retval
)))
4373 for (i
= 0; i
< c_retval
; i
++) {
4374 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4375 libvirt_virSecretPtrWrap(secrets
[i
]), error
);
4376 /* python steals the pointer */
4381 for (i
= 0; i
< c_retval
; i
++)
4383 virSecretFree(secrets
[i
]);
4388 Py_CLEAR(py_retval
);
4391 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
4394 libvirt_virSecretGetValue(PyObject
*self ATTRIBUTE_UNUSED
,
4397 PyObject
*py_retval
;
4398 unsigned char *c_retval
;
4400 virSecretPtr secret
;
4401 PyObject
*pyobj_secret
;
4404 if (!PyArg_ParseTuple(args
, (char *)"OI:virSecretGetValue", &pyobj_secret
,
4407 secret
= (virSecretPtr
) PyvirSecret_Get(pyobj_secret
);
4409 LIBVIRT_BEGIN_ALLOW_THREADS
;
4410 c_retval
= virSecretGetValue(secret
, &size
, flags
);
4411 LIBVIRT_END_ALLOW_THREADS
;
4413 if (c_retval
== NULL
)
4416 py_retval
= libvirt_charPtrSizeWrap((char*)c_retval
, size
);
4423 libvirt_virSecretSetValue(PyObject
*self ATTRIBUTE_UNUSED
,
4427 virSecretPtr secret
;
4428 PyObject
*pyobj_secret
;
4433 if (!PyArg_ParseTuple(args
, (char *)"Oz#I:virSecretSetValue", &pyobj_secret
,
4434 &value
, &size
, &flags
))
4436 secret
= (virSecretPtr
) PyvirSecret_Get(pyobj_secret
);
4438 LIBVIRT_BEGIN_ALLOW_THREADS
;
4439 c_retval
= virSecretSetValue(secret
, (const unsigned char *)value
,
4440 (size_t) size
, flags
);
4441 LIBVIRT_END_ALLOW_THREADS
;
4443 return libvirt_intWrap(c_retval
);
4447 libvirt_virNWFilterGetUUID(PyObject
*self ATTRIBUTE_UNUSED
,
4450 unsigned char uuid
[VIR_UUID_BUFLEN
];
4451 virNWFilterPtr nwfilter
;
4452 PyObject
*pyobj_nwfilter
;
4455 if (!PyArg_ParseTuple(args
, (char *)"O:virNWFilterGetUUID",
4458 nwfilter
= (virNWFilterPtr
) PyvirNWFilter_Get(pyobj_nwfilter
);
4460 if (nwfilter
== NULL
)
4463 LIBVIRT_BEGIN_ALLOW_THREADS
;
4464 c_retval
= virNWFilterGetUUID(nwfilter
, &uuid
[0]);
4465 LIBVIRT_END_ALLOW_THREADS
;
4470 return libvirt_charPtrSizeWrap((char *) &uuid
[0], VIR_UUID_BUFLEN
);
4474 libvirt_virNWFilterGetUUIDString(PyObject
*self ATTRIBUTE_UNUSED
,
4477 char uuidstr
[VIR_UUID_STRING_BUFLEN
];
4478 virNWFilterPtr nwfilter
;
4479 PyObject
*pyobj_nwfilter
;
4482 if (!PyArg_ParseTuple(args
, (char *)"O:virNWFilterGetUUIDString",
4485 nwfilter
= (virNWFilterPtr
) PyvirNWFilter_Get(pyobj_nwfilter
);
4487 if (nwfilter
== NULL
)
4490 LIBVIRT_BEGIN_ALLOW_THREADS
;
4491 c_retval
= virNWFilterGetUUIDString(nwfilter
, &uuidstr
[0]);
4492 LIBVIRT_END_ALLOW_THREADS
;
4497 return libvirt_constcharPtrWrap((char *) &uuidstr
[0]);
4501 libvirt_virNWFilterLookupByUUID(PyObject
*self ATTRIBUTE_UNUSED
,
4504 virNWFilterPtr c_retval
;
4506 PyObject
*pyobj_conn
;
4507 unsigned char * uuid
;
4510 if (!PyArg_ParseTuple(args
, (char *)"Oz#:virNWFilterLookupByUUID",
4511 &pyobj_conn
, &uuid
, &len
))
4513 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4515 if ((uuid
== NULL
) || (len
!= VIR_UUID_BUFLEN
))
4518 LIBVIRT_BEGIN_ALLOW_THREADS
;
4519 c_retval
= virNWFilterLookupByUUID(conn
, uuid
);
4520 LIBVIRT_END_ALLOW_THREADS
;
4522 return libvirt_virNWFilterPtrWrap((virNWFilterPtr
) c_retval
);
4527 libvirt_virConnectListNWFilters(PyObject
*self ATTRIBUTE_UNUSED
,
4530 PyObject
*py_retval
;
4531 char **uuids
= NULL
;
4535 PyObject
*pyobj_conn
;
4537 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListNWFilters",
4540 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4542 LIBVIRT_BEGIN_ALLOW_THREADS
;
4543 c_retval
= virConnectNumOfNWFilters(conn
);
4544 LIBVIRT_END_ALLOW_THREADS
;
4550 if (VIR_ALLOC_N(uuids
, c_retval
) < 0)
4551 return PyErr_NoMemory();
4553 LIBVIRT_BEGIN_ALLOW_THREADS
;
4554 c_retval
= virConnectListNWFilters(conn
, uuids
, c_retval
);
4555 LIBVIRT_END_ALLOW_THREADS
;
4558 py_retval
= VIR_PY_NONE
;
4563 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
4567 for (i
= 0; i
< c_retval
; i
++)
4568 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4569 libvirt_constcharPtrWrap(uuids
[i
]), error
);
4573 for (i
= 0; i
< c_retval
; i
++)
4579 Py_CLEAR(py_retval
);
4583 #if LIBVIR_CHECK_VERSION(0, 10, 2)
4585 libvirt_virConnectListAllNWFilters(PyObject
*self ATTRIBUTE_UNUSED
,
4588 PyObject
*pyobj_conn
;
4589 PyObject
*py_retval
= NULL
;
4591 virNWFilterPtr
*filters
= NULL
;
4596 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllNWFilters",
4597 &pyobj_conn
, &flags
))
4599 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4601 LIBVIRT_BEGIN_ALLOW_THREADS
;
4602 c_retval
= virConnectListAllNWFilters(conn
, &filters
, flags
);
4603 LIBVIRT_END_ALLOW_THREADS
;
4608 if (!(py_retval
= PyList_New(c_retval
)))
4611 for (i
= 0; i
< c_retval
; i
++) {
4612 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4613 libvirt_virNWFilterPtrWrap(filters
[i
]), error
);
4614 /* python steals the pointer */
4619 for (i
= 0; i
< c_retval
; i
++)
4621 virNWFilterFree(filters
[i
]);
4626 Py_CLEAR(py_retval
);
4629 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
4631 #if LIBVIR_CHECK_VERSION(4, 5, 0)
4633 libvirt_virConnectListAllNWFilterBindings(PyObject
*self ATTRIBUTE_UNUSED
,
4636 PyObject
*pyobj_conn
;
4637 PyObject
*py_retval
= NULL
;
4639 virNWFilterBindingPtr
*bindings
= NULL
;
4644 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllNWFilterBindings",
4645 &pyobj_conn
, &flags
))
4647 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4649 LIBVIRT_BEGIN_ALLOW_THREADS
;
4650 c_retval
= virConnectListAllNWFilterBindings(conn
, &bindings
, flags
);
4651 LIBVIRT_END_ALLOW_THREADS
;
4656 if (!(py_retval
= PyList_New(c_retval
)))
4659 for (i
= 0; i
< c_retval
; i
++) {
4660 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4661 libvirt_virNWFilterBindingPtrWrap(bindings
[i
]), error
);
4662 /* python steals the pointer */
4667 for (i
= 0; i
< c_retval
; i
++)
4669 virNWFilterBindingFree(bindings
[i
]);
4674 Py_CLEAR(py_retval
);
4677 #endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
4680 libvirt_virConnectListInterfaces(PyObject
*self ATTRIBUTE_UNUSED
,
4683 PyObject
*py_retval
;
4684 char **names
= NULL
;
4688 PyObject
*pyobj_conn
;
4691 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListInterfaces",
4694 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4696 LIBVIRT_BEGIN_ALLOW_THREADS
;
4697 c_retval
= virConnectNumOfInterfaces(conn
);
4698 LIBVIRT_END_ALLOW_THREADS
;
4704 if (VIR_ALLOC_N(names
, c_retval
) < 0)
4705 return PyErr_NoMemory();
4707 LIBVIRT_BEGIN_ALLOW_THREADS
;
4708 c_retval
= virConnectListInterfaces(conn
, names
, c_retval
);
4709 LIBVIRT_END_ALLOW_THREADS
;
4712 py_retval
= VIR_PY_NONE
;
4717 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
4721 for (i
= 0; i
< c_retval
; i
++)
4722 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4723 libvirt_constcharPtrWrap(names
[i
]), error
);
4727 for (i
= 0; i
< c_retval
; i
++)
4733 Py_CLEAR(py_retval
);
4739 libvirt_virConnectListDefinedInterfaces(PyObject
*self ATTRIBUTE_UNUSED
,
4742 PyObject
*py_retval
;
4743 char **names
= NULL
;
4747 PyObject
*pyobj_conn
;
4750 if (!PyArg_ParseTuple(args
, (char *)"O:virConnectListDefinedInterfaces",
4753 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4755 LIBVIRT_BEGIN_ALLOW_THREADS
;
4756 c_retval
= virConnectNumOfDefinedInterfaces(conn
);
4757 LIBVIRT_END_ALLOW_THREADS
;
4763 if (VIR_ALLOC_N(names
, c_retval
) < 0)
4764 return PyErr_NoMemory();
4766 LIBVIRT_BEGIN_ALLOW_THREADS
;
4767 c_retval
= virConnectListDefinedInterfaces(conn
, names
, c_retval
);
4768 LIBVIRT_END_ALLOW_THREADS
;
4771 py_retval
= VIR_PY_NONE
;
4776 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
4780 for (i
= 0; i
< c_retval
; i
++)
4781 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4782 libvirt_constcharPtrWrap(names
[i
]), error
);
4787 for (i
= 0; i
< c_retval
; i
++)
4793 Py_CLEAR(py_retval
);
4798 #if LIBVIR_CHECK_VERSION(0, 10, 2)
4800 libvirt_virConnectListAllInterfaces(PyObject
*self ATTRIBUTE_UNUSED
,
4803 PyObject
*pyobj_conn
;
4804 PyObject
*py_retval
= NULL
;
4806 virInterfacePtr
*ifaces
= NULL
;
4811 if (!PyArg_ParseTuple(args
, (char *)"OI:virConnectListAllInterfaces",
4812 &pyobj_conn
, &flags
))
4814 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4816 LIBVIRT_BEGIN_ALLOW_THREADS
;
4817 c_retval
= virConnectListAllInterfaces(conn
, &ifaces
, flags
);
4818 LIBVIRT_END_ALLOW_THREADS
;
4823 if (!(py_retval
= PyList_New(c_retval
)))
4826 for (i
= 0; i
< c_retval
; i
++) {
4827 VIR_PY_LIST_SET_GOTO(py_retval
, i
,
4828 libvirt_virInterfacePtrWrap(ifaces
[i
]), error
);
4829 /* python steals the pointer */
4834 for (i
= 0; i
< c_retval
; i
++)
4836 virInterfaceFree(ifaces
[i
]);
4841 Py_CLEAR(py_retval
);
4844 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
4847 libvirt_virConnectBaselineCPU(PyObject
*self ATTRIBUTE_UNUSED
,
4850 PyObject
*pyobj_conn
;
4854 char **xmlcpus
= NULL
;
4857 PyObject
*pybase_cpu
;
4860 if (!PyArg_ParseTuple(args
, (char *)"OOI:virConnectBaselineCPU",
4861 &pyobj_conn
, &list
, &flags
))
4863 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
4865 if (PyList_Check(list
)) {
4866 ncpus
= PyList_Size(list
);
4867 if (VIR_ALLOC_N(xmlcpus
, ncpus
) < 0)
4868 return PyErr_NoMemory();
4870 for (i
= 0; i
< ncpus
; i
++) {
4871 if (libvirt_charPtrUnwrap(PyList_GetItem(list
, i
),
4872 &(xmlcpus
[i
])) < 0) {
4873 for (j
= 0 ; j
< i
; j
++)
4874 VIR_FREE(xmlcpus
[j
]);
4881 LIBVIRT_BEGIN_ALLOW_THREADS
;
4882 base_cpu
= virConnectBaselineCPU(conn
, (const char **)xmlcpus
, ncpus
, flags
);
4883 LIBVIRT_END_ALLOW_THREADS
;
4885 for (i
= 0 ; i
< ncpus
; i
++)
4886 VIR_FREE(xmlcpus
[i
]);
4889 if (base_cpu
== NULL
)
4892 pybase_cpu
= libvirt_constcharPtrWrap(base_cpu
);
4900 libvirt_virDomainGetJobInfo(PyObject
*self ATTRIBUTE_UNUSED
,
4903 PyObject
*py_retval
;
4905 virDomainPtr domain
;
4906 PyObject
*pyobj_domain
;
4907 virDomainJobInfo info
;
4909 if (!PyArg_ParseTuple(args
, (char *)"O:virDomainGetJobInfo", &pyobj_domain
))
4911 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
4913 LIBVIRT_BEGIN_ALLOW_THREADS
;
4914 c_retval
= virDomainGetJobInfo(domain
, &info
);
4915 LIBVIRT_END_ALLOW_THREADS
;
4920 if ((py_retval
= PyList_New(12)) == NULL
)
4923 VIR_PY_LIST_SET_GOTO(py_retval
, 0,
4924 libvirt_intWrap(info
.type
), error
);
4925 VIR_PY_LIST_SET_GOTO(py_retval
, 1,
4926 libvirt_ulonglongWrap(info
.timeElapsed
), error
);
4927 VIR_PY_LIST_SET_GOTO(py_retval
, 2,
4928 libvirt_ulonglongWrap(info
.timeRemaining
), error
);
4929 VIR_PY_LIST_SET_GOTO(py_retval
, 3,
4930 libvirt_ulonglongWrap(info
.dataTotal
), error
);
4931 VIR_PY_LIST_SET_GOTO(py_retval
, 4,
4932 libvirt_ulonglongWrap(info
.dataProcessed
), error
);
4933 VIR_PY_LIST_SET_GOTO(py_retval
, 5,
4934 libvirt_ulonglongWrap(info
.dataRemaining
), error
);
4935 VIR_PY_LIST_SET_GOTO(py_retval
, 6,
4936 libvirt_ulonglongWrap(info
.memTotal
), error
);
4937 VIR_PY_LIST_SET_GOTO(py_retval
, 7,
4938 libvirt_ulonglongWrap(info
.memProcessed
), error
);
4939 VIR_PY_LIST_SET_GOTO(py_retval
, 8,
4940 libvirt_ulonglongWrap(info
.memRemaining
), error
);
4941 VIR_PY_LIST_SET_GOTO(py_retval
, 9,
4942 libvirt_ulonglongWrap(info
.fileTotal
), error
);
4943 VIR_PY_LIST_SET_GOTO(py_retval
, 10,
4944 libvirt_ulonglongWrap(info
.fileProcessed
), error
);
4945 VIR_PY_LIST_SET_GOTO(py_retval
, 11,
4946 libvirt_ulonglongWrap(info
.fileRemaining
), error
);
4951 Py_DECREF(py_retval
);
4955 #if LIBVIR_CHECK_VERSION(1, 0, 3)
4957 libvirt_virDomainGetJobStats(PyObject
*self ATTRIBUTE_UNUSED
,
4960 PyObject
*pyobj_domain
;
4961 virDomainPtr domain
;
4963 virTypedParameterPtr params
= NULL
;
4966 PyObject
*dict
= NULL
;
4969 if (!PyArg_ParseTuple(args
, (char *) "OI:virDomainGetJobStats",
4970 &pyobj_domain
, &flags
))
4972 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
4974 LIBVIRT_BEGIN_ALLOW_THREADS
;
4975 rc
= virDomainGetJobStats(domain
, &type
, ¶ms
, &nparams
, flags
);
4976 LIBVIRT_END_ALLOW_THREADS
;
4981 if (!(dict
= getPyVirTypedParameter(params
, nparams
)))
4984 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("type"),
4985 libvirt_intWrap(type
), error
);
4988 virTypedParamsFree(params
, nparams
);
4995 #endif /* LIBVIR_CHECK_VERSION(1, 0, 3) */
4998 libvirt_virDomainGetBlockJobInfo(PyObject
*self ATTRIBUTE_UNUSED
,
5001 virDomainPtr domain
;
5002 PyObject
*pyobj_domain
;
5005 virDomainBlockJobInfo info
;
5009 if (!PyArg_ParseTuple(args
, (char *)"OzI:virDomainGetBlockJobInfo",
5010 &pyobj_domain
, &path
, &flags
))
5012 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
5014 LIBVIRT_BEGIN_ALLOW_THREADS
;
5015 c_ret
= virDomainGetBlockJobInfo(domain
, path
, &info
, flags
);
5016 LIBVIRT_END_ALLOW_THREADS
;
5021 if ((dict
= PyDict_New()) == NULL
)
5027 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("type"),
5028 libvirt_intWrap(info
.type
), error
);
5029 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("bandwidth"),
5030 libvirt_ulongWrap(info
.bandwidth
), error
);
5031 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("cur"),
5032 libvirt_ulonglongWrap(info
.cur
), error
);
5033 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("end"),
5034 libvirt_ulonglongWrap(info
.end
), error
);
5044 libvirt_virDomainSetBlockIoTune(PyObject
*self ATTRIBUTE_UNUSED
,
5047 virDomainPtr domain
;
5048 PyObject
*pyobj_domain
, *info
;
5049 PyObject
*ret
= NULL
;
5052 Py_ssize_t size
= 0;
5055 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
5057 if (!PyArg_ParseTuple(args
, (char *)"OzOI:virDomainSetBlockIoTune",
5058 &pyobj_domain
, &disk
, &info
, &flags
))
5060 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
5062 if ((size
= PyDict_Size(info
)) < 0)
5066 PyErr_Format(PyExc_LookupError
,
5067 "Need non-empty dictionary to set attributes");
5071 LIBVIRT_BEGIN_ALLOW_THREADS
;
5072 i_retval
= virDomainGetBlockIoTune(domain
, disk
, NULL
, &nparams
, flags
);
5073 LIBVIRT_END_ALLOW_THREADS
;
5076 return VIR_PY_INT_FAIL
;
5079 PyErr_Format(PyExc_LookupError
,
5080 "Domain has no settable attributes");
5084 if (VIR_ALLOC_N(params
, nparams
) < 0)
5085 return PyErr_NoMemory();
5087 LIBVIRT_BEGIN_ALLOW_THREADS
;
5088 i_retval
= virDomainGetBlockIoTune(domain
, disk
, params
, &nparams
, flags
);
5089 LIBVIRT_END_ALLOW_THREADS
;
5092 ret
= VIR_PY_INT_FAIL
;
5096 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
5100 LIBVIRT_BEGIN_ALLOW_THREADS
;
5101 i_retval
= virDomainSetBlockIoTune(domain
, disk
, new_params
, size
, flags
);
5102 LIBVIRT_END_ALLOW_THREADS
;
5105 ret
= VIR_PY_INT_FAIL
;
5109 ret
= VIR_PY_INT_SUCCESS
;
5112 virTypedParamsFree(params
, nparams
);
5113 virTypedParamsFree(new_params
, size
);
5118 libvirt_virDomainGetBlockIoTune(PyObject
*self ATTRIBUTE_UNUSED
,
5121 virDomainPtr domain
;
5122 PyObject
*pyobj_domain
;
5123 PyObject
*ret
= NULL
;
5128 virTypedParameterPtr params
;
5130 if (!PyArg_ParseTuple(args
, (char *)"OzI:virDomainGetBlockIoTune",
5131 &pyobj_domain
, &disk
, &flags
))
5133 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
5135 LIBVIRT_BEGIN_ALLOW_THREADS
;
5136 i_retval
= virDomainGetBlockIoTune(domain
, disk
, NULL
, &nparams
, flags
);
5137 LIBVIRT_END_ALLOW_THREADS
;
5143 return PyDict_New();
5145 if (VIR_ALLOC_N(params
, nparams
) < 0)
5146 return PyErr_NoMemory();
5148 LIBVIRT_BEGIN_ALLOW_THREADS
;
5149 i_retval
= virDomainGetBlockIoTune(domain
, disk
, params
, &nparams
, flags
);
5150 LIBVIRT_END_ALLOW_THREADS
;
5157 ret
= getPyVirTypedParameter(params
, nparams
);
5160 virTypedParamsFree(params
, nparams
);
5165 libvirt_virDomainGetDiskErrors(PyObject
*self ATTRIBUTE_UNUSED
,
5168 PyObject
*py_retval
= VIR_PY_NONE
;
5169 virDomainPtr domain
;
5170 PyObject
*pyobj_domain
;
5172 virDomainDiskErrorPtr disks
= NULL
;
5173 unsigned int ndisks
;
5177 if (!PyArg_ParseTuple(args
, (char *) "OI:virDomainGetDiskErrors",
5178 &pyobj_domain
, &flags
))
5181 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
5183 LIBVIRT_BEGIN_ALLOW_THREADS
;
5184 count
= virDomainGetDiskErrors(domain
, NULL
, 0, 0);
5185 LIBVIRT_END_ALLOW_THREADS
;
5192 if (VIR_ALLOC_N(disks
, ndisks
) < 0)
5193 return PyErr_NoMemory();
5195 LIBVIRT_BEGIN_ALLOW_THREADS
;
5196 count
= virDomainGetDiskErrors(domain
, disks
, ndisks
, 0);
5197 LIBVIRT_END_ALLOW_THREADS
;
5200 py_retval
= VIR_PY_NONE
;
5205 if (!(py_retval
= PyDict_New()))
5208 for (i
= 0; i
< count
; i
++) {
5209 VIR_PY_DICT_SET_GOTO(py_retval
,
5210 libvirt_constcharPtrWrap(disks
[i
].disk
),
5211 libvirt_intWrap(disks
[i
].error
),
5217 for (i
= 0; i
< count
; i
++)
5218 VIR_FREE(disks
[i
].disk
);
5223 Py_CLEAR(py_retval
);
5228 #if LIBVIR_CHECK_VERSION(1, 2, 14)
5230 libvirt_virDomainInterfaceAddresses(PyObject
*self ATTRIBUTE_UNUSED
,
5233 PyObject
*py_retval
= VIR_PY_NONE
;
5234 PyObject
*pyobj_domain
;
5235 virDomainPtr domain
;
5236 virDomainInterfacePtr
*ifaces
= NULL
;
5237 unsigned int source
;
5239 int ifaces_count
= 0;
5242 if (!PyArg_ParseTuple(args
, (char *) "OII:virDomainInterfaceAddresses",
5243 &pyobj_domain
, &source
, &flags
))
5246 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
5248 LIBVIRT_BEGIN_ALLOW_THREADS
;
5249 ifaces_count
= virDomainInterfaceAddresses(domain
, &ifaces
, source
, flags
);
5250 LIBVIRT_END_ALLOW_THREADS
;
5252 if (ifaces_count
< 0)
5255 if (!(py_retval
= PyDict_New()))
5258 for (i
= 0; i
< ifaces_count
; i
++) {
5259 virDomainInterfacePtr iface
= ifaces
[i
];
5260 PyObject
*py_addrs
= NULL
;
5261 PyObject
*py_iface
= NULL
;
5264 if (!(py_iface
= PyDict_New()))
5267 VIR_PY_DICT_SET_GOTO(py_retval
, libvirt_charPtrWrap(iface
->name
),
5270 if (iface
->naddrs
) {
5271 if (!(py_addrs
= PyList_New(iface
->naddrs
))) {
5275 py_addrs
= VIR_PY_NONE
;
5278 VIR_PY_DICT_SET_GOTO(py_iface
, libvirt_constcharPtrWrap("addrs"),
5281 VIR_PY_DICT_SET_GOTO(py_iface
, libvirt_constcharPtrWrap("hwaddr"),
5282 libvirt_constcharPtrWrap(iface
->hwaddr
), error
);
5284 for (j
= 0; j
< iface
->naddrs
; j
++) {
5285 virDomainIPAddressPtr addr
= &(iface
->addrs
[j
]);
5286 PyObject
*py_addr
= PyDict_New();
5291 VIR_PY_LIST_SET_GOTO(py_addrs
, j
, py_addr
, error
);
5293 VIR_PY_DICT_SET_GOTO(py_addr
, libvirt_constcharPtrWrap("addr"),
5294 libvirt_constcharPtrWrap(addr
->addr
), error
);
5295 VIR_PY_DICT_SET_GOTO(py_addr
, libvirt_constcharPtrWrap("prefix"),
5296 libvirt_uintWrap(addr
->prefix
), error
);
5297 VIR_PY_DICT_SET_GOTO(py_addr
, libvirt_constcharPtrWrap("type"),
5298 libvirt_intWrap(addr
->type
), error
);
5303 if (ifaces
&& ifaces_count
> 0) {
5304 for (i
= 0; i
< ifaces_count
; i
++) {
5305 virDomainInterfaceFree(ifaces
[i
]);
5313 Py_CLEAR(py_retval
);
5316 #endif /* LIBVIR_CHECK_VERSION(1, 2, 14) */
5319 /*******************************************
5320 * Helper functions to avoid importing modules
5321 * for every callback
5322 *******************************************/
5323 static PyObject
*libvirt_module
= NULL
;
5324 static PyObject
*libvirt_dict
= NULL
;
5327 getLibvirtModuleObject(void)
5330 return libvirt_module
;
5332 // PyImport_ImportModule returns a new reference
5333 /* Bogus (char *) cast for RHEL-5 python API brokenness */
5334 libvirt_module
= PyImport_ImportModule((char *)"libvirt");
5335 if (!libvirt_module
) {
5336 DEBUG("%s Error importing libvirt module\n", __FUNCTION__
);
5341 return libvirt_module
;
5345 getLibvirtDictObject(void)
5348 return libvirt_dict
;
5350 // PyModule_GetDict returns a borrowed reference
5351 libvirt_dict
= PyModule_GetDict(getLibvirtModuleObject());
5352 if (!libvirt_dict
) {
5353 DEBUG("%s Error importing libvirt dictionary\n", __FUNCTION__
);
5358 Py_INCREF(libvirt_dict
);
5359 return libvirt_dict
;
5364 libvirt_lookupPythonFunc(const char *funcname
)
5366 PyObject
*python_cb
;
5368 /* Lookup the python callback */
5369 python_cb
= PyDict_GetItemString(getLibvirtDictObject(), funcname
);
5372 DEBUG("%s: Error finding %s\n", __FUNCTION__
, funcname
);
5378 if (!PyCallable_Check(python_cb
)) {
5379 DEBUG("%s: %s is not callable\n", __FUNCTION__
, funcname
);
5386 /*******************************************
5388 *******************************************/
5391 libvirt_virConnectDomainEventCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
5397 PyObject
*pyobj_ret
= NULL
;
5399 PyObject
*pyobj_conn
= (PyObject
*)opaque
;
5400 PyObject
*pyobj_dom
;
5404 LIBVIRT_ENSURE_THREAD_STATE
;
5406 /* Create a python instance of this virDomainPtr */
5408 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
5413 /* Call the Callback Dispatcher */
5414 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
5415 (char*)"_dispatchDomainEventCallbacks",
5420 Py_DECREF(pyobj_dom
);
5424 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
5427 Py_DECREF(pyobj_ret
);
5431 LIBVIRT_RELEASE_THREAD_STATE
;
5436 libvirt_virConnectDomainEventRegister(ATTRIBUTE_UNUSED PyObject
*self
,
5439 PyObject
*pyobj_conn
; /* virConnectPtr */
5440 PyObject
*pyobj_conn_inst
; /* virConnect Python object */
5445 if (!PyArg_ParseTuple(args
, (char *) "OO:virConnectDomainEventRegister",
5446 &pyobj_conn
, &pyobj_conn_inst
))
5449 DEBUG("libvirt_virConnectDomainEventRegister(%p %p) called\n",
5450 pyobj_conn
, pyobj_conn_inst
);
5451 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
5453 Py_INCREF(pyobj_conn_inst
);
5455 LIBVIRT_BEGIN_ALLOW_THREADS
;
5456 ret
= virConnectDomainEventRegister(conn
,
5457 libvirt_virConnectDomainEventCallback
,
5458 pyobj_conn_inst
, NULL
);
5459 LIBVIRT_END_ALLOW_THREADS
;
5461 return libvirt_intWrap(ret
);
5465 libvirt_virConnectDomainEventDeregister(PyObject
*self ATTRIBUTE_UNUSED
,
5468 PyObject
*pyobj_conn
;
5469 PyObject
*pyobj_conn_inst
;
5474 if (!PyArg_ParseTuple(args
, (char *) "OO:virConnectDomainEventDeregister",
5475 &pyobj_conn
, &pyobj_conn_inst
))
5478 DEBUG("libvirt_virConnectDomainEventDeregister(%p) called\n", pyobj_conn
);
5480 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
5482 LIBVIRT_BEGIN_ALLOW_THREADS
;
5483 ret
= virConnectDomainEventDeregister(conn
, libvirt_virConnectDomainEventCallback
);
5484 LIBVIRT_END_ALLOW_THREADS
;
5486 Py_DECREF(pyobj_conn_inst
);
5487 return libvirt_intWrap(ret
);
5490 /*******************************************
5492 *******************************************/
5493 static PyObject
*addHandleObj
;
5494 static PyObject
*updateHandleObj
;
5495 static PyObject
*removeHandleObj
;
5496 static PyObject
*addTimeoutObj
;
5497 static PyObject
*updateTimeoutObj
;
5498 static PyObject
*removeTimeoutObj
;
5501 libvirt_virEventAddHandleFunc(int fd
,
5503 virEventHandleCallback cb
,
5508 PyObject
*python_cb
= NULL
;
5509 PyObject
*cb_args
= NULL
;
5510 PyObject
*pyobj_args
= NULL
;
5513 LIBVIRT_ENSURE_THREAD_STATE
;
5515 if ((pyobj_args
= PyTuple_New(4)) == NULL
)
5518 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 0, libvirt_intWrap(fd
), cleanup
);
5519 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 1, libvirt_intWrap(event
), cleanup
);
5521 /* Lookup the python callback */
5522 python_cb
= libvirt_lookupPythonFunc("_eventInvokeHandleCallback");
5526 Py_INCREF(python_cb
);
5528 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 2, python_cb
, cleanup
);
5530 if ((cb_args
= PyTuple_New(3)) == NULL
)
5533 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 3, cb_args
, cleanup
);
5535 /* If changing contents of the opaque object, please also change
5536 * virEventInvokeFreeCallback() in libvirt-override.py
5538 VIR_PY_TUPLE_SET_GOTO(cb_args
, 0, libvirt_virEventHandleCallbackWrap(cb
), cleanup
);
5539 VIR_PY_TUPLE_SET_GOTO(cb_args
, 1, libvirt_virVoidPtrWrap(opaque
), cleanup
);
5540 VIR_PY_TUPLE_SET_GOTO(cb_args
, 2, libvirt_virFreeCallbackWrap(ff
), cleanup
);
5542 result
= PyObject_Call(addHandleObj
, pyobj_args
, NULL
);
5547 libvirt_intUnwrap(result
, &retval
);
5553 Py_XDECREF(pyobj_args
);
5555 LIBVIRT_RELEASE_THREAD_STATE
;
5561 libvirt_virEventUpdateHandleFunc(int watch
,
5564 PyObject
*result
= NULL
;
5565 PyObject
*pyobj_args
;
5567 LIBVIRT_ENSURE_THREAD_STATE
;
5569 if ((pyobj_args
= PyTuple_New(2)) == NULL
)
5572 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 0, libvirt_intWrap(watch
), cleanup
);
5573 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 1, libvirt_intWrap(event
), cleanup
);
5575 result
= PyObject_Call(updateHandleObj
, pyobj_args
, NULL
);
5583 Py_XDECREF(pyobj_args
);
5585 LIBVIRT_RELEASE_THREAD_STATE
;
5590 libvirt_virEventRemoveHandleFunc(int watch
)
5592 PyObject
*result
= NULL
;
5593 PyObject
*pyobj_args
;
5596 LIBVIRT_ENSURE_THREAD_STATE
;
5598 if ((pyobj_args
= PyTuple_New(1)) == NULL
)
5601 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 0, libvirt_intWrap(watch
), cleanup
);
5603 result
= PyObject_Call(removeHandleObj
, pyobj_args
, NULL
);
5613 Py_XDECREF(pyobj_args
);
5615 LIBVIRT_RELEASE_THREAD_STATE
;
5622 libvirt_virEventAddTimeoutFunc(int timeout
,
5623 virEventTimeoutCallback cb
,
5627 PyObject
*result
= NULL
;
5628 PyObject
*python_cb
= NULL
;
5629 PyObject
*cb_args
= NULL
;
5630 PyObject
*pyobj_args
= NULL
;
5633 LIBVIRT_ENSURE_THREAD_STATE
;
5635 if ((pyobj_args
= PyTuple_New(3)) == NULL
)
5638 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 0, libvirt_intWrap(timeout
), cleanup
);
5640 /* Lookup the python callback */
5641 python_cb
= libvirt_lookupPythonFunc("_eventInvokeTimeoutCallback");
5645 Py_INCREF(python_cb
);
5646 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 1, python_cb
, cleanup
);
5648 if ((cb_args
= PyTuple_New(3)) == NULL
)
5651 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 2, cb_args
, cleanup
);
5653 /* If changing contents of the opaque object, please also change
5654 * virEventInvokeFreeCallback() in libvirt-override.py
5656 VIR_PY_TUPLE_SET_GOTO(cb_args
, 0, libvirt_virEventTimeoutCallbackWrap(cb
), cleanup
);
5657 VIR_PY_TUPLE_SET_GOTO(cb_args
, 1, libvirt_virVoidPtrWrap(opaque
), cleanup
);
5658 VIR_PY_TUPLE_SET_GOTO(cb_args
, 2, libvirt_virFreeCallbackWrap(ff
), cleanup
);
5660 result
= PyObject_Call(addTimeoutObj
, pyobj_args
, NULL
);
5665 libvirt_intUnwrap(result
, &retval
);
5670 Py_XDECREF(pyobj_args
);
5672 LIBVIRT_RELEASE_THREAD_STATE
;
5677 libvirt_virEventUpdateTimeoutFunc(int timer
,
5680 PyObject
*result
= NULL
;
5681 PyObject
*pyobj_args
;
5683 LIBVIRT_ENSURE_THREAD_STATE
;
5685 if ((pyobj_args
= PyTuple_New(2)) == NULL
)
5688 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 0, libvirt_intWrap(timer
), cleanup
);
5689 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 1, libvirt_intWrap(timeout
), cleanup
);
5691 result
= PyObject_Call(updateTimeoutObj
, pyobj_args
, NULL
);
5699 Py_XDECREF(pyobj_args
);
5701 LIBVIRT_RELEASE_THREAD_STATE
;
5705 libvirt_virEventRemoveTimeoutFunc(int timer
)
5707 PyObject
*result
= NULL
;
5708 PyObject
*pyobj_args
;
5711 LIBVIRT_ENSURE_THREAD_STATE
;
5713 if ((pyobj_args
= PyTuple_New(1)) == NULL
)
5716 VIR_PY_TUPLE_SET_GOTO(pyobj_args
, 0, libvirt_intWrap(timer
), cleanup
);
5718 result
= PyObject_Call(removeTimeoutObj
, pyobj_args
, NULL
);
5728 Py_XDECREF(pyobj_args
);
5730 LIBVIRT_RELEASE_THREAD_STATE
;
5736 libvirt_virEventRegisterImpl(PyObject
*self ATTRIBUTE_UNUSED
,
5739 if (addHandleObj
|| updateHandleObj
|| removeHandleObj
||
5740 addTimeoutObj
|| updateTimeoutObj
|| removeTimeoutObj
) {
5741 PyErr_SetString(PyExc_RuntimeError
,
5742 "Event loop is already registered");
5746 /* Parse and check arguments */
5747 if (!PyArg_ParseTuple(args
, (char *) "OOOOOO:virEventRegisterImpl",
5748 &addHandleObj
, &updateHandleObj
,
5749 &removeHandleObj
, &addTimeoutObj
,
5750 &updateTimeoutObj
, &removeTimeoutObj
) ||
5751 !PyCallable_Check(addHandleObj
) ||
5752 !PyCallable_Check(updateHandleObj
) ||
5753 !PyCallable_Check(removeHandleObj
) ||
5754 !PyCallable_Check(addTimeoutObj
) ||
5755 !PyCallable_Check(updateTimeoutObj
) ||
5756 !PyCallable_Check(removeTimeoutObj
))
5759 /* Inc refs since we're holding on to these objects until
5760 * the next call (if any) to this function.
5762 Py_INCREF(addHandleObj
);
5763 Py_INCREF(updateHandleObj
);
5764 Py_INCREF(removeHandleObj
);
5765 Py_INCREF(addTimeoutObj
);
5766 Py_INCREF(updateTimeoutObj
);
5767 Py_INCREF(removeTimeoutObj
);
5769 /* Now register our C EventImpl, which will dispatch
5770 * to the Python callbacks passed in as args.
5772 LIBVIRT_BEGIN_ALLOW_THREADS
;
5773 virEventRegisterImpl(libvirt_virEventAddHandleFunc
,
5774 libvirt_virEventUpdateHandleFunc
,
5775 libvirt_virEventRemoveHandleFunc
,
5776 libvirt_virEventAddTimeoutFunc
,
5777 libvirt_virEventUpdateTimeoutFunc
,
5778 libvirt_virEventRemoveTimeoutFunc
);
5779 LIBVIRT_END_ALLOW_THREADS
;
5781 return VIR_PY_INT_SUCCESS
;
5785 libvirt_virEventInvokeHandleCallback(PyObject
*self ATTRIBUTE_UNUSED
,
5788 int watch
, fd
, event
;
5790 PyObject
*py_opaque
;
5791 virEventHandleCallback cb
;
5794 if (!PyArg_ParseTuple(args
, (char *) "iiiOO:virEventInvokeHandleCallback",
5795 &watch
, &fd
, &event
, &py_f
, &py_opaque
))
5798 cb
= (virEventHandleCallback
) PyvirEventHandleCallback_Get(py_f
);
5799 opaque
= (void *) PyvirVoidPtr_Get(py_opaque
);
5802 LIBVIRT_BEGIN_ALLOW_THREADS
;
5803 cb(watch
, fd
, event
, opaque
);
5804 LIBVIRT_END_ALLOW_THREADS
;
5807 return VIR_PY_INT_SUCCESS
;
5811 libvirt_virEventInvokeTimeoutCallback(PyObject
*self ATTRIBUTE_UNUSED
,
5816 PyObject
*py_opaque
;
5817 virEventTimeoutCallback cb
;
5820 if (!PyArg_ParseTuple(args
, (char *) "iOO:virEventInvokeTimeoutCallback",
5821 &timer
, &py_f
, &py_opaque
))
5824 cb
= (virEventTimeoutCallback
) PyvirEventTimeoutCallback_Get(py_f
);
5825 opaque
= (void *) PyvirVoidPtr_Get(py_opaque
);
5827 LIBVIRT_BEGIN_ALLOW_THREADS
;
5829 LIBVIRT_END_ALLOW_THREADS
;
5832 return VIR_PY_INT_SUCCESS
;
5836 libvirt_virEventInvokeFreeCallback(PyObject
*self ATTRIBUTE_UNUSED
,
5840 PyObject
*py_opaque
;
5844 if (!PyArg_ParseTuple(args
, (char *) "OO:virEventInvokeFreeCallback",
5848 cb
= (virFreeCallback
) PyvirEventHandleCallback_Get(py_f
);
5849 opaque
= (void *) PyvirVoidPtr_Get(py_opaque
);
5852 LIBVIRT_BEGIN_ALLOW_THREADS
;
5854 LIBVIRT_END_ALLOW_THREADS
;
5857 return VIR_PY_INT_SUCCESS
;
5861 libvirt_virEventHandleCallback(int watch
,
5866 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
5867 PyObject
*pyobj_ret
;
5868 PyObject
*python_cb
;
5870 LIBVIRT_ENSURE_THREAD_STATE
;
5872 /* Lookup the python callback */
5873 python_cb
= libvirt_lookupPythonFunc("_dispatchEventHandleCallback");
5878 Py_INCREF(pyobj_cbData
);
5880 /* Call the pure python dispatcher */
5881 pyobj_ret
= PyObject_CallFunction(python_cb
,
5883 watch
, fd
, events
, pyobj_cbData
);
5885 Py_DECREF(pyobj_cbData
);
5888 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
5891 Py_DECREF(pyobj_ret
);
5895 LIBVIRT_RELEASE_THREAD_STATE
;
5899 libvirt_virEventAddHandle(PyObject
*self ATTRIBUTE_UNUSED
,
5902 PyObject
*pyobj_cbData
;
5903 virEventHandleCallback cb
= libvirt_virEventHandleCallback
;
5908 if (!PyArg_ParseTuple(args
, (char *) "iiO:virEventAddHandle",
5909 &fd
, &events
, &pyobj_cbData
))
5912 Py_INCREF(pyobj_cbData
);
5914 LIBVIRT_BEGIN_ALLOW_THREADS
;
5915 ret
= virEventAddHandle(fd
, events
, cb
, pyobj_cbData
, NULL
);
5916 LIBVIRT_END_ALLOW_THREADS
;
5919 Py_DECREF(pyobj_cbData
);
5922 return libvirt_intWrap(ret
);
5926 libvirt_virEventTimeoutCallback(int timer
,
5929 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
5930 PyObject
*pyobj_ret
;
5931 PyObject
*python_cb
;
5933 LIBVIRT_ENSURE_THREAD_STATE
;
5935 /* Lookup the python callback */
5936 python_cb
= libvirt_lookupPythonFunc("_dispatchEventTimeoutCallback");
5941 Py_INCREF(pyobj_cbData
);
5943 /* Call the pure python dispatcher */
5944 pyobj_ret
= PyObject_CallFunction(python_cb
,
5946 timer
, pyobj_cbData
);
5948 Py_DECREF(pyobj_cbData
);
5951 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
5954 Py_DECREF(pyobj_ret
);
5958 LIBVIRT_RELEASE_THREAD_STATE
;
5962 libvirt_virEventAddTimeout(PyObject
*self ATTRIBUTE_UNUSED
,
5965 PyObject
*pyobj_cbData
;
5966 virEventTimeoutCallback cb
= libvirt_virEventTimeoutCallback
;
5970 if (!PyArg_ParseTuple(args
, (char *) "iO:virEventAddTimeout",
5971 &timeout
, &pyobj_cbData
))
5974 Py_INCREF(pyobj_cbData
);
5976 LIBVIRT_BEGIN_ALLOW_THREADS
;
5977 ret
= virEventAddTimeout(timeout
, cb
, pyobj_cbData
, NULL
);
5978 LIBVIRT_END_ALLOW_THREADS
;
5981 Py_DECREF(pyobj_cbData
);
5984 return libvirt_intWrap(ret
);
5988 libvirt_virConnectDomainEventFreeFunc(void *opaque
)
5990 PyObject
*pyobj_conn
= (PyObject
*)opaque
;
5991 LIBVIRT_ENSURE_THREAD_STATE
;
5992 Py_DECREF(pyobj_conn
);
5993 LIBVIRT_RELEASE_THREAD_STATE
;
5997 libvirt_virConnectDomainEventLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6003 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6004 PyObject
*pyobj_dom
;
6005 PyObject
*pyobj_ret
= NULL
;
6006 PyObject
*pyobj_conn
;
6010 LIBVIRT_ENSURE_THREAD_STATE
;
6012 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6014 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6017 /* Create a python instance of this virDomainPtr */
6019 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6023 Py_INCREF(pyobj_cbData
);
6025 /* Call the Callback Dispatcher */
6026 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6027 (char*)"_dispatchDomainEventLifecycleCallback",
6033 Py_DECREF(pyobj_cbData
);
6034 Py_DECREF(pyobj_dom
);
6038 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6041 Py_DECREF(pyobj_ret
);
6045 LIBVIRT_RELEASE_THREAD_STATE
;
6050 libvirt_virConnectDomainEventGenericCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6054 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6055 PyObject
*pyobj_dom
;
6056 PyObject
*pyobj_ret
= NULL
;
6057 PyObject
*pyobj_conn
;
6061 LIBVIRT_ENSURE_THREAD_STATE
;
6063 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6065 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6068 /* Create a python instance of this virDomainPtr */
6070 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6074 Py_INCREF(pyobj_cbData
);
6076 /* Call the Callback Dispatcher */
6077 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6078 (char*)"_dispatchDomainEventGenericCallback",
6080 pyobj_dom
, pyobj_cbData
);
6082 Py_DECREF(pyobj_cbData
);
6083 Py_DECREF(pyobj_dom
);
6087 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6090 Py_DECREF(pyobj_ret
);
6094 LIBVIRT_RELEASE_THREAD_STATE
;
6099 libvirt_virConnectDomainEventRTCChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6101 long long utcoffset
,
6104 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6105 PyObject
*pyobj_dom
;
6106 PyObject
*pyobj_ret
= NULL
;
6107 PyObject
*pyobj_conn
;
6111 LIBVIRT_ENSURE_THREAD_STATE
;
6113 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6115 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6118 /* Create a python instance of this virDomainPtr */
6120 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6124 Py_INCREF(pyobj_cbData
);
6126 /* Call the Callback Dispatcher */
6127 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6128 (char*)"_dispatchDomainEventRTCChangeCallback",
6131 (PY_LONG_LONG
)utcoffset
,
6134 Py_DECREF(pyobj_cbData
);
6135 Py_DECREF(pyobj_dom
);
6139 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6142 Py_DECREF(pyobj_ret
);
6146 LIBVIRT_RELEASE_THREAD_STATE
;
6151 libvirt_virConnectDomainEventWatchdogCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6156 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6157 PyObject
*pyobj_dom
;
6158 PyObject
*pyobj_ret
= NULL
;
6159 PyObject
*pyobj_conn
;
6163 LIBVIRT_ENSURE_THREAD_STATE
;
6165 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6167 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6170 /* Create a python instance of this virDomainPtr */
6172 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6176 Py_INCREF(pyobj_cbData
);
6178 /* Call the Callback Dispatcher */
6179 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6180 (char*)"_dispatchDomainEventWatchdogCallback",
6186 Py_DECREF(pyobj_cbData
);
6187 Py_DECREF(pyobj_dom
);
6191 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6194 Py_DECREF(pyobj_ret
);
6198 LIBVIRT_RELEASE_THREAD_STATE
;
6203 libvirt_virConnectDomainEventIOErrorCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6205 const char *srcPath
,
6206 const char *devAlias
,
6210 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6211 PyObject
*pyobj_dom
;
6212 PyObject
*pyobj_ret
= NULL
;
6213 PyObject
*pyobj_conn
;
6217 LIBVIRT_ENSURE_THREAD_STATE
;
6219 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6221 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6224 /* Create a python instance of this virDomainPtr */
6226 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6230 Py_INCREF(pyobj_cbData
);
6232 /* Call the Callback Dispatcher */
6233 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6234 (char*)"_dispatchDomainEventIOErrorCallback",
6237 srcPath
, devAlias
, action
,
6240 Py_DECREF(pyobj_cbData
);
6241 Py_DECREF(pyobj_dom
);
6245 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6248 Py_DECREF(pyobj_ret
);
6252 LIBVIRT_RELEASE_THREAD_STATE
;
6257 libvirt_virConnectDomainEventIOErrorReasonCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6259 const char *srcPath
,
6260 const char *devAlias
,
6265 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6266 PyObject
*pyobj_dom
;
6267 PyObject
*pyobj_ret
= NULL
;
6268 PyObject
*pyobj_conn
;
6272 LIBVIRT_ENSURE_THREAD_STATE
;
6274 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6276 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6279 /* Create a python instance of this virDomainPtr */
6281 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6285 Py_INCREF(pyobj_cbData
);
6287 /* Call the Callback Dispatcher */
6288 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6289 (char*)"_dispatchDomainEventIOErrorReasonCallback",
6292 srcPath
, devAlias
, action
, reason
,
6295 Py_DECREF(pyobj_cbData
);
6296 Py_DECREF(pyobj_dom
);
6300 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6303 Py_DECREF(pyobj_ret
);
6307 LIBVIRT_RELEASE_THREAD_STATE
;
6312 libvirt_virConnectDomainEventGraphicsCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6315 virDomainEventGraphicsAddressPtr local
,
6316 virDomainEventGraphicsAddressPtr remote
,
6317 const char *authScheme
,
6318 virDomainEventGraphicsSubjectPtr subject
,
6321 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6322 PyObject
*pyobj_dom
= NULL
;
6323 PyObject
*pyobj_ret
= NULL
;
6324 PyObject
*pyobj_conn
;
6326 PyObject
*pyobj_local
= NULL
;
6327 PyObject
*pyobj_remote
= NULL
;
6328 PyObject
*pyobj_subject
= NULL
;
6332 LIBVIRT_ENSURE_THREAD_STATE
;
6334 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6336 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6339 /* Create a python instance of this virDomainPtr */
6341 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6345 Py_INCREF(pyobj_cbData
);
6347 if ((pyobj_local
= PyDict_New()) == NULL
)
6350 VIR_PY_DICT_SET_GOTO(pyobj_local
,
6351 libvirt_constcharPtrWrap("family"),
6352 libvirt_intWrap(local
->family
),
6354 VIR_PY_DICT_SET_GOTO(pyobj_local
,
6355 libvirt_constcharPtrWrap("node"),
6356 libvirt_constcharPtrWrap(local
->node
),
6358 VIR_PY_DICT_SET_GOTO(pyobj_local
,
6359 libvirt_constcharPtrWrap("service"),
6360 libvirt_constcharPtrWrap(local
->service
),
6363 if ((pyobj_remote
= PyDict_New()) == NULL
)
6366 VIR_PY_DICT_SET_GOTO(pyobj_remote
,
6367 libvirt_constcharPtrWrap("family"),
6368 libvirt_intWrap(remote
->family
),
6370 VIR_PY_DICT_SET_GOTO(pyobj_remote
,
6371 libvirt_constcharPtrWrap("node"),
6372 libvirt_constcharPtrWrap(remote
->node
),
6374 VIR_PY_DICT_SET_GOTO(pyobj_remote
,
6375 libvirt_constcharPtrWrap("service"),
6376 libvirt_constcharPtrWrap(remote
->service
),
6379 if ((pyobj_subject
= PyList_New(subject
->nidentity
)) == NULL
)
6382 for (i
= 0; i
< subject
->nidentity
; i
++) {
6383 PyObject
*pair
= PyTuple_New(2);
6387 VIR_PY_LIST_SET_GOTO(pyobj_subject
, i
, pair
, cleanup
);
6389 VIR_PY_TUPLE_SET_GOTO(pair
, 0,
6390 libvirt_constcharPtrWrap(subject
->identities
[i
].type
),
6392 VIR_PY_TUPLE_SET_GOTO(pair
, 1,
6393 libvirt_constcharPtrWrap(subject
->identities
[i
].name
),
6397 /* Call the Callback Dispatcher */
6398 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6399 (char*)"_dispatchDomainEventGraphicsCallback",
6402 phase
, pyobj_local
, pyobj_remote
,
6403 authScheme
, pyobj_subject
,
6407 Py_DECREF(pyobj_cbData
);
6408 Py_XDECREF(pyobj_dom
);
6411 Py_XDECREF(pyobj_local
);
6412 Py_XDECREF(pyobj_remote
);
6413 Py_XDECREF(pyobj_subject
);
6414 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6417 Py_DECREF(pyobj_ret
);
6421 LIBVIRT_RELEASE_THREAD_STATE
;
6426 libvirt_virConnectDomainEventBlockJobCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6433 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6434 PyObject
*pyobj_dom
;
6435 PyObject
*pyobj_ret
= NULL
;
6436 PyObject
*pyobj_conn
;
6440 LIBVIRT_ENSURE_THREAD_STATE
;
6442 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6444 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6447 /* Create a python instance of this virDomainPtr */
6449 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6453 Py_INCREF(pyobj_cbData
);
6455 /* Call the Callback Dispatcher */
6456 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6457 (char*)"_dispatchDomainEventBlockJobCallback",
6459 pyobj_dom
, disk
, type
, status
, pyobj_cbData
);
6461 Py_DECREF(pyobj_cbData
);
6462 Py_DECREF(pyobj_dom
);
6466 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6469 Py_DECREF(pyobj_ret
);
6473 LIBVIRT_RELEASE_THREAD_STATE
;
6478 libvirt_virConnectDomainEventDiskChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6480 const char *oldSrcPath
,
6481 const char *newSrcPath
,
6482 const char *devAlias
,
6486 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6487 PyObject
*pyobj_dom
;
6488 PyObject
*pyobj_ret
= NULL
;
6489 PyObject
*pyobj_conn
;
6493 LIBVIRT_ENSURE_THREAD_STATE
;
6495 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6497 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6500 /* Create a python instance of this virDomainPtr */
6502 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6506 Py_INCREF(pyobj_cbData
);
6508 /* Call the Callback Dispatcher */
6509 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6510 (char*)"_dispatchDomainEventDiskChangeCallback",
6513 oldSrcPath
, newSrcPath
,
6514 devAlias
, reason
, pyobj_cbData
);
6516 Py_DECREF(pyobj_cbData
);
6517 Py_DECREF(pyobj_dom
);
6521 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6524 Py_DECREF(pyobj_ret
);
6528 LIBVIRT_RELEASE_THREAD_STATE
;
6533 libvirt_virConnectDomainEventTrayChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6535 const char *devAlias
,
6539 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6540 PyObject
*pyobj_dom
;
6541 PyObject
*pyobj_ret
= NULL
;
6542 PyObject
*pyobj_conn
;
6546 LIBVIRT_ENSURE_THREAD_STATE
;
6548 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6550 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6553 /* Create a python instance of this virDomainPtr */
6555 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6559 Py_INCREF(pyobj_cbData
);
6561 /* Call the Callback Dispatcher */
6562 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6563 (char*)"_dispatchDomainEventTrayChangeCallback",
6566 devAlias
, reason
, pyobj_cbData
);
6568 Py_DECREF(pyobj_cbData
);
6569 Py_DECREF(pyobj_dom
);
6573 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6576 Py_DECREF(pyobj_ret
);
6580 LIBVIRT_RELEASE_THREAD_STATE
;
6585 libvirt_virConnectDomainEventPMWakeupCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6590 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6591 PyObject
*pyobj_dom
;
6592 PyObject
*pyobj_ret
= NULL
;
6593 PyObject
*pyobj_conn
;
6597 LIBVIRT_ENSURE_THREAD_STATE
;
6599 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6601 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6604 /* Create a python instance of this virDomainPtr */
6606 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6610 Py_INCREF(pyobj_cbData
);
6612 /* Call the Callback Dispatcher */
6613 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6614 (char*)"_dispatchDomainEventPMWakeupCallback",
6620 Py_DECREF(pyobj_cbData
);
6621 Py_DECREF(pyobj_dom
);
6625 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6628 Py_DECREF(pyobj_ret
);
6632 LIBVIRT_RELEASE_THREAD_STATE
;
6637 libvirt_virConnectDomainEventPMSuspendCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6642 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6643 PyObject
*pyobj_dom
;
6644 PyObject
*pyobj_ret
= NULL
;
6645 PyObject
*pyobj_conn
;
6649 LIBVIRT_ENSURE_THREAD_STATE
;
6651 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6653 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6656 /* Create a python instance of this virDomainPtr */
6658 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6662 Py_INCREF(pyobj_cbData
);
6664 /* Call the Callback Dispatcher */
6665 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6666 (char*)"_dispatchDomainEventPMSuspendCallback",
6672 Py_DECREF(pyobj_cbData
);
6673 Py_DECREF(pyobj_dom
);
6677 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6680 Py_DECREF(pyobj_ret
);
6684 LIBVIRT_RELEASE_THREAD_STATE
;
6689 #ifdef VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE
6691 libvirt_virConnectDomainEventBalloonChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6693 unsigned long long actual
,
6696 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6697 PyObject
*pyobj_dom
;
6698 PyObject
*pyobj_ret
= NULL
;
6699 PyObject
*pyobj_conn
;
6703 LIBVIRT_ENSURE_THREAD_STATE
;
6705 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6707 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6710 /* Create a python instance of this virDomainPtr */
6712 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6716 Py_INCREF(pyobj_cbData
);
6718 /* Call the Callback Dispatcher */
6719 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6720 (char*)"_dispatchDomainEventBalloonChangeCallback",
6723 (PY_LONG_LONG
)actual
,
6726 Py_DECREF(pyobj_cbData
);
6727 Py_DECREF(pyobj_dom
);
6731 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6734 Py_DECREF(pyobj_ret
);
6738 LIBVIRT_RELEASE_THREAD_STATE
;
6741 #endif /* VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE */
6743 #ifdef VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK
6745 libvirt_virConnectDomainEventPMSuspendDiskCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6750 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6751 PyObject
*pyobj_dom
;
6752 PyObject
*pyobj_ret
= NULL
;
6753 PyObject
*pyobj_conn
;
6757 LIBVIRT_ENSURE_THREAD_STATE
;
6759 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6761 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6764 /* Create a python instance of this virDomainPtr */
6766 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6770 Py_INCREF(pyobj_cbData
);
6772 /* Call the Callback Dispatcher */
6773 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6774 (char*)"_dispatchDomainEventPMSuspendDiskCallback",
6780 Py_DECREF(pyobj_cbData
);
6781 Py_DECREF(pyobj_dom
);
6785 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6788 Py_DECREF(pyobj_ret
);
6792 LIBVIRT_RELEASE_THREAD_STATE
;
6795 #endif /* VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK */
6797 #ifdef VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED
6799 libvirt_virConnectDomainEventDeviceRemovedCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6801 const char *devAlias
,
6804 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6805 PyObject
*pyobj_dom
;
6806 PyObject
*pyobj_ret
= NULL
;
6807 PyObject
*pyobj_conn
;
6811 LIBVIRT_ENSURE_THREAD_STATE
;
6813 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6815 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6818 /* Create a python instance of this virDomainPtr */
6820 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6824 Py_INCREF(pyobj_cbData
);
6826 /* Call the Callback Dispatcher */
6827 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6828 (char*)"_dispatchDomainEventDeviceRemovedCallback",
6830 pyobj_dom
, devAlias
, pyobj_cbData
);
6832 Py_DECREF(pyobj_cbData
);
6833 Py_DECREF(pyobj_dom
);
6837 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6840 Py_DECREF(pyobj_ret
);
6844 LIBVIRT_RELEASE_THREAD_STATE
;
6847 #endif /* VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED */
6849 #ifdef VIR_DOMAIN_EVENT_ID_TUNABLE
6851 libvirt_virConnectDomainEventTunableCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6853 virTypedParameterPtr params
,
6857 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6858 PyObject
*pyobj_dom
;
6859 PyObject
*pyobj_ret
= NULL
;
6860 PyObject
*pyobj_conn
;
6862 PyObject
*pyobj_dict
= NULL
;
6865 LIBVIRT_ENSURE_THREAD_STATE
;
6867 pyobj_dict
= getPyVirTypedParameter(params
, nparams
);
6871 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6873 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6876 /* Create a python instance of this virDomainPtr */
6878 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6882 Py_INCREF(pyobj_cbData
);
6884 /* Call the Callback Dispatcher */
6885 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6886 (char*)"_dispatchDomainEventTunableCallback",
6888 pyobj_dom
, pyobj_dict
, pyobj_cbData
);
6890 Py_DECREF(pyobj_cbData
);
6891 Py_DECREF(pyobj_dom
);
6895 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6898 Py_DECREF(pyobj_ret
);
6901 Py_XDECREF(pyobj_dict
);
6903 LIBVIRT_RELEASE_THREAD_STATE
;
6907 #endif /* VIR_DOMAIN_EVENT_ID_TUNABLE */
6909 #ifdef VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE
6911 libvirt_virConnectDomainEventAgentLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6917 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6918 PyObject
*pyobj_dom
;
6919 PyObject
*pyobj_ret
= NULL
;
6920 PyObject
*pyobj_conn
;
6924 LIBVIRT_ENSURE_THREAD_STATE
;
6926 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6928 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6931 /* Create a python instance of this virDomainPtr */
6933 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6937 Py_INCREF(pyobj_cbData
);
6939 /* Call the Callback Dispatcher */
6940 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6941 (char*)"_dispatchDomainEventAgentLifecycleCallback",
6943 pyobj_dom
, state
, reason
, pyobj_cbData
);
6945 Py_DECREF(pyobj_cbData
);
6946 Py_DECREF(pyobj_dom
);
6950 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
6953 Py_DECREF(pyobj_ret
);
6957 LIBVIRT_RELEASE_THREAD_STATE
;
6961 #endif /* VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE */
6963 #ifdef VIR_DOMAIN_EVENT_ID_DEVICE_ADDED
6965 libvirt_virConnectDomainEventDeviceAddedCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
6967 const char *devAlias
,
6970 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
6971 PyObject
*pyobj_dom
;
6972 PyObject
*pyobj_ret
= NULL
;
6973 PyObject
*pyobj_conn
;
6977 LIBVIRT_ENSURE_THREAD_STATE
;
6979 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
6981 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
6984 /* Create a python instance of this virDomainPtr */
6986 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
6990 Py_INCREF(pyobj_cbData
);
6992 /* Call the Callback Dispatcher */
6993 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
6994 (char*)"_dispatchDomainEventDeviceAddedCallback",
6996 pyobj_dom
, devAlias
, pyobj_cbData
);
6998 Py_DECREF(pyobj_cbData
);
6999 Py_DECREF(pyobj_dom
);
7003 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7006 Py_DECREF(pyobj_ret
);
7010 LIBVIRT_RELEASE_THREAD_STATE
;
7014 #endif /* VIR_DOMAIN_EVENT_ID_DEVICE_ADDED */
7016 #ifdef VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION
7018 libvirt_virConnectDomainEventMigrationIterationCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7023 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7024 PyObject
*pyobj_dom
;
7025 PyObject
*pyobj_ret
= NULL
;
7026 PyObject
*pyobj_conn
;
7030 LIBVIRT_ENSURE_THREAD_STATE
;
7032 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7034 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7037 /* Create a python instance of this virDomainPtr */
7039 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7043 Py_INCREF(pyobj_cbData
);
7045 /* Call the Callback Dispatcher */
7046 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7047 (char*)"_dispatchDomainEventMigrationIterationCallback",
7049 pyobj_dom
, iteration
, pyobj_cbData
);
7051 Py_DECREF(pyobj_cbData
);
7052 Py_DECREF(pyobj_dom
);
7056 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7059 Py_DECREF(pyobj_ret
);
7063 LIBVIRT_RELEASE_THREAD_STATE
;
7066 #endif /* VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION */
7068 #ifdef VIR_DOMAIN_EVENT_ID_JOB_COMPLETED
7070 libvirt_virConnectDomainEventJobCompletedCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7072 virTypedParameterPtr params
,
7076 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7077 PyObject
*pyobj_dom
;
7078 PyObject
*pyobj_ret
= NULL
;
7079 PyObject
*pyobj_conn
;
7081 PyObject
*pyobj_dict
= NULL
;
7084 LIBVIRT_ENSURE_THREAD_STATE
;
7086 pyobj_dict
= getPyVirTypedParameter(params
, nparams
);
7090 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7092 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7095 /* Create a python instance of this virDomainPtr */
7097 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7101 Py_INCREF(pyobj_cbData
);
7103 /* Call the Callback Dispatcher */
7104 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7105 (char*)"_dispatchDomainEventJobCompletedCallback",
7107 pyobj_dom
, pyobj_dict
, pyobj_cbData
);
7109 Py_DECREF(pyobj_cbData
);
7110 Py_DECREF(pyobj_dom
);
7114 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7116 Py_XDECREF(pyobj_dict
);
7118 Py_DECREF(pyobj_ret
);
7122 LIBVIRT_RELEASE_THREAD_STATE
;
7125 #endif /* VIR_DOMAIN_EVENT_ID_JOB_COMPLETED */
7128 #ifdef VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED
7130 libvirt_virConnectDomainEventDeviceRemovalFailedCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7132 const char *devAlias
,
7135 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7136 PyObject
*pyobj_dom
;
7137 PyObject
*pyobj_ret
= NULL
;
7138 PyObject
*pyobj_conn
;
7142 LIBVIRT_ENSURE_THREAD_STATE
;
7144 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7146 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7149 /* Create a python instance of this virDomainPtr */
7151 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7155 Py_INCREF(pyobj_cbData
);
7157 /* Call the Callback Dispatcher */
7158 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7159 (char*)"_dispatchDomainEventDeviceRemovalFailedCallback",
7161 pyobj_dom
, devAlias
, pyobj_cbData
);
7163 Py_DECREF(pyobj_cbData
);
7164 Py_DECREF(pyobj_dom
);
7168 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7171 Py_DECREF(pyobj_ret
);
7175 LIBVIRT_RELEASE_THREAD_STATE
;
7179 #endif /* VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED */
7181 #ifdef VIR_DOMAIN_EVENT_ID_METADATA_CHANGE
7183 libvirt_virConnectDomainEventMetadataChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7189 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7190 PyObject
*pyobj_dom
;
7191 PyObject
*pyobj_ret
= NULL
;
7192 PyObject
*pyobj_conn
;
7196 LIBVIRT_ENSURE_THREAD_STATE
;
7198 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7200 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7203 /* Create a python instance of this virDomainPtr */
7205 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7209 Py_INCREF(pyobj_cbData
);
7211 /* Call the Callback Dispatcher */
7212 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7213 (char*)"_dispatchDomainEventMetadataChangeCallback",
7215 pyobj_dom
, type
, nsuri
, pyobj_cbData
);
7217 Py_DECREF(pyobj_cbData
);
7218 Py_DECREF(pyobj_dom
);
7222 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7225 Py_DECREF(pyobj_ret
);
7229 LIBVIRT_RELEASE_THREAD_STATE
;
7232 #endif /* VIR_DOMAIN_EVENT_ID_METADATA_CHANGE */
7234 #ifdef VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD
7236 libvirt_virConnectDomainEventBlockThresholdCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7240 unsigned long long threshold
,
7241 unsigned long long excess
,
7244 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7245 PyObject
*pyobj_dom
;
7246 PyObject
*pyobj_ret
= NULL
;
7247 PyObject
*pyobj_conn
;
7251 LIBVIRT_ENSURE_THREAD_STATE
;
7253 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7255 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7258 /* Create a python instance of this virDomainPtr */
7260 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7264 Py_INCREF(pyobj_cbData
);
7266 /* Call the Callback Dispatcher */
7267 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7268 (char*)"_dispatchDomainEventBlockThresholdCallback",
7270 pyobj_dom
, dev
, path
, threshold
, excess
,
7273 Py_DECREF(pyobj_cbData
);
7274 Py_DECREF(pyobj_dom
);
7278 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7281 Py_DECREF(pyobj_ret
);
7285 LIBVIRT_RELEASE_THREAD_STATE
;
7288 #endif /* VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD */
7291 #ifdef VIR_DOMAIN_EVENT_ID_MEMORY_FAILURE
7293 libvirt_virConnectDomainEventMemoryFailureCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7300 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7301 PyObject
*pyobj_dom
;
7302 PyObject
*pyobj_ret
= NULL
;
7303 PyObject
*pyobj_conn
;
7307 LIBVIRT_ENSURE_THREAD_STATE
;
7309 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7311 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7314 /* Create a python instance of this virDomainPtr */
7316 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7320 Py_INCREF(pyobj_cbData
);
7322 /* Call the Callback Dispatcher */
7323 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7324 (char*)"_dispatchDomainEventMemoryFailureCallback",
7326 pyobj_dom
, recipient
, action
, flags
,
7329 Py_DECREF(pyobj_cbData
);
7330 Py_DECREF(pyobj_dom
);
7334 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7337 Py_DECREF(pyobj_ret
);
7341 LIBVIRT_RELEASE_THREAD_STATE
;
7344 #endif /* VIR_DOMAIN_EVENT_ID_MEMORY_FAILURE */
7347 #ifdef VIR_DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE
7349 libvirt_virConnectDomainEventMemoryDeviceSizeChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7352 unsigned long long size
,
7355 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7356 PyObject
*pyobj_dom
;
7357 PyObject
*pyobj_ret
= NULL
;
7358 PyObject
*pyobj_conn
;
7362 LIBVIRT_ENSURE_THREAD_STATE
;
7364 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7366 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7369 /* Create a python instance of this virDomainPtr */
7371 if (!(pyobj_dom
= libvirt_virDomainPtrWrap(dom
))) {
7375 Py_INCREF(pyobj_cbData
);
7377 /* Call the Callback Dispatcher */
7378 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7379 (char*)"_dispatchDomainEventMemoryDeviceSizeChangeCallback",
7381 pyobj_dom
, alias
, size
,
7384 Py_DECREF(pyobj_cbData
);
7385 Py_DECREF(pyobj_dom
);
7389 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7392 Py_DECREF(pyobj_ret
);
7396 LIBVIRT_RELEASE_THREAD_STATE
;
7399 #endif /* VIR_DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE */
7403 libvirt_virConnectDomainEventRegisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
7406 PyObject
*py_retval
; /* return value */
7407 PyObject
*pyobj_conn
; /* virConnectPtr */
7408 PyObject
*pyobj_dom
;
7409 PyObject
*pyobj_cbData
; /* hash of callback data */
7413 virConnectDomainEventGenericCallback cb
= NULL
;
7416 if (!PyArg_ParseTuple(args
,
7417 (char *) "OOiO:virConnectDomainEventRegisterAny",
7418 &pyobj_conn
, &pyobj_dom
, &eventID
, &pyobj_cbData
))
7421 DEBUG("libvirt_virConnectDomainEventRegister(%p %p %d %p) called\n",
7422 pyobj_conn
, pyobj_dom
, eventID
, pyobj_cbData
);
7423 conn
= PyvirConnect_Get(pyobj_conn
);
7424 if (pyobj_dom
== Py_None
)
7427 dom
= PyvirDomain_Get(pyobj_dom
);
7429 switch ((virDomainEventID
) eventID
) {
7430 case VIR_DOMAIN_EVENT_ID_LIFECYCLE
:
7431 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventLifecycleCallback
);
7433 case VIR_DOMAIN_EVENT_ID_REBOOT
:
7434 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventGenericCallback
);
7436 case VIR_DOMAIN_EVENT_ID_RTC_CHANGE
:
7437 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventRTCChangeCallback
);
7439 case VIR_DOMAIN_EVENT_ID_WATCHDOG
:
7440 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventWatchdogCallback
);
7442 case VIR_DOMAIN_EVENT_ID_IO_ERROR
:
7443 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventIOErrorCallback
);
7445 case VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON
:
7446 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventIOErrorReasonCallback
);
7448 case VIR_DOMAIN_EVENT_ID_GRAPHICS
:
7449 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventGraphicsCallback
);
7451 case VIR_DOMAIN_EVENT_ID_CONTROL_ERROR
:
7452 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventGenericCallback
);
7454 case VIR_DOMAIN_EVENT_ID_BLOCK_JOB
:
7455 #ifdef VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2
7456 case VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2
:
7457 #endif /* VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2 */
7458 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventBlockJobCallback
);
7460 case VIR_DOMAIN_EVENT_ID_DISK_CHANGE
:
7461 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventDiskChangeCallback
);
7463 case VIR_DOMAIN_EVENT_ID_TRAY_CHANGE
:
7464 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventTrayChangeCallback
);
7466 case VIR_DOMAIN_EVENT_ID_PMWAKEUP
:
7467 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventPMWakeupCallback
);
7469 case VIR_DOMAIN_EVENT_ID_PMSUSPEND
:
7470 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventPMSuspendCallback
);
7472 #ifdef VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE
7473 case VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE
:
7474 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventBalloonChangeCallback
);
7476 #endif /* VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE */
7477 #ifdef VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK
7478 case VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK
:
7479 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventPMSuspendDiskCallback
);
7481 #endif /* VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK */
7482 #ifdef VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED
7483 case VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED
:
7484 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventDeviceRemovedCallback
);
7486 #endif /* VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED */
7487 #ifdef VIR_DOMAIN_EVENT_ID_TUNABLE
7488 case VIR_DOMAIN_EVENT_ID_TUNABLE
:
7489 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventTunableCallback
);
7491 #endif /* VIR_DOMAIN_EVENT_ID_TUNABLE */
7492 #ifdef VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE
7493 case VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE
:
7494 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventAgentLifecycleCallback
);
7496 #endif /* VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE */
7497 #ifdef VIR_DOMAIN_EVENT_ID_DEVICE_ADDED
7498 case VIR_DOMAIN_EVENT_ID_DEVICE_ADDED
:
7499 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventDeviceAddedCallback
);
7501 #endif /* VIR_DOMAIN_EVENT_ID_DEVICE_ADDED */
7502 #ifdef VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION
7503 case VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION
:
7504 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventMigrationIterationCallback
);
7506 #endif /* VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION */
7507 #ifdef VIR_DOMAIN_EVENT_ID_JOB_COMPLETED
7508 case VIR_DOMAIN_EVENT_ID_JOB_COMPLETED
:
7509 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventJobCompletedCallback
);
7511 #endif /* VIR_DOMAIN_EVENT_ID_JOB_COMPLETED */
7512 #ifdef VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED
7513 case VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED
:
7514 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventDeviceRemovalFailedCallback
);
7516 #endif /* VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED */
7517 #ifdef VIR_DOMAIN_EVENT_ID_METADATA_CHANGE
7518 case VIR_DOMAIN_EVENT_ID_METADATA_CHANGE
:
7519 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventMetadataChangeCallback
);
7521 #endif /* VIR_DOMAIN_EVENT_ID_METADATA_CHANGE */
7522 #ifdef VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD
7523 case VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD
:
7524 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventBlockThresholdCallback
);
7526 #endif /* VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD */
7527 #ifdef VIR_DOMAIN_EVENT_ID_MEMORY_FAILURE
7528 case VIR_DOMAIN_EVENT_ID_MEMORY_FAILURE
:
7529 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventMemoryFailureCallback
);
7531 #endif /* VIR_DOMAIN_EVENT_ID_MEMORY_FAILURE */
7532 #ifdef VIR_DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE
7533 case VIR_DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE
:
7534 cb
= VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventMemoryDeviceSizeChangeCallback
);
7536 #endif /* VIR_DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE */
7537 case VIR_DOMAIN_EVENT_ID_LAST
:
7542 return VIR_PY_INT_FAIL
;
7545 Py_INCREF(pyobj_cbData
);
7547 LIBVIRT_BEGIN_ALLOW_THREADS
;
7548 ret
= virConnectDomainEventRegisterAny(conn
, dom
, eventID
,
7550 libvirt_virConnectDomainEventFreeFunc
);
7551 LIBVIRT_END_ALLOW_THREADS
;
7554 Py_DECREF(pyobj_cbData
);
7557 py_retval
= libvirt_intWrap(ret
);
7562 libvirt_virConnectDomainEventDeregisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
7565 PyObject
*pyobj_conn
;
7570 if (!PyArg_ParseTuple(args
, (char *) "Oi:virConnectDomainEventDeregister",
7571 &pyobj_conn
, &callbackID
))
7574 DEBUG("libvirt_virConnectDomainEventDeregister(%p) called\n", pyobj_conn
);
7576 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
7578 LIBVIRT_BEGIN_ALLOW_THREADS
;
7579 ret
= virConnectDomainEventDeregisterAny(conn
, callbackID
);
7580 LIBVIRT_END_ALLOW_THREADS
;
7582 return libvirt_intWrap(ret
);
7585 #if LIBVIR_CHECK_VERSION(1, 2, 1)
7587 libvirt_virConnectNetworkEventFreeFunc(void *opaque
)
7589 PyObject
*pyobj_conn
= (PyObject
*)opaque
;
7590 LIBVIRT_ENSURE_THREAD_STATE
;
7591 Py_DECREF(pyobj_conn
);
7592 LIBVIRT_RELEASE_THREAD_STATE
;
7596 libvirt_virConnectNetworkEventLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7602 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7603 PyObject
*pyobj_net
;
7604 PyObject
*pyobj_ret
= NULL
;
7605 PyObject
*pyobj_conn
;
7609 LIBVIRT_ENSURE_THREAD_STATE
;
7611 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7613 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7616 /* Create a python instance of this virNetworkPtr */
7618 if (!(pyobj_net
= libvirt_virNetworkPtrWrap(net
))) {
7619 virNetworkFree(net
);
7622 Py_INCREF(pyobj_cbData
);
7624 /* Call the Callback Dispatcher */
7625 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7626 (char*)"_dispatchNetworkEventLifecycleCallback",
7633 Py_DECREF(pyobj_cbData
);
7634 Py_DECREF(pyobj_net
);
7638 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7641 Py_DECREF(pyobj_ret
);
7645 LIBVIRT_RELEASE_THREAD_STATE
;
7649 #ifdef VIR_NETWORK_EVENT_ID_METADATA_CHANGE
7651 libvirt_virConnectNetworkEventMetadataChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
7657 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7658 PyObject
*pyobj_dom
;
7659 PyObject
*pyobj_ret
= NULL
;
7660 PyObject
*pyobj_conn
;
7664 LIBVIRT_ENSURE_THREAD_STATE
;
7666 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
7668 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7671 /* Create a python instance of this virNetworkPtr */
7673 if (!(pyobj_dom
= libvirt_virNetworkPtrWrap(dom
))) {
7674 virNetworkFree(dom
);
7677 Py_INCREF(pyobj_cbData
);
7679 /* Call the Callback Dispatcher */
7680 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7681 (char*)"_dispatchNetworkEventMetadataChangeCallback",
7683 pyobj_dom
, type
, nsuri
, pyobj_cbData
);
7685 Py_DECREF(pyobj_cbData
);
7686 Py_DECREF(pyobj_dom
);
7690 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7693 Py_DECREF(pyobj_ret
);
7697 LIBVIRT_RELEASE_THREAD_STATE
;
7700 #endif /* VIR_NETWORK_EVENT_ID_METADATA_CHANGE */
7703 libvirt_virConnectNetworkEventRegisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
7706 PyObject
*pyobj_conn
; /* virConnectPtr */
7707 PyObject
*pyobj_net
;
7708 PyObject
*pyobj_cbData
; /* hash of callback data */
7712 virConnectNetworkEventGenericCallback cb
= NULL
;
7715 if (!PyArg_ParseTuple(args
,
7716 (char *) "OOiO:virConnectNetworkEventRegisterAny",
7717 &pyobj_conn
, &pyobj_net
, &eventID
, &pyobj_cbData
))
7720 DEBUG("libvirt_virConnectNetworkEventRegister(%p %p %d %p) called\n",
7721 pyobj_conn
, pyobj_net
, eventID
, pyobj_cbData
);
7722 conn
= PyvirConnect_Get(pyobj_conn
);
7723 if (pyobj_net
== Py_None
)
7726 net
= PyvirNetwork_Get(pyobj_net
);
7728 switch ((virNetworkEventID
) eventID
) {
7729 case VIR_NETWORK_EVENT_ID_LIFECYCLE
:
7730 cb
= VIR_NETWORK_EVENT_CALLBACK(libvirt_virConnectNetworkEventLifecycleCallback
);
7733 #ifdef VIR_NETWORK_EVENT_ID_METADATA_CHANGE
7734 case VIR_NETWORK_EVENT_ID_METADATA_CHANGE
:
7735 cb
= VIR_NETWORK_EVENT_CALLBACK(libvirt_virConnectNetworkEventMetadataChangeCallback
);
7737 #endif /* VIR_NETWORK_EVENT_ID_METADATA_CHANGE */
7739 case VIR_NETWORK_EVENT_ID_LAST
:
7744 return VIR_PY_INT_FAIL
;
7747 Py_INCREF(pyobj_cbData
);
7749 LIBVIRT_BEGIN_ALLOW_THREADS
;
7750 ret
= virConnectNetworkEventRegisterAny(conn
, net
, eventID
,
7752 libvirt_virConnectNetworkEventFreeFunc
);
7753 LIBVIRT_END_ALLOW_THREADS
;
7756 Py_DECREF(pyobj_cbData
);
7759 return libvirt_intWrap(ret
);
7763 libvirt_virConnectNetworkEventDeregisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
7766 PyObject
*pyobj_conn
;
7771 if (!PyArg_ParseTuple(args
, (char *) "Oi:virConnectNetworkEventDeregister",
7772 &pyobj_conn
, &callbackID
))
7775 DEBUG("libvirt_virConnectNetworkEventDeregister(%p) called\n", pyobj_conn
);
7777 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
7779 LIBVIRT_BEGIN_ALLOW_THREADS
;
7780 ret
= virConnectNetworkEventDeregisterAny(conn
, callbackID
);
7781 LIBVIRT_END_ALLOW_THREADS
;
7783 return libvirt_intWrap(ret
);
7785 #endif /* LIBVIR_CHECK_VERSION(1, 2, 1)*/
7787 #if LIBVIR_CHECK_VERSION(0, 10, 0)
7789 libvirt_virConnectCloseCallbackDispatch(virConnectPtr conn ATTRIBUTE_UNUSED
,
7793 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7794 PyObject
*pyobj_ret
;
7795 PyObject
*pyobj_conn
;
7798 LIBVIRT_ENSURE_THREAD_STATE
;
7800 Py_INCREF(pyobj_cbData
);
7802 dictKey
= libvirt_constcharPtrWrap("conn");
7803 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7806 /* Call the Callback Dispatcher */
7807 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
7808 (char*)"_dispatchCloseCallback",
7813 Py_DECREF(pyobj_cbData
);
7816 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7819 Py_DECREF(pyobj_ret
);
7822 LIBVIRT_RELEASE_THREAD_STATE
;
7826 libvirt_virConnectRegisterCloseCallback(PyObject
*self ATTRIBUTE_UNUSED
,
7829 PyObject
*pyobj_conn
; /* virConnectPtr */
7830 PyObject
*pyobj_cbData
; /* hash of callback data */
7834 if (!PyArg_ParseTuple(args
, (char *) "OO:virConnectRegisterCloseCallback",
7835 &pyobj_conn
, &pyobj_cbData
))
7838 DEBUG("libvirt_virConnectRegisterCloseCallback(%p %p) called\n",
7839 pyobj_conn
, pyobj_cbData
);
7840 conn
= PyvirConnect_Get(pyobj_conn
);
7842 Py_INCREF(pyobj_cbData
);
7844 LIBVIRT_BEGIN_ALLOW_THREADS
;
7845 ret
= virConnectRegisterCloseCallback(conn
,
7846 libvirt_virConnectCloseCallbackDispatch
,
7848 libvirt_virConnectDomainEventFreeFunc
);
7849 LIBVIRT_END_ALLOW_THREADS
;
7852 Py_DECREF(pyobj_cbData
);
7855 return libvirt_intWrap(ret
);
7859 libvirt_virConnectUnregisterCloseCallback(PyObject
* self ATTRIBUTE_UNUSED
,
7862 PyObject
*pyobj_conn
;
7866 if (!PyArg_ParseTuple(args
, (char *) "O:virConnectUnregisterCloseCallback",
7870 DEBUG("libvirt_virConnectDomainEventUnregister(%p) called\n",
7873 conn
= PyvirConnect_Get(pyobj_conn
);
7875 LIBVIRT_BEGIN_ALLOW_THREADS
;
7876 ret
= virConnectUnregisterCloseCallback(conn
,
7877 libvirt_virConnectCloseCallbackDispatch
);
7878 LIBVIRT_END_ALLOW_THREADS
;
7880 return libvirt_intWrap(ret
);
7882 #endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
7885 libvirt_virStreamEventFreeFunc(void *opaque
)
7887 PyObject
*pyobj_stream
= (PyObject
*)opaque
;
7888 LIBVIRT_ENSURE_THREAD_STATE
;
7889 Py_DECREF(pyobj_stream
);
7890 LIBVIRT_RELEASE_THREAD_STATE
;
7894 libvirt_virStreamEventCallback(virStreamPtr st ATTRIBUTE_UNUSED
,
7898 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
7899 PyObject
*pyobj_stream
;
7900 PyObject
*pyobj_ret
;
7903 LIBVIRT_ENSURE_THREAD_STATE
;
7905 Py_INCREF(pyobj_cbData
);
7906 dictKey
= libvirt_constcharPtrWrap("stream");
7907 pyobj_stream
= PyDict_GetItem(pyobj_cbData
, dictKey
);
7910 /* Call the pure python dispatcher */
7911 pyobj_ret
= PyObject_CallMethod(pyobj_stream
,
7912 (char *)"_dispatchStreamEventCallback",
7914 events
, pyobj_cbData
);
7916 Py_DECREF(pyobj_cbData
);
7919 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
7922 Py_DECREF(pyobj_ret
);
7925 LIBVIRT_RELEASE_THREAD_STATE
;
7929 libvirt_virStreamEventAddCallback(PyObject
*self ATTRIBUTE_UNUSED
,
7932 PyObject
*pyobj_stream
;
7933 PyObject
*pyobj_cbData
;
7934 virStreamPtr stream
;
7935 virStreamEventCallback cb
= libvirt_virStreamEventCallback
;
7939 if (!PyArg_ParseTuple(args
, (char *) "OiO:virStreamEventAddCallback",
7940 &pyobj_stream
, &events
, &pyobj_cbData
))
7943 DEBUG("libvirt_virStreamEventAddCallback(%p, %d, %p) called\n",
7944 pyobj_stream
, events
, pyobj_cbData
);
7945 stream
= PyvirStream_Get(pyobj_stream
);
7947 Py_INCREF(pyobj_cbData
);
7949 LIBVIRT_BEGIN_ALLOW_THREADS
;
7950 ret
= virStreamEventAddCallback(stream
, events
, cb
, pyobj_cbData
,
7951 libvirt_virStreamEventFreeFunc
);
7952 LIBVIRT_END_ALLOW_THREADS
;
7955 Py_DECREF(pyobj_cbData
);
7958 return libvirt_intWrap(ret
);
7962 libvirt_virStreamRecv(PyObject
*self ATTRIBUTE_UNUSED
,
7965 PyObject
*pyobj_stream
;
7967 virStreamPtr stream
;
7972 if (!PyArg_ParseTuple(args
, (char *) "Oi:virStreamRecv",
7973 &pyobj_stream
, &nbytes
)) {
7976 stream
= PyvirStream_Get(pyobj_stream
);
7978 if (VIR_ALLOC_N(buf
, nbytes
+1 > 0 ? nbytes
+1 : 1) < 0)
7979 return PyErr_NoMemory();
7981 LIBVIRT_BEGIN_ALLOW_THREADS
;
7982 ret
= virStreamRecv(stream
, buf
, nbytes
);
7983 LIBVIRT_END_ALLOW_THREADS
;
7985 buf
[ret
> -1 ? ret
: 0] = '\0';
7986 DEBUG("StreamRecv ret=%d strlen=%zu\n", ret
, strlen(buf
));
7990 return libvirt_intWrap(ret
);
7996 rv
= libvirt_charPtrSizeWrap((char *) buf
, (Py_ssize_t
) ret
);
8002 libvirt_virStreamSend(PyObject
*self ATTRIBUTE_UNUSED
,
8005 PyObject
*pyobj_stream
;
8006 PyObject
*pyobj_data
;
8007 virStreamPtr stream
;
8012 if (!PyArg_ParseTuple(args
, (char *) "OO:virStreamSend",
8013 &pyobj_stream
, &pyobj_data
))
8016 stream
= PyvirStream_Get(pyobj_stream
);
8017 libvirt_charPtrSizeUnwrap(pyobj_data
, &data
, &datalen
);
8019 LIBVIRT_BEGIN_ALLOW_THREADS
;
8020 ret
= virStreamSend(stream
, data
, datalen
);
8021 LIBVIRT_END_ALLOW_THREADS
;
8023 DEBUG("StreamSend ret=%d\n", ret
);
8025 return libvirt_intWrap(ret
);
8029 libvirt_virDomainSendKey(PyObject
*self ATTRIBUTE_UNUSED
,
8032 virDomainPtr domain
;
8033 PyObject
*pyobj_domain
;
8034 PyObject
*pyobj_list
;
8040 unsigned int keycodes
[VIR_DOMAIN_SEND_KEY_MAX_KEYS
];
8043 if (!PyArg_ParseTuple(args
, (char *)"OiiOII:virDomainSendKey",
8044 &pyobj_domain
, &codeset
, &holdtime
, &pyobj_list
,
8045 &nkeycodes
, &flags
))
8048 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8050 if (!PyList_Check(pyobj_list
)) {
8051 return VIR_PY_INT_FAIL
;
8054 if (nkeycodes
!= PyList_Size(pyobj_list
) ||
8055 nkeycodes
> VIR_DOMAIN_SEND_KEY_MAX_KEYS
) {
8056 return VIR_PY_INT_FAIL
;
8059 for (i
= 0; i
< nkeycodes
; i
++) {
8060 if (libvirt_uintUnwrap(PyList_GetItem(pyobj_list
, i
), &keycodes
[i
]) < 0)
8064 LIBVIRT_BEGIN_ALLOW_THREADS
;
8065 ret
= virDomainSendKey(domain
, codeset
, holdtime
, keycodes
, nkeycodes
, flags
);
8066 LIBVIRT_END_ALLOW_THREADS
;
8068 DEBUG("virDomainSendKey ret=%d\n", ret
);
8070 return libvirt_intWrap(ret
);
8073 #if LIBVIR_CHECK_VERSION(1, 0, 3)
8075 libvirt_virDomainMigrateGetCompressionCache(PyObject
*self ATTRIBUTE_UNUSED
,
8078 PyObject
*pyobj_domain
;
8079 virDomainPtr domain
;
8081 unsigned long long cacheSize
;
8084 if (!PyArg_ParseTuple(args
,
8085 (char *) "OI:virDomainMigrateGetCompressionCache",
8086 &pyobj_domain
, &flags
))
8089 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8091 LIBVIRT_BEGIN_ALLOW_THREADS
;
8092 rc
= virDomainMigrateGetCompressionCache(domain
, &cacheSize
, flags
);
8093 LIBVIRT_END_ALLOW_THREADS
;
8098 return libvirt_ulonglongWrap(cacheSize
);
8100 #endif /* LIBVIR_CHECK_VERSION(1, 0, 3) */
8103 libvirt_virDomainMigrateGetMaxSpeed(PyObject
*self ATTRIBUTE_UNUSED
,
8107 unsigned long bandwidth
;
8108 virDomainPtr domain
;
8109 PyObject
*pyobj_domain
;
8110 unsigned int flags
= 0;
8112 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainMigrateGetMaxSpeed",
8113 &pyobj_domain
, &flags
))
8116 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8118 LIBVIRT_BEGIN_ALLOW_THREADS
;
8119 c_retval
= virDomainMigrateGetMaxSpeed(domain
, &bandwidth
, flags
);
8120 LIBVIRT_END_ALLOW_THREADS
;
8123 return VIR_PY_INT_FAIL
;
8125 return libvirt_ulongWrap(bandwidth
);
8128 #if LIBVIR_CHECK_VERSION(3, 7, 0)
8130 libvirt_virDomainMigrateGetMaxDowntime(PyObject
*self ATTRIBUTE_UNUSED
,
8133 PyObject
*pyobj_domain
;
8134 virDomainPtr domain
;
8136 unsigned long long downtime
;
8139 if (!PyArg_ParseTuple(args
,
8140 (char *) "OI:virDomainMigrateGetMaxDowntime",
8141 &pyobj_domain
, &flags
))
8144 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8146 LIBVIRT_BEGIN_ALLOW_THREADS
;
8147 rc
= virDomainMigrateGetMaxDowntime(domain
, &downtime
, flags
);
8148 LIBVIRT_END_ALLOW_THREADS
;
8153 return libvirt_ulonglongWrap(downtime
);
8155 #endif /* LIBVIR_CHECK_VERSION(3, 7, 0) */
8157 #if LIBVIR_CHECK_VERSION(1, 1, 0)
8158 static virPyTypedParamsHint virPyDomainMigrate3Params
[] = {
8159 # ifdef VIR_MIGRATE_PARAM_URI
8160 { VIR_MIGRATE_PARAM_URI
, VIR_TYPED_PARAM_STRING
},
8162 # ifdef VIR_MIGRATE_PARAM_DEST_NAME
8163 { VIR_MIGRATE_PARAM_DEST_NAME
, VIR_TYPED_PARAM_STRING
},
8165 # ifdef VIR_MIGRATE_PARAM_DEST_XML
8166 { VIR_MIGRATE_PARAM_DEST_XML
, VIR_TYPED_PARAM_STRING
},
8168 # ifdef VIR_MIGRATE_PARAM_PERSIST_XML
8169 { VIR_MIGRATE_PARAM_PERSIST_XML
, VIR_TYPED_PARAM_STRING
},
8171 # ifdef VIR_MIGRATE_PARAM_BANDWIDTH
8172 { VIR_MIGRATE_PARAM_BANDWIDTH
, VIR_TYPED_PARAM_ULLONG
},
8174 # ifdef VIR_MIGRATE_PARAM_GRAPHICS_URI
8175 { VIR_MIGRATE_PARAM_GRAPHICS_URI
, VIR_TYPED_PARAM_STRING
},
8177 # ifdef VIR_MIGRATE_PARAM_LISTEN_ADDRESS
8178 { VIR_MIGRATE_PARAM_LISTEN_ADDRESS
, VIR_TYPED_PARAM_STRING
},
8180 # ifdef VIR_MIGRATE_PARAM_MIGRATE_DISKS
8181 { VIR_MIGRATE_PARAM_MIGRATE_DISKS
, VIR_TYPED_PARAM_STRING
},
8183 # ifdef VIR_MIGRATE_PARAM_DISKS_PORT
8184 { VIR_MIGRATE_PARAM_DISKS_PORT
, VIR_TYPED_PARAM_INT
},
8186 # ifdef VIR_MIGRATE_PARAM_COMPRESSION
8187 { VIR_MIGRATE_PARAM_COMPRESSION
, VIR_TYPED_PARAM_STRING
},
8189 # ifdef VIR_MIGRATE_PARAM_COMPRESSION_MT_LEVEL
8190 { VIR_MIGRATE_PARAM_COMPRESSION_MT_LEVEL
, VIR_TYPED_PARAM_INT
},
8192 # ifdef VIR_MIGRATE_PARAM_COMPRESSION_MT_THREADS
8193 { VIR_MIGRATE_PARAM_COMPRESSION_MT_THREADS
, VIR_TYPED_PARAM_INT
},
8195 # ifdef VIR_MIGRATE_PARAM_COMPRESSION_MT_DTHREADS
8196 { VIR_MIGRATE_PARAM_COMPRESSION_MT_DTHREADS
, VIR_TYPED_PARAM_INT
},
8198 # ifdef VIR_MIGRATE_PARAM_COMPRESSION_XBZRLE_CACHE
8199 { VIR_MIGRATE_PARAM_COMPRESSION_XBZRLE_CACHE
, VIR_TYPED_PARAM_ULLONG
},
8201 # ifdef VIR_MIGRATE_PARAM_AUTO_CONVERGE_INITIAL
8202 { VIR_MIGRATE_PARAM_AUTO_CONVERGE_INITIAL
, VIR_TYPED_PARAM_INT
},
8204 # ifdef VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT
8205 { VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT
, VIR_TYPED_PARAM_INT
},
8207 # ifdef VIR_MIGRATE_PARAM_BANDWIDTH_POSTCOPY
8208 { VIR_MIGRATE_PARAM_BANDWIDTH_POSTCOPY
, VIR_TYPED_PARAM_ULLONG
},
8210 # ifdef VIR_MIGRATE_PARAM_PARALLEL_CONNECTIONS
8211 { VIR_MIGRATE_PARAM_PARALLEL_CONNECTIONS
, VIR_TYPED_PARAM_INT
},
8213 # ifdef VIR_MIGRATE_PARAM_DISKS_URI
8214 { VIR_MIGRATE_PARAM_DISKS_URI
, VIR_TYPED_PARAM_STRING
},
8216 #ifdef VIR_MIGRATE_PARAM_TLS_DESTINATION
8217 { VIR_MIGRATE_PARAM_TLS_DESTINATION
, VIR_TYPED_PARAM_STRING
},
8219 #ifdef VIR_MIGRATE_PARAM_COMPRESSION_ZLIB_LEVEL
8220 { VIR_MIGRATE_PARAM_COMPRESSION_ZLIB_LEVEL
, VIR_TYPED_PARAM_INT
},
8222 #ifdef VIR_MIGRATE_PARAM_COMPRESSION_ZSTD_LEVEL
8223 { VIR_MIGRATE_PARAM_COMPRESSION_ZSTD_LEVEL
, VIR_TYPED_PARAM_INT
},
8229 libvirt_virDomainMigrate3(PyObject
*self ATTRIBUTE_UNUSED
,
8232 PyObject
*pyobj_domain
;
8233 virDomainPtr domain
;
8234 PyObject
*pyobj_dconn
;
8235 virConnectPtr dconn
;
8238 virTypedParameterPtr params
;
8240 virDomainPtr ddom
= NULL
;
8242 if (!PyArg_ParseTuple(args
, (char *) "OOOI:virDomainMigrate3",
8243 &pyobj_domain
, &pyobj_dconn
, &dict
, &flags
))
8246 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8247 dconn
= (virConnectPtr
) PyvirConnect_Get(pyobj_dconn
);
8249 if (!PyDict_Check(dict
)) {
8250 PyErr_Format(PyExc_TypeError
, "migration params must be a dictionary");
8254 if (virPyDictToTypedParams(dict
, ¶ms
, &nparams
,
8255 virPyDomainMigrate3Params
,
8256 VIR_N_ELEMENTS(virPyDomainMigrate3Params
)) < 0) {
8260 LIBVIRT_BEGIN_ALLOW_THREADS
;
8261 ddom
= virDomainMigrate3(domain
, dconn
, params
, nparams
, flags
);
8262 LIBVIRT_END_ALLOW_THREADS
;
8264 virTypedParamsFree(params
, nparams
);
8265 return libvirt_virDomainPtrWrap(ddom
);
8269 libvirt_virDomainMigrateToURI3(PyObject
*self ATTRIBUTE_UNUSED
,
8272 PyObject
*pyobj_domain
;
8273 virDomainPtr domain
;
8277 virTypedParameterPtr params
;
8281 if (!PyArg_ParseTuple(args
, (char *) "OzOI:virDomainMigrate3",
8282 &pyobj_domain
, &dconnuri
, &dict
, &flags
))
8285 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8287 if (!PyDict_Check(dict
)) {
8288 PyErr_Format(PyExc_TypeError
, "migration params must be a dictionary");
8292 if (virPyDictToTypedParams(dict
, ¶ms
, &nparams
,
8293 virPyDomainMigrate3Params
,
8294 VIR_N_ELEMENTS(virPyDomainMigrate3Params
)) < 0) {
8298 LIBVIRT_BEGIN_ALLOW_THREADS
;
8299 ret
= virDomainMigrateToURI3(domain
, dconnuri
, params
, nparams
, flags
);
8300 LIBVIRT_END_ALLOW_THREADS
;
8302 virTypedParamsFree(params
, nparams
);
8303 return libvirt_intWrap(ret
);
8305 #endif /* LIBVIR_CHECK_VERSION(1, 1, 0) */
8308 libvirt_virDomainBlockPeek(PyObject
*self ATTRIBUTE_UNUSED
,
8311 PyObject
*py_retval
= NULL
;
8313 virDomainPtr domain
;
8314 PyObject
*pyobj_domain
;
8316 unsigned long long offset
;
8321 if (!PyArg_ParseTuple(args
, (char *)"OzKkI:virDomainBlockPeek",
8322 &pyobj_domain
, &disk
, &offset
, &size
, &flags
))
8325 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8327 if (VIR_ALLOC_N(buf
, size
) < 0)
8328 return PyErr_NoMemory();
8330 LIBVIRT_BEGIN_ALLOW_THREADS
;
8331 c_retval
= virDomainBlockPeek(domain
, disk
, offset
, size
, buf
, flags
);
8332 LIBVIRT_END_ALLOW_THREADS
;
8335 py_retval
= VIR_PY_NONE
;
8339 py_retval
= libvirt_charPtrSizeWrap(buf
, size
);
8347 libvirt_virDomainMemoryPeek(PyObject
*self ATTRIBUTE_UNUSED
,
8350 PyObject
*py_retval
= NULL
;
8352 virDomainPtr domain
;
8353 PyObject
*pyobj_domain
;
8354 unsigned long long start
;
8359 if (!PyArg_ParseTuple(args
, (char *)"OKkI:virDomainMemoryPeek",
8360 &pyobj_domain
, &start
, &size
, &flags
))
8363 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8365 if (VIR_ALLOC_N(buf
, size
) < 0)
8366 return PyErr_NoMemory();
8368 LIBVIRT_BEGIN_ALLOW_THREADS
;
8369 c_retval
= virDomainMemoryPeek(domain
, start
, size
, buf
, flags
);
8370 LIBVIRT_END_ALLOW_THREADS
;
8373 py_retval
= VIR_PY_NONE
;
8377 py_retval
= libvirt_charPtrSizeWrap(buf
, size
);
8384 #if LIBVIR_CHECK_VERSION(0, 10, 2)
8386 libvirt_virNodeSetMemoryParameters(PyObject
*self ATTRIBUTE_UNUSED
,
8390 PyObject
*pyobj_conn
, *info
;
8391 PyObject
*ret
= NULL
;
8394 Py_ssize_t size
= 0;
8396 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
8398 if (!PyArg_ParseTuple(args
,
8399 (char *)"OOI:virNodeSetMemoryParameters",
8400 &pyobj_conn
, &info
, &flags
))
8402 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
8404 if ((size
= PyDict_Size(info
)) < 0)
8408 PyErr_Format(PyExc_LookupError
,
8409 "Need non-empty dictionary to set attributes");
8413 LIBVIRT_BEGIN_ALLOW_THREADS
;
8414 i_retval
= virNodeGetMemoryParameters(conn
, NULL
, &nparams
, flags
);
8415 LIBVIRT_END_ALLOW_THREADS
;
8418 return VIR_PY_INT_FAIL
;
8421 PyErr_Format(PyExc_LookupError
,
8422 "no settable attributes");
8426 if (VIR_ALLOC_N(params
, nparams
) < 0)
8427 return PyErr_NoMemory();
8429 LIBVIRT_BEGIN_ALLOW_THREADS
;
8430 i_retval
= virNodeGetMemoryParameters(conn
, params
, &nparams
, flags
);
8431 LIBVIRT_END_ALLOW_THREADS
;
8434 ret
= VIR_PY_INT_FAIL
;
8438 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
8442 LIBVIRT_BEGIN_ALLOW_THREADS
;
8443 i_retval
= virNodeSetMemoryParameters(conn
, new_params
, size
, flags
);
8444 LIBVIRT_END_ALLOW_THREADS
;
8447 ret
= VIR_PY_INT_FAIL
;
8451 ret
= VIR_PY_INT_SUCCESS
;
8454 virTypedParamsFree(params
, nparams
);
8455 virTypedParamsFree(new_params
, size
);
8460 libvirt_virNodeGetMemoryParameters(PyObject
*self ATTRIBUTE_UNUSED
,
8464 PyObject
*pyobj_conn
;
8465 PyObject
*ret
= NULL
;
8469 virTypedParameterPtr params
;
8471 if (!PyArg_ParseTuple(args
, (char *)"OI:virNodeGetMemoryParameters",
8472 &pyobj_conn
, &flags
))
8474 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
8476 LIBVIRT_BEGIN_ALLOW_THREADS
;
8477 i_retval
= virNodeGetMemoryParameters(conn
, NULL
, &nparams
, flags
);
8478 LIBVIRT_END_ALLOW_THREADS
;
8484 return PyDict_New();
8486 if (VIR_ALLOC_N(params
, nparams
) < 0)
8487 return PyErr_NoMemory();
8489 LIBVIRT_BEGIN_ALLOW_THREADS
;
8490 i_retval
= virNodeGetMemoryParameters(conn
, params
, &nparams
, flags
);
8491 LIBVIRT_END_ALLOW_THREADS
;
8498 ret
= getPyVirTypedParameter(params
, nparams
);
8501 virTypedParamsFree(params
, nparams
);
8504 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
8506 #if LIBVIR_CHECK_VERSION(1, 0, 0)
8508 libvirt_virNodeGetCPUMap(PyObject
*self ATTRIBUTE_UNUSED
,
8512 PyObject
*pyobj_conn
;
8513 PyObject
*ret
= NULL
;
8514 PyObject
*pycpumap
= NULL
;
8516 unsigned char *cpumap
= NULL
;
8517 unsigned int online
= 0;
8521 if (!PyArg_ParseTuple(args
, (char *)"OI:virNodeGetCPUMap",
8522 &pyobj_conn
, &flags
))
8524 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
8526 LIBVIRT_BEGIN_ALLOW_THREADS
;
8527 i_retval
= virNodeGetCPUMap(conn
, &cpumap
, &online
, flags
);
8528 LIBVIRT_END_ALLOW_THREADS
;
8533 if ((ret
= PyTuple_New(3)) == NULL
)
8536 /* 0: number of CPUs */
8537 VIR_PY_TUPLE_SET_GOTO(ret
, 0, libvirt_intWrap(i_retval
), error
);
8540 if ((pycpumap
= PyList_New(i_retval
)) == NULL
)
8543 VIR_PY_TUPLE_SET_GOTO(ret
, 1, pycpumap
, error
);
8545 for (i
= 0; i
< i_retval
; i
++)
8546 VIR_PY_LIST_SET_GOTO(pycpumap
, i
,
8547 PyBool_FromLong(VIR_CPU_USED(cpumap
, i
)), error
);
8549 /* 2: number of online CPUs */
8550 VIR_PY_TUPLE_SET_GOTO(ret
, 2, libvirt_uintWrap(online
), error
);
8560 #endif /* LIBVIR_CHECK_VERSION(1, 0, 0) */
8563 #if LIBVIR_CHECK_VERSION(1, 1, 1)
8565 libvirt_virDomainCreateWithFiles(PyObject
*self ATTRIBUTE_UNUSED
,
8568 PyObject
*py_retval
= NULL
;
8570 virDomainPtr domain
;
8571 PyObject
*pyobj_domain
;
8572 PyObject
*pyobj_files
;
8574 unsigned int nfiles
;
8578 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainCreateWithFiles",
8579 &pyobj_domain
, &pyobj_files
, &flags
))
8581 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8583 nfiles
= PyList_Size(pyobj_files
);
8585 if (VIR_ALLOC_N(files
, nfiles
) < 0)
8586 return PyErr_NoMemory();
8588 for (i
= 0; i
< nfiles
; i
++) {
8592 pyfd
= PyList_GetItem(pyobj_files
, i
);
8594 if (libvirt_intUnwrap(pyfd
, &fd
) < 0)
8600 LIBVIRT_BEGIN_ALLOW_THREADS
;
8601 c_retval
= virDomainCreateWithFiles(domain
, nfiles
, files
, flags
);
8602 LIBVIRT_END_ALLOW_THREADS
;
8604 py_retval
= libvirt_intWrap(c_retval
);
8613 libvirt_virDomainCreateXMLWithFiles(PyObject
*self ATTRIBUTE_UNUSED
,
8616 PyObject
*py_retval
= NULL
;
8617 virDomainPtr c_retval
;
8619 PyObject
*pyobj_conn
;
8621 PyObject
*pyobj_files
;
8623 unsigned int nfiles
;
8627 if (!PyArg_ParseTuple(args
, (char *)"OzOI:virDomainCreateXMLWithFiles",
8628 &pyobj_conn
, &xmlDesc
, &pyobj_files
, &flags
))
8630 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
8632 nfiles
= PyList_Size(pyobj_files
);
8634 if (VIR_ALLOC_N(files
, nfiles
) < 0)
8635 return PyErr_NoMemory();
8637 for (i
= 0; i
< nfiles
; i
++) {
8641 pyfd
= PyList_GetItem(pyobj_files
, i
);
8643 if (libvirt_intUnwrap(pyfd
, &fd
) < 0)
8649 LIBVIRT_BEGIN_ALLOW_THREADS
;
8650 c_retval
= virDomainCreateXMLWithFiles(conn
, xmlDesc
, nfiles
, files
, flags
);
8651 LIBVIRT_END_ALLOW_THREADS
;
8653 py_retval
= libvirt_virDomainPtrWrap((virDomainPtr
) c_retval
);
8659 #endif /* LIBVIR_CHECK_VERSION(1, 1, 1) */
8662 #if LIBVIR_CHECK_VERSION(1, 2, 5)
8664 libvirt_virDomainFSFreeze(PyObject
*self ATTRIBUTE_UNUSED
,
8667 PyObject
*py_retval
= NULL
;
8669 virDomainPtr domain
;
8670 PyObject
*pyobj_domain
;
8671 PyObject
*pyobj_list
;
8673 unsigned int nmountpoints
= 0;
8674 char **mountpoints
= NULL
;
8678 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainFSFreeze",
8679 &pyobj_domain
, &pyobj_list
, &flags
))
8681 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8683 if (PyList_Check(pyobj_list
)) {
8684 nmountpoints
= PyList_Size(pyobj_list
);
8686 if (VIR_ALLOC_N(mountpoints
, nmountpoints
) < 0)
8687 return PyErr_NoMemory();
8689 for (i
= 0; i
< nmountpoints
; i
++) {
8690 if (libvirt_charPtrUnwrap(PyList_GetItem(pyobj_list
, i
),
8696 LIBVIRT_BEGIN_ALLOW_THREADS
;
8697 c_retval
= virDomainFSFreeze(domain
, (const char **) mountpoints
,
8698 nmountpoints
, flags
);
8699 LIBVIRT_END_ALLOW_THREADS
;
8701 py_retval
= libvirt_intWrap(c_retval
);
8704 for (j
= 0 ; j
< i
; j
++)
8705 VIR_FREE(mountpoints
[j
]);
8706 VIR_FREE(mountpoints
);
8712 libvirt_virDomainFSThaw(PyObject
*self ATTRIBUTE_UNUSED
,
8715 PyObject
*py_retval
= NULL
;
8717 virDomainPtr domain
;
8718 PyObject
*pyobj_domain
;
8719 PyObject
*pyobj_list
;
8721 unsigned int nmountpoints
= 0;
8722 char **mountpoints
= NULL
;
8726 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainFSThaw",
8727 &pyobj_domain
, &pyobj_list
, &flags
))
8729 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8731 if (PyList_Check(pyobj_list
)) {
8732 nmountpoints
= PyList_Size(pyobj_list
);
8734 if (VIR_ALLOC_N(mountpoints
, nmountpoints
) < 0)
8735 return PyErr_NoMemory();
8737 for (i
= 0; i
< nmountpoints
; i
++) {
8738 if (libvirt_charPtrUnwrap(PyList_GetItem(pyobj_list
, i
),
8744 LIBVIRT_BEGIN_ALLOW_THREADS
;
8745 c_retval
= virDomainFSThaw(domain
, (const char **) mountpoints
,
8746 nmountpoints
, flags
);
8747 LIBVIRT_END_ALLOW_THREADS
;
8749 py_retval
= libvirt_intWrap(c_retval
);
8752 for (j
= 0 ; j
< i
; j
++)
8753 VIR_FREE(mountpoints
[j
]);
8754 VIR_FREE(mountpoints
);
8759 libvirt_virDomainGetTime(PyObject
*self ATTRIBUTE_UNUSED
,
8762 PyObject
*py_retval
= NULL
;
8763 PyObject
*dict
= NULL
;
8764 PyObject
*pyobj_domain
;
8765 virDomainPtr domain
;
8767 unsigned int nseconds
;
8771 if (!PyArg_ParseTuple(args
, (char*)"OI:virDomainGetTime",
8772 &pyobj_domain
, &flags
))
8774 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8776 if (!(dict
= PyDict_New()))
8779 LIBVIRT_BEGIN_ALLOW_THREADS
;
8780 c_retval
= virDomainGetTime(domain
, &seconds
, &nseconds
, flags
);
8781 LIBVIRT_END_ALLOW_THREADS
;
8784 py_retval
= VIR_PY_NONE
;
8788 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("seconds"),
8789 libvirt_longlongWrap(seconds
), cleanup
);
8790 VIR_PY_DICT_SET_GOTO(dict
, libvirt_constcharPtrWrap("nseconds"),
8791 libvirt_longlongWrap(nseconds
), cleanup
);
8802 libvirt_virDomainSetTime(PyObject
*self ATTRIBUTE_UNUSED
,
8805 PyObject
*pyobj_domain
;
8806 PyObject
*pyobj_seconds
;
8807 PyObject
*pyobj_nseconds
;
8809 virDomainPtr domain
;
8810 long long seconds
= 0;
8811 unsigned int nseconds
= 0;
8813 ssize_t py_dict_size
= 0;
8816 if (!PyArg_ParseTuple(args
, (char*)"OOI:virDomainSetTime",
8817 &pyobj_domain
, &py_dict
, &flags
))
8819 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
8821 if (PyDict_Check(py_dict
)) {
8822 py_dict_size
= PyDict_Size(py_dict
);
8823 if ((pyobj_seconds
= PyDict_GetItemString(py_dict
, "seconds"))) {
8824 if (libvirt_longlongUnwrap(pyobj_seconds
, &seconds
) < 0)
8827 PyErr_Format(PyExc_LookupError
, "Dictionary must contains 'seconds'");
8831 if ((pyobj_nseconds
= PyDict_GetItemString(py_dict
, "nseconds"))) {
8832 if (libvirt_uintUnwrap(pyobj_nseconds
, &nseconds
) < 0)
8834 } else if (py_dict_size
> 1) {
8835 PyErr_Format(PyExc_LookupError
, "Dictionary contains unknown key");
8838 } else if (py_dict
!= Py_None
|| !flags
) {
8839 PyErr_Format(PyExc_TypeError
, "time must be a dictionary "
8840 "or None with flags set");
8844 LIBVIRT_BEGIN_ALLOW_THREADS
;
8845 c_retval
= virDomainSetTime(domain
, seconds
, nseconds
, flags
);
8846 LIBVIRT_END_ALLOW_THREADS
;
8848 return libvirt_intWrap(c_retval
);
8850 #endif /* LIBVIR_CHECK_VERSION(1, 2, 5) */
8853 #if LIBVIR_CHECK_VERSION(1, 2, 6)
8855 libvirt_virNodeGetFreePages(PyObject
*self ATTRIBUTE_UNUSED
,
8858 PyObject
*py_retval
= NULL
;
8859 PyObject
*pyobj_conn
;
8860 PyObject
*pyobj_pagesize
;
8861 PyObject
*pyobj_counts
= NULL
;
8863 unsigned int *pages
= NULL
;
8865 unsigned int cellCount
;
8867 unsigned long long *counts
= NULL
;
8869 ssize_t pyobj_pagesize_size
, i
, j
;
8871 if (!PyArg_ParseTuple(args
, (char *)"OOiII:virNodeGetFreePages",
8872 &pyobj_conn
, &pyobj_pagesize
, &startCell
,
8873 &cellCount
, &flags
))
8876 if (!PyList_Check(pyobj_pagesize
)) {
8877 PyErr_Format(PyExc_TypeError
, "pagesize must be list");
8881 if (cellCount
== 0) {
8882 PyErr_Format(PyExc_LookupError
, "cellCount must not be zero");
8886 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
8888 pyobj_pagesize_size
= PyList_Size(pyobj_pagesize
);
8889 if (VIR_ALLOC_N(pages
, pyobj_pagesize_size
) < 0 ||
8890 VIR_ALLOC_N(counts
, pyobj_pagesize_size
* cellCount
) < 0) {
8895 if (!(pyobj_counts
= PyDict_New()))
8898 for (i
= 0; i
< pyobj_pagesize_size
; i
++) {
8899 PyObject
*tmp
= PyList_GetItem(pyobj_pagesize
, i
);
8901 if (libvirt_uintUnwrap(tmp
, &pages
[i
]) < 0)
8905 LIBVIRT_BEGIN_ALLOW_THREADS
;
8906 c_retval
= virNodeGetFreePages(conn
,
8907 pyobj_pagesize_size
, pages
,
8908 startCell
, cellCount
,
8910 LIBVIRT_END_ALLOW_THREADS
;
8913 py_retval
= VIR_PY_NONE
;
8917 for (i
= 0; i
< c_retval
;) {
8918 PyObject
*per_node
= NULL
;
8920 if (!(per_node
= PyDict_New()))
8923 VIR_PY_DICT_SET_GOTO(pyobj_counts
,
8924 libvirt_intWrap(startCell
+ i
/pyobj_pagesize_size
),
8927 for (j
= 0; j
< pyobj_pagesize_size
; j
++)
8928 VIR_PY_DICT_SET_GOTO(per_node
, libvirt_intWrap(pages
[j
]),
8929 libvirt_intWrap(counts
[i
+ j
]), cleanup
);
8931 i
+= pyobj_pagesize_size
;
8934 py_retval
= pyobj_counts
;
8935 pyobj_counts
= NULL
;
8937 Py_XDECREF(pyobj_counts
);
8945 libvirt_virNetworkGetDHCPLeases(PyObject
*self ATTRIBUTE_UNUSED
,
8948 PyObject
*py_retval
= NULL
;
8949 PyObject
*py_lease
= NULL
;
8950 virNetworkPtr network
;
8951 PyObject
*pyobj_network
;
8953 virNetworkDHCPLeasePtr
*leases
= NULL
;
8958 if (!PyArg_ParseTuple(args
, (char *) "OzI:virNetworkGetDHCPLeases",
8959 &pyobj_network
, &mac
, &flags
))
8962 network
= (virNetworkPtr
) PyvirNetwork_Get(pyobj_network
);
8964 LIBVIRT_BEGIN_ALLOW_THREADS
;
8965 leases_count
= virNetworkGetDHCPLeases(network
, mac
, &leases
, flags
);
8966 LIBVIRT_END_ALLOW_THREADS
;
8968 if (leases_count
< 0) {
8969 py_retval
= VIR_PY_NONE
;
8973 if (!(py_retval
= PyList_New(leases_count
)))
8976 for (i
= 0; i
< leases_count
; i
++) {
8977 virNetworkDHCPLeasePtr lease
= leases
[i
];
8979 if ((py_lease
= PyDict_New()) == NULL
)
8982 VIR_PY_LIST_SET_GOTO(py_retval
, i
, py_lease
, error
);
8984 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("iface"),
8985 libvirt_charPtrWrap(lease
->iface
), error
);
8986 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("expirytime"),
8987 libvirt_longlongWrap(lease
->expirytime
), error
);
8988 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("type"),
8989 libvirt_intWrap(lease
->type
), error
);
8990 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("mac"),
8991 libvirt_charPtrWrap(lease
->mac
), error
);
8992 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("ipaddr"),
8993 libvirt_charPtrWrap(lease
->ipaddr
), error
);
8994 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("prefix"),
8995 libvirt_uintWrap(lease
->prefix
), error
);
8996 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("hostname"),
8997 libvirt_charPtrWrap(lease
->hostname
), error
);
8998 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("clientid"),
8999 libvirt_charPtrWrap(lease
->clientid
), error
);
9000 VIR_PY_DICT_SET_GOTO(py_lease
, libvirt_constcharPtrWrap("iaid"),
9001 libvirt_charPtrWrap(lease
->iaid
), error
);
9005 if (leases_count
> 0)
9006 for (i
= 0; i
< leases_count
; i
++)
9007 virNetworkDHCPLeaseFree(leases
[i
]);
9013 Py_CLEAR(py_retval
);
9017 #endif /* LIBVIR_CHECK_VERSION(1, 2, 6) */
9019 #if LIBVIR_CHECK_VERSION(1, 2, 8)
9022 convertDomainStatsRecord(virDomainStatsRecordPtr
*records
,
9025 PyObject
*py_retval
;
9026 PyObject
*py_record
;
9027 PyObject
*py_record_stats
= NULL
;
9028 virDomainPtr dom
= NULL
;
9031 if (!(py_retval
= PyList_New(nrecords
)))
9034 for (i
= 0; i
< nrecords
; i
++) {
9035 if (!(py_record
= PyTuple_New(2)))
9038 VIR_PY_LIST_SET_GOTO(py_retval
, i
, py_record
, error
);
9040 dom
= records
[i
]->dom
;
9042 VIR_PY_TUPLE_SET_GOTO(py_record
, 0,
9043 libvirt_virDomainPtrWrap(dom
),
9047 if (!(py_record_stats
= getPyVirTypedParameter(records
[i
]->params
,
9048 records
[i
]->nparams
)))
9050 VIR_PY_TUPLE_SET_GOTO(py_record
, 1, py_record_stats
, error
);
9059 Py_XDECREF(py_retval
);
9065 libvirt_virConnectGetAllDomainStats(PyObject
*self ATTRIBUTE_UNUSED
,
9068 PyObject
*pyobj_conn
;
9069 PyObject
*py_retval
;
9071 virDomainStatsRecordPtr
*records
;
9076 if (!PyArg_ParseTuple(args
, (char *)"OII:virConnectGetAllDomainStats",
9077 &pyobj_conn
, &stats
, &flags
))
9079 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
9081 LIBVIRT_BEGIN_ALLOW_THREADS
;
9082 nrecords
= virConnectGetAllDomainStats(conn
, stats
, &records
, flags
);
9083 LIBVIRT_END_ALLOW_THREADS
;
9088 py_retval
= convertDomainStatsRecord(records
, nrecords
);
9090 virDomainStatsRecordListFree(records
);
9097 libvirt_virDomainListGetStats(PyObject
*self ATTRIBUTE_UNUSED
,
9100 PyObject
*pyobj_conn
;
9101 PyObject
*py_retval
;
9102 PyObject
*py_domlist
;
9103 virDomainStatsRecordPtr
*records
= NULL
;
9104 virDomainPtr
*doms
= NULL
;
9111 if (!PyArg_ParseTuple(args
, (char *)"OOII:virDomainListGetStats",
9112 &pyobj_conn
, &py_domlist
, &stats
, &flags
))
9115 if (PyList_Check(py_domlist
)) {
9116 ndoms
= PyList_Size(py_domlist
);
9118 if (VIR_ALLOC_N(doms
, ndoms
+ 1) < 0)
9119 return PyErr_NoMemory();
9121 for (i
= 0; i
< ndoms
; i
++)
9122 doms
[i
] = PyvirDomain_Get(PyList_GetItem(py_domlist
, i
));
9125 LIBVIRT_BEGIN_ALLOW_THREADS
;
9126 nrecords
= virDomainListGetStats(doms
, stats
, &records
, flags
);
9127 LIBVIRT_END_ALLOW_THREADS
;
9130 py_retval
= VIR_PY_NONE
;
9134 py_retval
= convertDomainStatsRecord(records
, nrecords
);
9137 virDomainStatsRecordListFree(records
);
9144 static virPyTypedParamsHint virPyDomainBlockCopyParams
[] = {
9145 { VIR_DOMAIN_BLOCK_COPY_BANDWIDTH
, VIR_TYPED_PARAM_ULLONG
},
9146 { VIR_DOMAIN_BLOCK_COPY_GRANULARITY
, VIR_TYPED_PARAM_UINT
},
9147 { VIR_DOMAIN_BLOCK_COPY_BUF_SIZE
, VIR_TYPED_PARAM_ULLONG
},
9152 libvirt_virDomainBlockCopy(PyObject
*self ATTRIBUTE_UNUSED
,
9155 PyObject
*pyobj_dom
= NULL
;
9156 PyObject
*pyobj_dict
= NULL
;
9160 char *destxml
= NULL
;
9161 virTypedParameterPtr params
= NULL
;
9163 unsigned int flags
= 0;
9166 if (!PyArg_ParseTuple(args
, (char *) "Ozz|OI:virDomainBlockCopy",
9167 &pyobj_dom
, &disk
, &destxml
, &pyobj_dict
, &flags
))
9170 if (PyDict_Check(pyobj_dict
)) {
9171 if (virPyDictToTypedParams(pyobj_dict
, ¶ms
, &nparams
,
9172 virPyDomainBlockCopyParams
,
9173 VIR_N_ELEMENTS(virPyDomainBlockCopyParams
)) < 0) {
9176 } else if (pyobj_dict
!= Py_None
) {
9177 PyErr_Format(PyExc_TypeError
, "block params must be a dictionary");
9181 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
9183 LIBVIRT_BEGIN_ALLOW_THREADS
;
9184 c_retval
= virDomainBlockCopy(dom
, disk
, destxml
, params
, nparams
, flags
);
9185 LIBVIRT_END_ALLOW_THREADS
;
9187 virTypedParamsFree(params
, nparams
);
9188 return libvirt_intWrap(c_retval
);
9191 #endif /* LIBVIR_CHECK_VERSION(1, 2, 8) */
9193 #if LIBVIR_CHECK_VERSION(1, 2, 9)
9195 libvirt_virNodeAllocPages(PyObject
*self ATTRIBUTE_UNUSED
,
9198 PyObject
*pyobj_conn
;
9199 PyObject
*pyobj_pages
;
9200 Py_ssize_t size
= 0;
9202 PyObject
*key
, *value
;
9204 unsigned int npages
= 0;
9205 unsigned int *pageSizes
= NULL
;
9206 unsigned long long *pageCounts
= NULL
;
9208 unsigned int cellCount
= 1;
9209 unsigned int flags
= VIR_NODE_ALLOC_PAGES_ADD
;
9212 if (!PyArg_ParseTuple(args
, (char *)"OOiII:virNodeAllocPages",
9213 &pyobj_conn
, &pyobj_pages
,
9214 &startCell
, &cellCount
, &flags
))
9216 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
9218 if ((size
= PyDict_Size(pyobj_pages
)) < 0)
9222 PyErr_Format(PyExc_LookupError
,
9223 "Need non-empty dictionary to pages attribute");
9227 if (VIR_ALLOC_N(pageSizes
, size
) < 0 ||
9228 VIR_ALLOC_N(pageCounts
, size
) < 0) {
9233 while (PyDict_Next(pyobj_pages
, &pos
, &key
, &value
)) {
9234 if (libvirt_uintUnwrap(key
, &pageSizes
[npages
]) < 0 ||
9235 libvirt_ulonglongUnwrap(value
, &pageCounts
[npages
]) < 0)
9240 LIBVIRT_BEGIN_ALLOW_THREADS
;
9241 c_retval
= virNodeAllocPages(conn
, npages
, pageSizes
,
9242 pageCounts
, startCell
, cellCount
, flags
);
9243 LIBVIRT_END_ALLOW_THREADS
;
9245 VIR_FREE(pageSizes
);
9246 VIR_FREE(pageCounts
);
9248 return libvirt_intWrap(c_retval
);
9251 VIR_FREE(pageSizes
);
9252 VIR_FREE(pageCounts
);
9255 #endif /* LIBVIR_CHECK_VERSION(1, 2, 8) */
9257 #if LIBVIR_CHECK_VERSION(1, 2, 11)
9260 libvirt_virDomainGetFSInfo(PyObject
*self ATTRIBUTE_UNUSED
,
9263 virDomainPtr domain
;
9264 PyObject
*pyobj_domain
;
9266 virDomainFSInfoPtr
*fsinfo
= NULL
;
9269 PyObject
*py_retval
= NULL
;
9271 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetFSInfo",
9272 &pyobj_domain
, &flags
))
9274 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
9276 LIBVIRT_BEGIN_ALLOW_THREADS
;
9277 c_retval
= virDomainGetFSInfo(domain
, &fsinfo
, flags
);
9278 LIBVIRT_END_ALLOW_THREADS
;
9281 py_retval
= VIR_PY_NONE
;
9285 /* convert to a Python list */
9286 if ((py_retval
= PyList_New(c_retval
)) == NULL
)
9289 for (i
= 0; i
< c_retval
; i
++) {
9290 virDomainFSInfoPtr fs
= fsinfo
[i
];
9291 PyObject
*info
, *alias
;
9296 info
= PyTuple_New(4);
9300 VIR_PY_LIST_SET_GOTO(py_retval
, i
, info
, error
);
9302 VIR_PY_TUPLE_SET_GOTO(info
, 0,
9303 libvirt_constcharPtrWrap(fs
->mountpoint
), error
);
9304 VIR_PY_TUPLE_SET_GOTO(info
, 1,
9305 libvirt_constcharPtrWrap(fs
->name
), error
);
9306 VIR_PY_TUPLE_SET_GOTO(info
, 2,
9307 libvirt_constcharPtrWrap(fs
->fstype
), error
);
9309 alias
= PyList_New(0);
9312 VIR_PY_TUPLE_SET_GOTO(info
, 3, alias
, error
);
9314 for (j
= 0; j
< fs
->ndevAlias
; j
++)
9315 VIR_PY_LIST_APPEND_GOTO(alias
,
9316 libvirt_constcharPtrWrap(fs
->devAlias
[j
]),
9322 for (i
= 0; i
< c_retval
; i
++)
9323 virDomainFSInfoFree(fsinfo
[i
]);
9328 Py_CLEAR(py_retval
);
9332 #endif /* LIBVIR_CHECK_VERSION(1, 2, 11) */
9334 #if LIBVIR_CHECK_VERSION(1, 3, 3)
9336 libvirt_virDomainGetPerfEvents(PyObject
*self ATTRIBUTE_UNUSED
,
9339 PyObject
*pyobj_domain
;
9340 virDomainPtr domain
;
9341 virTypedParameterPtr params
= NULL
;
9343 PyObject
*dict
= NULL
;
9347 if (!PyArg_ParseTuple(args
, (char *) "OI:virDomainGetPerfEvents",
9348 &pyobj_domain
, &flags
))
9350 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
9352 LIBVIRT_BEGIN_ALLOW_THREADS
;
9353 rc
= virDomainGetPerfEvents(domain
, ¶ms
, &nparams
, flags
);
9354 LIBVIRT_END_ALLOW_THREADS
;
9359 if (!(dict
= getPyVirTypedParameter(params
, nparams
)))
9363 virTypedParamsFree(params
, nparams
);
9368 libvirt_virDomainSetPerfEvents(PyObject
*self ATTRIBUTE_UNUSED
,
9371 virDomainPtr domain
;
9372 PyObject
*pyobj_domain
, *info
;
9373 PyObject
*ret
= NULL
;
9376 Py_ssize_t size
= 0;
9378 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
9380 if (!PyArg_ParseTuple(args
,
9381 (char *)"OOI:virDomainSetPerfEvents",
9382 &pyobj_domain
, &info
, &flags
))
9384 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
9386 if ((size
= PyDict_Size(info
)) < 0)
9390 PyErr_Format(PyExc_LookupError
,
9391 "Need non-empty dictionary to set attributes");
9395 LIBVIRT_BEGIN_ALLOW_THREADS
;
9396 i_retval
= virDomainGetPerfEvents(domain
, ¶ms
, &nparams
, flags
);
9397 LIBVIRT_END_ALLOW_THREADS
;
9400 return VIR_PY_INT_FAIL
;
9403 PyErr_Format(PyExc_LookupError
,
9404 "Domain has no settable attributes");
9408 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
9412 LIBVIRT_BEGIN_ALLOW_THREADS
;
9413 i_retval
= virDomainSetPerfEvents(domain
, new_params
, size
, flags
);
9414 LIBVIRT_END_ALLOW_THREADS
;
9417 ret
= VIR_PY_INT_FAIL
;
9421 ret
= VIR_PY_INT_SUCCESS
;
9424 virTypedParamsFree(params
, nparams
);
9425 virTypedParamsFree(new_params
, size
);
9428 #endif /* LIBVIR_CHECK_VERSION(1, 3, 3) */
9430 #if LIBVIR_CHECK_VERSION(2, 0, 0)
9432 libvirt_virConnectStoragePoolEventFreeFunc(void *opaque
)
9434 PyObject
*pyobj_conn
= (PyObject
*)opaque
;
9435 LIBVIRT_ENSURE_THREAD_STATE
;
9436 Py_DECREF(pyobj_conn
);
9437 LIBVIRT_RELEASE_THREAD_STATE
;
9441 libvirt_virConnectStoragePoolEventLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
9442 virStoragePoolPtr pool
,
9447 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
9448 PyObject
*pyobj_pool
;
9449 PyObject
*pyobj_ret
= NULL
;
9450 PyObject
*pyobj_conn
;
9454 LIBVIRT_ENSURE_THREAD_STATE
;
9456 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
9458 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
9461 /* Create a python instance of this virStoragePoolPtr */
9462 virStoragePoolRef(pool
);
9463 if (!(pyobj_pool
= libvirt_virStoragePoolPtrWrap(pool
))) {
9464 virStoragePoolFree(pool
);
9467 Py_INCREF(pyobj_cbData
);
9469 /* Call the Callback Dispatcher */
9470 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
9471 (char*)"_dispatchStoragePoolEventLifecycleCallback",
9478 Py_DECREF(pyobj_cbData
);
9479 Py_DECREF(pyobj_pool
);
9483 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
9486 Py_DECREF(pyobj_ret
);
9490 LIBVIRT_RELEASE_THREAD_STATE
;
9495 libvirt_virConnectStoragePoolEventGenericCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
9496 virStoragePoolPtr pool
,
9499 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
9500 PyObject
*pyobj_pool
;
9501 PyObject
*pyobj_ret
= NULL
;
9502 PyObject
*pyobj_conn
;
9506 LIBVIRT_ENSURE_THREAD_STATE
;
9508 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
9510 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
9513 /* Create a python instance of this virStoragePoolPtr */
9514 virStoragePoolRef(pool
);
9515 if (!(pyobj_pool
= libvirt_virStoragePoolPtrWrap(pool
))) {
9516 virStoragePoolFree(pool
);
9519 Py_INCREF(pyobj_cbData
);
9521 /* Call the Callback Dispatcher */
9522 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
9523 (char*)"_dispatchStoragePoolEventGenericCallback",
9528 Py_DECREF(pyobj_cbData
);
9529 Py_DECREF(pyobj_pool
);
9533 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
9536 Py_DECREF(pyobj_ret
);
9540 LIBVIRT_RELEASE_THREAD_STATE
;
9545 libvirt_virConnectStoragePoolEventRegisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
9548 PyObject
*pyobj_conn
; /* virConnectPtr */
9549 PyObject
*pyobj_pool
;
9550 PyObject
*pyobj_cbData
; /* hash of callback data */
9554 virConnectStoragePoolEventGenericCallback cb
= NULL
;
9555 virStoragePoolPtr pool
;
9557 if (!PyArg_ParseTuple(args
,
9558 (char *) "OOiO:virConnectStoragePoolEventRegisterAny",
9559 &pyobj_conn
, &pyobj_pool
, &eventID
, &pyobj_cbData
))
9562 DEBUG("libvirt_virConnectStoragePoolEventRegister(%p %p %d %p) called\n",
9563 pyobj_conn
, pyobj_pool
, eventID
, pyobj_cbData
);
9564 conn
= PyvirConnect_Get(pyobj_conn
);
9565 if (pyobj_pool
== Py_None
)
9568 pool
= PyvirStoragePool_Get(pyobj_pool
);
9570 switch ((virStoragePoolEventID
) eventID
) {
9571 case VIR_STORAGE_POOL_EVENT_ID_LIFECYCLE
:
9572 cb
= VIR_STORAGE_POOL_EVENT_CALLBACK(libvirt_virConnectStoragePoolEventLifecycleCallback
);
9575 case VIR_STORAGE_POOL_EVENT_ID_REFRESH
:
9576 cb
= VIR_STORAGE_POOL_EVENT_CALLBACK(libvirt_virConnectStoragePoolEventGenericCallback
);
9579 case VIR_STORAGE_POOL_EVENT_ID_LAST
:
9584 return VIR_PY_INT_FAIL
;
9587 Py_INCREF(pyobj_cbData
);
9589 LIBVIRT_BEGIN_ALLOW_THREADS
;
9590 ret
= virConnectStoragePoolEventRegisterAny(conn
,
9595 libvirt_virConnectStoragePoolEventFreeFunc
);
9596 LIBVIRT_END_ALLOW_THREADS
;
9599 Py_DECREF(pyobj_cbData
);
9602 return libvirt_intWrap(ret
);
9606 libvirt_virConnectStoragePoolEventDeregisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
9609 PyObject
*pyobj_conn
;
9614 if (!PyArg_ParseTuple(args
, (char *) "Oi:virConnectStoragePoolEventDeregisterAny",
9615 &pyobj_conn
, &callbackID
))
9618 DEBUG("libvirt_virConnectStoragePoolEventDeregister(%p) called\n",
9621 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
9623 LIBVIRT_BEGIN_ALLOW_THREADS
;
9624 ret
= virConnectStoragePoolEventDeregisterAny(conn
, callbackID
);
9625 LIBVIRT_END_ALLOW_THREADS
;
9627 return libvirt_intWrap(ret
);
9631 libvirt_virDomainGetGuestVcpus(PyObject
*self ATTRIBUTE_UNUSED
,
9634 PyObject
*pyobj_domain
;
9635 virDomainPtr domain
;
9636 virTypedParameterPtr params
= NULL
;
9637 unsigned int nparams
= 0;
9640 PyObject
*ret
= NULL
;
9642 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetGuestVcpus",
9643 &pyobj_domain
, &flags
))
9645 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
9647 LIBVIRT_BEGIN_ALLOW_THREADS
;
9648 i_retval
= virDomainGetGuestVcpus(domain
, ¶ms
, &nparams
, flags
);
9649 LIBVIRT_END_ALLOW_THREADS
;
9656 ret
= getPyVirTypedParameter(params
, nparams
);
9658 virTypedParamsFree(params
, nparams
);
9661 #endif /* LIBVIR_CHECK_VERSION(2, 0, 0)*/
9663 #if LIBVIR_CHECK_VERSION(2, 2, 0)
9665 libvirt_virConnectNodeDeviceEventFreeFunc(void *opaque
)
9667 PyObject
*pyobj_conn
= (PyObject
*)opaque
;
9668 LIBVIRT_ENSURE_THREAD_STATE
;
9669 Py_DECREF(pyobj_conn
);
9670 LIBVIRT_RELEASE_THREAD_STATE
;
9674 libvirt_virConnectNodeDeviceEventLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
9675 virNodeDevicePtr dev
,
9680 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
9681 PyObject
*pyobj_dev
;
9682 PyObject
*pyobj_ret
= NULL
;
9683 PyObject
*pyobj_conn
;
9687 LIBVIRT_ENSURE_THREAD_STATE
;
9689 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
9691 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
9694 /* Create a python instance of this virNodeDevicePtr */
9695 virNodeDeviceRef(dev
);
9696 if (!(pyobj_dev
= libvirt_virNodeDevicePtrWrap(dev
))) {
9697 virNodeDeviceFree(dev
);
9700 Py_INCREF(pyobj_cbData
);
9702 /* Call the Callback Dispatcher */
9703 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
9704 (char*)"_dispatchNodeDeviceEventLifecycleCallback",
9711 Py_DECREF(pyobj_cbData
);
9712 Py_DECREF(pyobj_dev
);
9716 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
9719 Py_DECREF(pyobj_ret
);
9723 LIBVIRT_RELEASE_THREAD_STATE
;
9728 libvirt_virConnectNodeDeviceEventGenericCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
9729 virNodeDevicePtr dev
,
9732 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
9733 PyObject
*pyobj_dev
;
9734 PyObject
*pyobj_ret
= NULL
;
9735 PyObject
*pyobj_conn
;
9739 LIBVIRT_ENSURE_THREAD_STATE
;
9741 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
9743 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
9746 /* Create a python instance of this virNodeDevicePtr */
9747 virNodeDeviceRef(dev
);
9748 if (!(pyobj_dev
= libvirt_virNodeDevicePtrWrap(dev
))) {
9749 virNodeDeviceFree(dev
);
9752 Py_INCREF(pyobj_cbData
);
9754 /* Call the Callback Dispatcher */
9755 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
9756 (char*)"_dispatchNodeDeviceEventGenericCallback",
9761 Py_DECREF(pyobj_cbData
);
9762 Py_DECREF(pyobj_dev
);
9766 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
9769 Py_DECREF(pyobj_ret
);
9773 LIBVIRT_RELEASE_THREAD_STATE
;
9778 libvirt_virConnectNodeDeviceEventRegisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
9781 PyObject
*pyobj_conn
; /* virConnectPtr */
9782 PyObject
*pyobj_dev
;
9783 PyObject
*pyobj_cbData
; /* hash of callback data */
9787 virConnectNodeDeviceEventGenericCallback cb
= NULL
;
9788 virNodeDevicePtr dev
;
9790 if (!PyArg_ParseTuple(args
,
9791 (char *) "OOiO:virConnectNodeDeviceEventRegisterAny",
9792 &pyobj_conn
, &pyobj_dev
, &eventID
, &pyobj_cbData
))
9795 DEBUG("libvirt_virConnectNodeDeviceEventRegister(%p %p %d %p) called\n",
9796 pyobj_conn
, pyobj_dev
, eventID
, pyobj_cbData
);
9797 conn
= PyvirConnect_Get(pyobj_conn
);
9798 if (pyobj_dev
== Py_None
)
9801 dev
= PyvirNodeDevice_Get(pyobj_dev
);
9803 switch ((virNodeDeviceEventID
) eventID
) {
9804 case VIR_NODE_DEVICE_EVENT_ID_LIFECYCLE
:
9805 cb
= VIR_NODE_DEVICE_EVENT_CALLBACK(libvirt_virConnectNodeDeviceEventLifecycleCallback
);
9808 case VIR_NODE_DEVICE_EVENT_ID_UPDATE
:
9809 cb
= VIR_NODE_DEVICE_EVENT_CALLBACK(libvirt_virConnectNodeDeviceEventGenericCallback
);
9812 case VIR_NODE_DEVICE_EVENT_ID_LAST
:
9817 return VIR_PY_INT_FAIL
;
9820 Py_INCREF(pyobj_cbData
);
9822 LIBVIRT_BEGIN_ALLOW_THREADS
;
9823 ret
= virConnectNodeDeviceEventRegisterAny(conn
,
9828 libvirt_virConnectNodeDeviceEventFreeFunc
);
9829 LIBVIRT_END_ALLOW_THREADS
;
9832 Py_DECREF(pyobj_cbData
);
9835 return libvirt_intWrap(ret
);
9839 libvirt_virConnectNodeDeviceEventDeregisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
9842 PyObject
*pyobj_conn
;
9847 if (!PyArg_ParseTuple(args
, (char *) "Oi:virConnectNodeDeviceEventDeregister",
9848 &pyobj_conn
, &callbackID
))
9851 DEBUG("libvirt_virConnectNodeDeviceEventDeregister(%p) called\n",
9854 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
9856 LIBVIRT_BEGIN_ALLOW_THREADS
;
9857 ret
= virConnectNodeDeviceEventDeregisterAny(conn
, callbackID
);
9858 LIBVIRT_END_ALLOW_THREADS
;
9860 return libvirt_intWrap(ret
);
9863 #endif /* LIBVIR_CHECK_VERSION(2, 2, 0)*/
9865 #if LIBVIR_CHECK_VERSION(3, 0, 0)
9867 libvirt_virConnectSecretEventFreeFunc(void *opaque
)
9869 PyObject
*pyobj_conn
= (PyObject
*)opaque
;
9870 LIBVIRT_ENSURE_THREAD_STATE
;
9871 Py_DECREF(pyobj_conn
);
9872 LIBVIRT_RELEASE_THREAD_STATE
;
9876 libvirt_virConnectSecretEventLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
9877 virSecretPtr secret
,
9882 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
9883 PyObject
*pyobj_secret
;
9884 PyObject
*pyobj_ret
= NULL
;
9885 PyObject
*pyobj_conn
;
9889 LIBVIRT_ENSURE_THREAD_STATE
;
9891 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
9893 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
9896 /* Create a python instance of this virSecretPtr */
9897 virSecretRef(secret
);
9898 if (!(pyobj_secret
= libvirt_virSecretPtrWrap(secret
))) {
9899 virSecretFree(secret
);
9902 Py_INCREF(pyobj_cbData
);
9904 /* Call the Callback Dispatcher */
9905 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
9906 (char*)"_dispatchSecretEventLifecycleCallback",
9913 Py_DECREF(pyobj_cbData
);
9914 Py_DECREF(pyobj_secret
);
9918 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
9921 Py_DECREF(pyobj_ret
);
9925 LIBVIRT_RELEASE_THREAD_STATE
;
9930 libvirt_virConnectSecretEventGenericCallback(virConnectPtr conn ATTRIBUTE_UNUSED
,
9931 virSecretPtr secret
,
9934 PyObject
*pyobj_cbData
= (PyObject
*)opaque
;
9935 PyObject
*pyobj_secret
;
9936 PyObject
*pyobj_ret
= NULL
;
9937 PyObject
*pyobj_conn
;
9941 LIBVIRT_ENSURE_THREAD_STATE
;
9943 if (!(dictKey
= libvirt_constcharPtrWrap("conn")))
9945 pyobj_conn
= PyDict_GetItem(pyobj_cbData
, dictKey
);
9948 /* Create a python instance of this virSecretPtr */
9949 virSecretRef(secret
);
9950 if (!(pyobj_secret
= libvirt_virSecretPtrWrap(secret
))) {
9951 virSecretFree(secret
);
9954 Py_INCREF(pyobj_cbData
);
9956 /* Call the Callback Dispatcher */
9957 pyobj_ret
= PyObject_CallMethod(pyobj_conn
,
9958 (char*)"_dispatchSecretEventGenericCallback",
9963 Py_DECREF(pyobj_cbData
);
9964 Py_DECREF(pyobj_secret
);
9968 DEBUG("%s - ret:%p\n", __FUNCTION__
, pyobj_ret
);
9971 Py_DECREF(pyobj_ret
);
9975 LIBVIRT_RELEASE_THREAD_STATE
;
9980 libvirt_virConnectSecretEventRegisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
9983 PyObject
*pyobj_conn
; /* virConnectPtr */
9984 PyObject
*pyobj_secret
;
9985 PyObject
*pyobj_cbData
; /* hash of callback data */
9989 virConnectSecretEventGenericCallback cb
= NULL
;
9990 virSecretPtr secret
;
9992 if (!PyArg_ParseTuple(args
,
9993 (char *) "OOiO:virConnectSecretEventRegisterAny",
9994 &pyobj_conn
, &pyobj_secret
, &eventID
, &pyobj_cbData
))
9997 DEBUG("libvirt_virConnectSecretEventRegister(%p %p %d %p) called\n",
9998 pyobj_conn
, pyobj_secret
, eventID
, pyobj_cbData
);
9999 conn
= PyvirConnect_Get(pyobj_conn
);
10000 if (pyobj_secret
== Py_None
)
10003 secret
= PyvirSecret_Get(pyobj_secret
);
10005 switch ((virSecretEventID
) eventID
) {
10006 case VIR_SECRET_EVENT_ID_LIFECYCLE
:
10007 cb
= VIR_SECRET_EVENT_CALLBACK(libvirt_virConnectSecretEventLifecycleCallback
);
10010 case VIR_SECRET_EVENT_ID_VALUE_CHANGED
:
10011 cb
= VIR_SECRET_EVENT_CALLBACK(libvirt_virConnectSecretEventGenericCallback
);
10014 case VIR_SECRET_EVENT_ID_LAST
:
10019 return VIR_PY_INT_FAIL
;
10022 Py_INCREF(pyobj_cbData
);
10024 LIBVIRT_BEGIN_ALLOW_THREADS
;
10025 ret
= virConnectSecretEventRegisterAny(conn
, secret
, eventID
,
10027 libvirt_virConnectSecretEventFreeFunc
);
10028 LIBVIRT_END_ALLOW_THREADS
;
10031 Py_DECREF(pyobj_cbData
);
10034 return libvirt_intWrap(ret
);
10038 libvirt_virConnectSecretEventDeregisterAny(PyObject
*self ATTRIBUTE_UNUSED
,
10041 PyObject
*pyobj_conn
;
10043 virConnectPtr conn
;
10046 if (!PyArg_ParseTuple(args
, (char *) "Oi:virConnectSecretEventDeregister",
10047 &pyobj_conn
, &callbackID
))
10050 DEBUG("libvirt_virConnectSecretEventDeregister(%p) called\n", pyobj_conn
);
10052 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
10054 LIBVIRT_BEGIN_ALLOW_THREADS
;
10055 ret
= virConnectSecretEventDeregisterAny(conn
, callbackID
);
10056 LIBVIRT_END_ALLOW_THREADS
;
10058 return libvirt_intWrap(ret
);
10060 #endif /* LIBVIR_CHECK_VERSION(3, 0, 0)*/
10063 #if LIBVIR_CHECK_VERSION(3, 4, 0)
10065 libvirt_virStreamRecvHole(PyObject
*self ATTRIBUTE_UNUSED
,
10068 PyObject
*pyobj_stream
;
10069 virStreamPtr stream
;
10070 long long length
= -1;
10071 unsigned int flags
;
10074 if (!PyArg_ParseTuple(args
, (char *) "OI:virStreamRecvHole",
10075 &pyobj_stream
, &flags
))
10078 stream
= PyvirStream_Get(pyobj_stream
);
10080 LIBVIRT_BEGIN_ALLOW_THREADS
;
10081 ret
= virStreamRecvHole(stream
, &length
, flags
);
10082 LIBVIRT_END_ALLOW_THREADS
;
10084 DEBUG("StreamRecvHole ret=%d length=%lld\n", ret
, length
);
10087 return VIR_PY_NONE
;
10089 return libvirt_longlongWrap(length
);
10094 libvirt_virStreamSendHole(PyObject
*self ATTRIBUTE_UNUSED
,
10097 PyObject
*pyobj_stream
;
10098 virStreamPtr stream
;
10100 unsigned int flags
;
10103 if (!PyArg_ParseTuple(args
, (char *) "OLI:virStreamSendHole",
10104 &pyobj_stream
, &length
, &flags
))
10107 stream
= PyvirStream_Get(pyobj_stream
);
10109 LIBVIRT_BEGIN_ALLOW_THREADS
;
10110 ret
= virStreamSendHole(stream
, length
, flags
);
10111 LIBVIRT_END_ALLOW_THREADS
;
10113 DEBUG("StreamSendHole ret=%d\n", ret
);
10115 return libvirt_intWrap(ret
);
10120 libvirt_virStreamRecvFlags(PyObject
*self ATTRIBUTE_UNUSED
,
10123 PyObject
*pyobj_stream
;
10125 virStreamPtr stream
;
10128 unsigned int flags
;
10131 if (!PyArg_ParseTuple(args
, (char *) "OkI:virStreamRecvFlags",
10132 &pyobj_stream
, &nbytes
, &flags
))
10135 stream
= PyvirStream_Get(pyobj_stream
);
10137 if (VIR_ALLOC_N(buf
, nbytes
+ 1) < 0)
10138 return PyErr_NoMemory();
10140 LIBVIRT_BEGIN_ALLOW_THREADS
;
10141 ret
= virStreamRecvFlags(stream
, buf
, nbytes
, flags
);
10142 LIBVIRT_END_ALLOW_THREADS
;
10144 buf
[ret
> -1 ? ret
: 0] = '\0';
10145 DEBUG("StreamRecvFlags ret=%d strlen=%zu\n", ret
, strlen(buf
));
10147 if (ret
== -2 || ret
== -3) {
10148 rv
= libvirt_intWrap(ret
);
10149 } else if (ret
< 0) {
10152 rv
= libvirt_charPtrSizeWrap((char *) buf
, (Py_ssize_t
) ret
);
10159 #endif /* LIBVIR_CHECK_VERSION(3, 4, 0) */
10162 #if LIBVIR_CHECK_VERSION(4, 4, 0)
10164 libvirt_virConnectBaselineHypervisorCPU(PyObject
*self ATTRIBUTE_UNUSED
,
10167 virConnectPtr conn
;
10168 PyObject
*pyobj_conn
;
10174 unsigned int flags
;
10175 char **xmlCPUs
= NULL
;
10179 PyObject
*ret
= NULL
;
10181 if (!PyArg_ParseTuple(args
, (char *)"OzzzzOI:virConnectBaselineHypervisorCPU",
10182 &pyobj_conn
, &emulator
, &arch
, &machine
, &virttype
,
10186 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
10188 if (PyList_Check(list
)) {
10189 ncpus
= PyList_Size(list
);
10190 if (VIR_ALLOC_N(xmlCPUs
, ncpus
) < 0)
10191 return PyErr_NoMemory();
10193 for (i
= 0; i
< ncpus
; i
++) {
10194 if (libvirt_charPtrUnwrap(PyList_GetItem(list
, i
),
10195 &(xmlCPUs
[i
])) < 0)
10200 LIBVIRT_BEGIN_ALLOW_THREADS
;
10201 cpu
= virConnectBaselineHypervisorCPU(conn
, emulator
, arch
, machine
, virttype
,
10202 (const char **)xmlCPUs
, ncpus
, flags
);
10203 LIBVIRT_END_ALLOW_THREADS
;
10205 ret
= libvirt_constcharPtrWrap(cpu
);
10208 for (i
= 0; i
< ncpus
; i
++)
10209 VIR_FREE(xmlCPUs
[i
]);
10215 #endif /* LIBVIR_CHECK_VERSION(4, 4, 0) */
10218 #if LIBVIR_CHECK_VERSION(4, 5, 0)
10220 libvirt_virDomainGetLaunchSecurityInfo(PyObject
*self ATTRIBUTE_UNUSED
,
10223 PyObject
*pyobj_dom
= NULL
;
10224 PyObject
*ret
= NULL
;
10226 virDomainPtr dom
= NULL
;
10227 virTypedParameterPtr params
= NULL
;
10229 unsigned int flags
= 0;
10232 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetLaunchSecurityInfo",
10233 &pyobj_dom
, &flags
))
10235 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10237 LIBVIRT_BEGIN_ALLOW_THREADS
;
10238 i_retval
= virDomainGetLaunchSecurityInfo(dom
, ¶ms
, &nparams
, flags
);
10239 LIBVIRT_END_ALLOW_THREADS
;
10241 if (i_retval
< 0) {
10246 ret
= getPyVirTypedParameter(params
, nparams
);
10248 virTypedParamsFree(params
, nparams
);
10254 libvirt_virNodeGetSEVInfo(PyObject
*self ATTRIBUTE_UNUSED
,
10257 PyObject
*pyobj_conn
= NULL
;
10258 PyObject
*ret
= NULL
;
10260 virConnectPtr conn
= NULL
;
10261 virTypedParameterPtr params
= NULL
;
10263 unsigned int flags
= 0;
10266 if (!PyArg_ParseTuple(args
, (char *)"OI:virNodeGetSEVInfo",
10267 &pyobj_conn
, &flags
))
10269 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
10271 LIBVIRT_BEGIN_ALLOW_THREADS
;
10272 i_retval
= virNodeGetSEVInfo(conn
, ¶ms
, &nparams
, flags
);
10273 LIBVIRT_END_ALLOW_THREADS
;
10275 if (i_retval
< 0) {
10280 ret
= getPyVirTypedParameter(params
, nparams
);
10282 virTypedParamsFree(params
, nparams
);
10285 #endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
10287 #if LIBVIR_CHECK_VERSION(5, 5, 0)
10289 libvirt_virNetworkListAllPorts(PyObject
*self ATTRIBUTE_UNUSED
,
10292 PyObject
*pyobj_conn
;
10293 PyObject
*py_retval
= NULL
;
10294 virNetworkPtr conn
;
10295 virNetworkPortPtr
*doms
= NULL
;
10298 unsigned int flags
;
10300 if (!PyArg_ParseTuple(args
, (char *)"OI:virNetworkListAllPorts",
10301 &pyobj_conn
, &flags
))
10303 conn
= (virNetworkPtr
) PyvirNetwork_Get(pyobj_conn
);
10305 LIBVIRT_BEGIN_ALLOW_THREADS
;
10306 c_retval
= virNetworkListAllPorts(conn
, &doms
, flags
);
10307 LIBVIRT_END_ALLOW_THREADS
;
10310 return VIR_PY_NONE
;
10312 if (!(py_retval
= PyList_New(c_retval
)))
10315 for (i
= 0; i
< c_retval
; i
++) {
10316 VIR_PY_LIST_SET_GOTO(py_retval
, i
, libvirt_virNetworkPortPtrWrap(doms
[i
]), error
);
10317 /* python steals the pointer */
10322 for (i
= 0; i
< c_retval
; i
++)
10324 virNetworkPortFree(doms
[i
]);
10329 Py_CLEAR(py_retval
);
10334 libvirt_virNetworkPortSetParameters(PyObject
*self ATTRIBUTE_UNUSED
,
10337 virNetworkPortPtr port
;
10338 PyObject
*pyobj_port
, *info
;
10339 PyObject
*ret
= NULL
;
10342 Py_ssize_t size
= 0;
10343 unsigned int flags
;
10344 virTypedParameterPtr params
= NULL
, new_params
= NULL
;
10346 if (!PyArg_ParseTuple(args
,
10347 (char *)"OOI:virNetworkPortSetParameters",
10348 &pyobj_port
, &info
, &flags
))
10350 port
= (virNetworkPortPtr
) PyvirNetworkPort_Get(pyobj_port
);
10352 if ((size
= PyDict_Size(info
)) < 0)
10356 PyErr_Format(PyExc_LookupError
,
10357 "Need non-empty dictionary to set attributes");
10361 LIBVIRT_BEGIN_ALLOW_THREADS
;
10362 i_retval
= virNetworkPortGetParameters(port
, ¶ms
, &nparams
, flags
);
10363 LIBVIRT_END_ALLOW_THREADS
;
10366 return VIR_PY_INT_FAIL
;
10368 if (nparams
== 0) {
10369 PyErr_Format(PyExc_LookupError
,
10370 "Port has no settable attributes");
10374 new_params
= setPyVirTypedParameter(info
, params
, nparams
);
10378 LIBVIRT_BEGIN_ALLOW_THREADS
;
10379 i_retval
= virNetworkPortSetParameters(port
, new_params
, size
, flags
);
10380 LIBVIRT_END_ALLOW_THREADS
;
10382 if (i_retval
< 0) {
10383 ret
= VIR_PY_INT_FAIL
;
10387 ret
= VIR_PY_INT_SUCCESS
;
10390 virTypedParamsFree(params
, nparams
);
10391 virTypedParamsFree(new_params
, size
);
10396 libvirt_virNetworkPortGetParameters(PyObject
*self ATTRIBUTE_UNUSED
,
10399 PyObject
*pyobj_port
;
10400 virNetworkPortPtr port
;
10401 virTypedParameterPtr params
= NULL
;
10403 PyObject
*dict
= NULL
;
10404 unsigned int flags
;
10407 if (!PyArg_ParseTuple(args
, (char *) "OI:virNetworkPortGetParameters",
10408 &pyobj_port
, &flags
))
10410 port
= (virNetworkPortPtr
) PyvirNetworkPort_Get(pyobj_port
);
10412 LIBVIRT_BEGIN_ALLOW_THREADS
;
10413 rc
= virNetworkPortGetParameters(port
, ¶ms
, &nparams
, flags
);
10414 LIBVIRT_END_ALLOW_THREADS
;
10417 return VIR_PY_NONE
;
10419 dict
= getPyVirTypedParameter(params
, nparams
);
10421 virTypedParamsFree(params
, nparams
);
10426 libvirt_virNetworkPortGetUUID(PyObject
*self ATTRIBUTE_UNUSED
,
10429 unsigned char uuid
[VIR_UUID_BUFLEN
];
10430 virNetworkPortPtr port
;
10431 PyObject
*pyobj_port
;
10434 if (!PyArg_ParseTuple(args
, (char *)"O:virNetworkPortGetUUID", &pyobj_port
))
10436 port
= (virNetworkPortPtr
) PyvirNetworkPort_Get(pyobj_port
);
10439 return VIR_PY_NONE
;
10441 LIBVIRT_BEGIN_ALLOW_THREADS
;
10442 c_retval
= virNetworkPortGetUUID(port
, &uuid
[0]);
10443 LIBVIRT_END_ALLOW_THREADS
;
10446 return VIR_PY_NONE
;
10448 return libvirt_charPtrSizeWrap((char *) &uuid
[0], VIR_UUID_BUFLEN
);
10452 libvirt_virNetworkPortGetUUIDString(PyObject
*self ATTRIBUTE_UNUSED
,
10455 char uuidstr
[VIR_UUID_STRING_BUFLEN
];
10456 virNetworkPortPtr port
;
10457 PyObject
*pyobj_port
;
10460 if (!PyArg_ParseTuple(args
, (char *)"O:virNetworkPortGetUUIDString",
10463 port
= (virNetworkPortPtr
) PyvirNetworkPort_Get(pyobj_port
);
10466 return VIR_PY_NONE
;
10468 LIBVIRT_BEGIN_ALLOW_THREADS
;
10469 c_retval
= virNetworkPortGetUUIDString(port
, &uuidstr
[0]);
10470 LIBVIRT_END_ALLOW_THREADS
;
10473 return VIR_PY_NONE
;
10475 return libvirt_constcharPtrWrap((char *) &uuidstr
[0]);
10479 libvirt_virNetworkPortLookupByUUID(PyObject
*self ATTRIBUTE_UNUSED
,
10482 virNetworkPortPtr c_retval
;
10484 PyObject
*pyobj_net
;
10485 unsigned char *uuid
;
10488 if (!PyArg_ParseTuple(args
, (char *)"Oz#:virNetworkPortLookupByUUID",
10489 &pyobj_net
, &uuid
, &len
))
10491 net
= (virNetworkPtr
) PyvirNetwork_Get(pyobj_net
);
10493 if ((uuid
== NULL
) || (len
!= VIR_UUID_BUFLEN
))
10494 return VIR_PY_NONE
;
10496 LIBVIRT_BEGIN_ALLOW_THREADS
;
10497 c_retval
= virNetworkPortLookupByUUID(net
, uuid
);
10498 LIBVIRT_END_ALLOW_THREADS
;
10500 return libvirt_virNetworkPortPtrWrap((virNetworkPortPtr
) c_retval
);
10504 #endif /* LIBVIR_CHECK_VERSION(5, 5, 0) */
10506 #if LIBVIR_CHECK_VERSION(5, 7, 0)
10508 libvirt_virDomainGetGuestInfo(PyObject
*self ATTRIBUTE_UNUSED
,
10511 PyObject
*pyobj_dom
= NULL
;
10512 PyObject
*dict
= NULL
;
10513 virDomainPtr dom
= NULL
;
10514 virTypedParameterPtr params
= NULL
;
10516 unsigned int types
;
10517 unsigned int flags
;
10520 if (!PyArg_ParseTuple(args
, (char *) "OII:virDomainGetGuestInfo",
10521 &pyobj_dom
, &types
, &flags
))
10523 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10525 LIBVIRT_BEGIN_ALLOW_THREADS
;
10526 rc
= virDomainGetGuestInfo(dom
, types
, ¶ms
, &nparams
, flags
);
10527 LIBVIRT_END_ALLOW_THREADS
;
10530 return VIR_PY_NONE
;
10532 dict
= getPyVirTypedParameter(params
, nparams
);
10534 virTypedParamsFree(params
, nparams
);
10537 #endif /* LIBVIR_CHECK_VERSION(5, 7, 0) */
10540 #if LIBVIR_CHECK_VERSION(5, 8, 0)
10541 static virPyTypedParamsHint virPyConnectSetIdentityParams
[] = {
10542 { VIR_CONNECT_IDENTITY_USER_NAME
, VIR_TYPED_PARAM_STRING
},
10543 { VIR_CONNECT_IDENTITY_UNIX_USER_ID
, VIR_TYPED_PARAM_ULLONG
},
10544 { VIR_CONNECT_IDENTITY_GROUP_NAME
, VIR_TYPED_PARAM_STRING
},
10545 { VIR_CONNECT_IDENTITY_UNIX_GROUP_ID
, VIR_TYPED_PARAM_ULLONG
},
10546 { VIR_CONNECT_IDENTITY_PROCESS_ID
, VIR_TYPED_PARAM_LLONG
},
10547 { VIR_CONNECT_IDENTITY_PROCESS_TIME
, VIR_TYPED_PARAM_ULLONG
},
10548 { VIR_CONNECT_IDENTITY_SASL_USER_NAME
, VIR_TYPED_PARAM_STRING
},
10549 { VIR_CONNECT_IDENTITY_X509_DISTINGUISHED_NAME
, VIR_TYPED_PARAM_STRING
},
10550 { VIR_CONNECT_IDENTITY_SELINUX_CONTEXT
, VIR_TYPED_PARAM_STRING
},
10554 libvirt_virConnectSetIdentity(PyObject
*self ATTRIBUTE_UNUSED
,
10557 virConnectPtr conn
;
10558 PyObject
*pyobj_conn
, *dict
;
10559 PyObject
*ret
= NULL
;
10562 unsigned int flags
;
10563 virTypedParameterPtr params
= NULL
;
10565 if (!PyArg_ParseTuple(args
,
10566 (char *)"OOI:virConnectSetIdentity",
10567 &pyobj_conn
, &dict
, &flags
))
10569 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
10571 if (!PyDict_Check(dict
)) {
10572 PyErr_Format(PyExc_TypeError
, "migration params must be a dictionary");
10576 if (virPyDictToTypedParams(dict
, ¶ms
, &nparams
,
10577 virPyConnectSetIdentityParams
,
10578 VIR_N_ELEMENTS(virPyConnectSetIdentityParams
)) < 0) {
10582 LIBVIRT_BEGIN_ALLOW_THREADS
;
10583 i_retval
= virConnectSetIdentity(conn
, params
, nparams
, flags
);
10584 LIBVIRT_END_ALLOW_THREADS
;
10586 if (i_retval
< 0) {
10587 ret
= VIR_PY_INT_FAIL
;
10591 ret
= VIR_PY_INT_SUCCESS
;
10594 virTypedParamsFree(params
, nparams
);
10597 #endif /* LIBVIR_CHECK_VERSION(5, 8, 0) */
10600 #if LIBVIR_CHECK_VERSION(6, 10, 0)
10602 libvirt_virDomainAuthorizedSSHKeysGet(PyObject
*self ATTRIBUTE_UNUSED
,
10605 PyObject
*pyobj_dom
= NULL
;
10606 virDomainPtr dom
= NULL
;
10607 const char *user
= NULL
;
10608 char **keys
= NULL
;
10611 unsigned int flags
;
10612 PyObject
*ret
= NULL
;
10614 if (!PyArg_ParseTuple(args
, (char *)"OsI:virDomainAuthorizedSSHKeysGet",
10615 &pyobj_dom
, &user
, &flags
))
10617 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10619 LIBVIRT_BEGIN_ALLOW_THREADS
;
10620 nkeys
= virDomainAuthorizedSSHKeysGet(dom
, user
, &keys
, flags
);
10621 LIBVIRT_END_ALLOW_THREADS
;
10624 return VIR_PY_NONE
;
10626 if ((ret
= PyList_New(nkeys
)) == NULL
)
10629 for (i
= 0; i
< nkeys
; i
++)
10630 VIR_PY_LIST_SET_GOTO(ret
, i
, libvirt_constcharPtrWrap(keys
[i
]), error
);
10633 for (i
= 0; i
< nkeys
; i
++)
10645 libvirt_virDomainAuthorizedSSHKeysSet(PyObject
*self ATTRIBUTE_UNUSED
,
10648 PyObject
*pyobj_dom
= NULL
;
10649 virDomainPtr dom
= NULL
;
10650 const char *user
= NULL
;
10651 PyObject
*pyobj_keys
= NULL
;
10652 char **keys
= NULL
;
10655 unsigned int flags
;
10657 PyObject
*py_retval
= NULL
;
10659 if (!PyArg_ParseTuple(args
, (char *)"OsOI:virDomainAuthorizedSSHKeysSet",
10660 &pyobj_dom
, &user
, &pyobj_keys
, &flags
))
10662 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10664 if (PyList_Check(pyobj_keys
)) {
10665 nkeys
= PyList_Size(pyobj_keys
);
10667 if (VIR_ALLOC_N(keys
, nkeys
) < 0)
10668 return PyErr_NoMemory();
10670 for (i
= 0; i
< nkeys
; i
++) {
10671 if (libvirt_charPtrUnwrap(PyList_GetItem(pyobj_keys
, i
),
10677 LIBVIRT_BEGIN_ALLOW_THREADS
;
10678 c_retval
= virDomainAuthorizedSSHKeysSet(dom
, user
, (const char **)keys
, nkeys
, flags
);
10679 LIBVIRT_END_ALLOW_THREADS
;
10681 py_retval
= libvirt_intWrap(c_retval
);
10683 for (i
= 0 ; i
< nkeys
; i
++)
10689 #endif /* LIBVIR_CHECK_VERSION(6, 10, 0) */
10691 #if LIBVIR_CHECK_VERSION(7, 1, 0)
10693 libvirt_virDomainGetMessages(PyObject
*self ATTRIBUTE_UNUSED
,
10696 PyObject
*pyobj_dom
= NULL
;
10697 virDomainPtr dom
= NULL
;
10698 char **msgs
= NULL
;
10701 unsigned int flags
;
10702 PyObject
*ret
= NULL
;
10704 if (!PyArg_ParseTuple(args
, (char *)"OI:virDomainGetMessages",
10705 &pyobj_dom
, &flags
))
10707 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10709 LIBVIRT_BEGIN_ALLOW_THREADS
;
10710 nmsgs
= virDomainGetMessages(dom
, &msgs
, flags
);
10711 LIBVIRT_END_ALLOW_THREADS
;
10714 return VIR_PY_NONE
;
10716 if ((ret
= PyList_New(nmsgs
)) == NULL
)
10719 for (i
= 0; i
< nmsgs
; i
++)
10720 VIR_PY_LIST_SET_GOTO(ret
, i
, libvirt_constcharPtrWrap(msgs
[i
]), error
);
10723 for (i
= 0; i
< nmsgs
; i
++)
10732 #endif /* LIBVIR_CHECK_VERSION(7, 1, 0) */
10734 #if LIBVIR_CHECK_VERSION(8, 0, 0)
10736 static virPyTypedParamsHint virPyDomainSetLaunchSecurityStateParams
[] = {
10737 { VIR_DOMAIN_LAUNCH_SECURITY_SEV_SECRET
, VIR_TYPED_PARAM_STRING
},
10738 { VIR_DOMAIN_LAUNCH_SECURITY_SEV_SECRET_HEADER
, VIR_TYPED_PARAM_STRING
},
10739 { VIR_DOMAIN_LAUNCH_SECURITY_SEV_SECRET_SET_ADDRESS
, VIR_TYPED_PARAM_ULLONG
},
10743 libvirt_virDomainSetLaunchSecurityState(PyObject
*self ATTRIBUTE_UNUSED
,
10746 PyObject
*pyobj_dom
= NULL
;
10747 PyObject
*pyobj_dict
= NULL
;
10750 virTypedParameterPtr params
= NULL
;
10752 unsigned int flags
;
10755 if (!PyArg_ParseTuple(args
, (char *)"OOI:virDomainSetLaunchSecurityState",
10756 &pyobj_dom
, &pyobj_dict
, &flags
))
10759 if (PyDict_Check(pyobj_dict
)) {
10760 if (virPyDictToTypedParams(pyobj_dict
, ¶ms
, &nparams
,
10761 virPyDomainSetLaunchSecurityStateParams
,
10762 VIR_N_ELEMENTS(virPyDomainSetLaunchSecurityStateParams
)) < 0) {
10766 PyErr_Format(PyExc_TypeError
, "Launch security state params must be "
10771 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10773 LIBVIRT_BEGIN_ALLOW_THREADS
;
10774 c_retval
= virDomainSetLaunchSecurityState(dom
, params
, nparams
, flags
);
10775 LIBVIRT_END_ALLOW_THREADS
;
10777 virTypedParamsFree(params
, nparams
);
10779 return libvirt_intWrap(c_retval
);
10781 #endif /* LIBVIR_CHECK_VERSION(8, 0, 0) */
10784 #if LIBVIR_CHECK_VERSION(8, 4, 0)
10785 static virPyTypedParamsHint virPyDomainSaveParams
[] = {
10786 { VIR_DOMAIN_SAVE_PARAM_FILE
, VIR_TYPED_PARAM_STRING
},
10787 { VIR_DOMAIN_SAVE_PARAM_DXML
, VIR_TYPED_PARAM_STRING
},
10792 libvirt_virDomainSaveParams(PyObject
*self ATTRIBUTE_UNUSED
,
10795 PyObject
*pyobj_dom
= NULL
;
10796 PyObject
*pyobj_dict
= NULL
;
10798 virTypedParameterPtr params
= NULL
;
10800 unsigned int flags
= 0;
10803 if (!PyArg_ParseTuple(args
, (char *)"OO|I:virDomainSaveParams",
10804 &pyobj_dom
, &pyobj_dict
, &flags
))
10807 if (PyDict_Check(pyobj_dict
)) {
10808 if (virPyDictToTypedParams(pyobj_dict
, ¶ms
, &nparams
,
10809 virPyDomainSaveParams
,
10810 VIR_N_ELEMENTS(virPyDomainSaveParams
)) < 0) {
10814 PyErr_Format(PyExc_TypeError
, "Save params must be a dictionary");
10818 dom
= (virDomainPtr
) PyvirDomain_Get(pyobj_dom
);
10820 LIBVIRT_BEGIN_ALLOW_THREADS
;
10821 c_retval
= virDomainSaveParams(dom
, params
, nparams
, flags
);
10822 LIBVIRT_END_ALLOW_THREADS
;
10824 virTypedParamsFree(params
, nparams
);
10826 return libvirt_intWrap(c_retval
);
10830 libvirt_virDomainRestoreParams(PyObject
*self ATTRIBUTE_UNUSED
,
10833 PyObject
*pyobj_conn
= NULL
;
10834 PyObject
*pyobj_dict
= NULL
;
10835 virConnectPtr conn
;
10836 virTypedParameterPtr params
= NULL
;
10838 unsigned int flags
= 0;
10841 if (!PyArg_ParseTuple(args
, (char *)"OO|I:virDomainRestoreParams",
10842 &pyobj_conn
, &pyobj_dict
, &flags
))
10845 if (PyDict_Check(pyobj_dict
)) {
10846 if (virPyDictToTypedParams(pyobj_dict
, ¶ms
, &nparams
,
10847 virPyDomainSaveParams
,
10848 VIR_N_ELEMENTS(virPyDomainSaveParams
)) < 0) {
10852 PyErr_Format(PyExc_TypeError
, "Restore params must be a dictionary");
10856 conn
= (virConnectPtr
) PyvirConnect_Get(pyobj_conn
);
10858 LIBVIRT_BEGIN_ALLOW_THREADS
;
10859 c_retval
= virDomainRestoreParams(conn
, params
, nparams
, flags
);
10860 LIBVIRT_END_ALLOW_THREADS
;
10862 virTypedParamsFree(params
, nparams
);
10864 return libvirt_intWrap(c_retval
);
10866 #endif /* LIBVIR_CHECK_VERSION(8, 4, 0) */
10869 #if LIBVIR_CHECK_VERSION(9, 0, 0)
10871 libvirt_virDomainFDAssociate(PyObject
*self ATTRIBUTE_UNUSED
,
10874 PyObject
*py_retval
= NULL
;
10876 virDomainPtr domain
;
10877 PyObject
*pyobj_domain
;
10878 PyObject
*pyobj_files
;
10879 const char *name
= NULL
;
10880 unsigned int flags
;
10881 unsigned int nfiles
;
10885 if (!PyArg_ParseTuple(args
, (char *)"OsOI:virDomainFDAssociate",
10886 &pyobj_domain
, &name
, &pyobj_files
, &flags
))
10888 domain
= (virDomainPtr
) PyvirDomain_Get(pyobj_domain
);
10890 nfiles
= PyList_Size(pyobj_files
);
10892 if (VIR_ALLOC_N(files
, nfiles
) < 0)
10893 return PyErr_NoMemory();
10895 for (i
= 0; i
< nfiles
; i
++) {
10899 pyfd
= PyList_GetItem(pyobj_files
, i
);
10901 if (libvirt_intUnwrap(pyfd
, &fd
) < 0)
10907 LIBVIRT_BEGIN_ALLOW_THREADS
;
10908 c_retval
= virDomainFDAssociate(domain
, name
, nfiles
, files
, flags
);
10909 LIBVIRT_END_ALLOW_THREADS
;
10911 py_retval
= libvirt_intWrap(c_retval
);
10917 #endif /* LIBVIR_CHECK_VERSION(9, 0, 0) */
10921 /************************************************************************
10923 * The registration stuff *
10925 ************************************************************************/
10926 static PyMethodDef libvirtMethods
[] = {
10927 #include "libvirt-export.c.inc"
10928 {(char *) "virGetVersion", libvirt_virGetVersion
, METH_VARARGS
, NULL
},
10929 {(char *) "virConnectGetVersion", libvirt_virConnectGetVersion
, METH_VARARGS
, NULL
},
10930 #if LIBVIR_CHECK_VERSION(1, 1, 3)
10931 {(char *) "virConnectGetCPUModelNames", libvirt_virConnectGetCPUModelNames
, METH_VARARGS
, NULL
},
10932 #endif /* LIBVIR_CHECK_VERSION(1, 1, 3) */
10933 {(char *) "virConnectGetLibVersion", libvirt_virConnectGetLibVersion
, METH_VARARGS
, NULL
},
10934 {(char *) "virConnectOpenAuth", libvirt_virConnectOpenAuth
, METH_VARARGS
, NULL
},
10935 {(char *) "virConnectListDomainsID", libvirt_virConnectListDomainsID
, METH_VARARGS
, NULL
},
10936 {(char *) "virConnectListDefinedDomains", libvirt_virConnectListDefinedDomains
, METH_VARARGS
, NULL
},
10937 #if LIBVIR_CHECK_VERSION(0, 9, 13)
10938 {(char *) "virConnectListAllDomains", libvirt_virConnectListAllDomains
, METH_VARARGS
, NULL
},
10939 #endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
10940 {(char *) "virConnectDomainEventRegister", libvirt_virConnectDomainEventRegister
, METH_VARARGS
, NULL
},
10941 {(char *) "virConnectDomainEventDeregister", libvirt_virConnectDomainEventDeregister
, METH_VARARGS
, NULL
},
10942 {(char *) "virConnectDomainEventRegisterAny", libvirt_virConnectDomainEventRegisterAny
, METH_VARARGS
, NULL
},
10943 {(char *) "virConnectDomainEventDeregisterAny", libvirt_virConnectDomainEventDeregisterAny
, METH_VARARGS
, NULL
},
10944 #if LIBVIR_CHECK_VERSION(1, 2, 1)
10945 {(char *) "virConnectNetworkEventRegisterAny", libvirt_virConnectNetworkEventRegisterAny
, METH_VARARGS
, NULL
},
10946 {(char *) "virConnectNetworkEventDeregisterAny", libvirt_virConnectNetworkEventDeregisterAny
, METH_VARARGS
, NULL
},
10947 #endif /* LIBVIR_CHECK_VERSION(1, 2, 1) */
10948 #if LIBVIR_CHECK_VERSION(0, 10, 0)
10949 {(char *) "virConnectRegisterCloseCallback", libvirt_virConnectRegisterCloseCallback
, METH_VARARGS
, NULL
},
10950 {(char *) "virConnectUnregisterCloseCallback", libvirt_virConnectUnregisterCloseCallback
, METH_VARARGS
, NULL
},
10951 #endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
10952 {(char *) "virStreamEventAddCallback", libvirt_virStreamEventAddCallback
, METH_VARARGS
, NULL
},
10953 {(char *) "virStreamRecv", libvirt_virStreamRecv
, METH_VARARGS
, NULL
},
10954 {(char *) "virStreamSend", libvirt_virStreamSend
, METH_VARARGS
, NULL
},
10955 {(char *) "virDomainGetInfo", libvirt_virDomainGetInfo
, METH_VARARGS
, NULL
},
10956 {(char *) "virDomainGetState", libvirt_virDomainGetState
, METH_VARARGS
, NULL
},
10957 {(char *) "virDomainGetControlInfo", libvirt_virDomainGetControlInfo
, METH_VARARGS
, NULL
},
10958 {(char *) "virDomainGetBlockInfo", libvirt_virDomainGetBlockInfo
, METH_VARARGS
, NULL
},
10959 {(char *) "virNodeGetInfo", libvirt_virNodeGetInfo
, METH_VARARGS
, NULL
},
10960 {(char *) "virNodeGetSecurityModel", libvirt_virNodeGetSecurityModel
, METH_VARARGS
, NULL
},
10961 {(char *) "virDomainGetSecurityLabel", libvirt_virDomainGetSecurityLabel
, METH_VARARGS
, NULL
},
10962 #if LIBVIR_CHECK_VERSION(0, 10, 0)
10963 {(char *) "virDomainGetSecurityLabelList", libvirt_virDomainGetSecurityLabelList
, METH_VARARGS
, NULL
},
10964 #endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
10965 {(char *) "virNodeGetCPUStats", libvirt_virNodeGetCPUStats
, METH_VARARGS
, NULL
},
10966 {(char *) "virNodeGetMemoryStats", libvirt_virNodeGetMemoryStats
, METH_VARARGS
, NULL
},
10967 {(char *) "virDomainGetUUID", libvirt_virDomainGetUUID
, METH_VARARGS
, NULL
},
10968 {(char *) "virDomainGetUUIDString", libvirt_virDomainGetUUIDString
, METH_VARARGS
, NULL
},
10969 {(char *) "virDomainLookupByUUID", libvirt_virDomainLookupByUUID
, METH_VARARGS
, NULL
},
10970 {(char *) "virRegisterErrorHandler", libvirt_virRegisterErrorHandler
, METH_VARARGS
, NULL
},
10971 {(char *) "virGetLastError", libvirt_virGetLastError
, METH_VARARGS
, NULL
},
10972 {(char *) "virConnGetLastError", libvirt_virConnGetLastError
, METH_VARARGS
, NULL
},
10973 {(char *) "virConnectListNetworks", libvirt_virConnectListNetworks
, METH_VARARGS
, NULL
},
10974 {(char *) "virConnectListDefinedNetworks", libvirt_virConnectListDefinedNetworks
, METH_VARARGS
, NULL
},
10975 #if LIBVIR_CHECK_VERSION(0, 10, 2)
10976 {(char *) "virConnectListAllNetworks", libvirt_virConnectListAllNetworks
, METH_VARARGS
, NULL
},
10977 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
10978 {(char *) "virNetworkGetUUID", libvirt_virNetworkGetUUID
, METH_VARARGS
, NULL
},
10979 {(char *) "virNetworkGetUUIDString", libvirt_virNetworkGetUUIDString
, METH_VARARGS
, NULL
},
10980 {(char *) "virNetworkLookupByUUID", libvirt_virNetworkLookupByUUID
, METH_VARARGS
, NULL
},
10981 {(char *) "virDomainGetAutostart", libvirt_virDomainGetAutostart
, METH_VARARGS
, NULL
},
10982 {(char *) "virNetworkGetAutostart", libvirt_virNetworkGetAutostart
, METH_VARARGS
, NULL
},
10983 {(char *) "virDomainBlockStats", libvirt_virDomainBlockStats
, METH_VARARGS
, NULL
},
10984 {(char *) "virDomainBlockStatsFlags", libvirt_virDomainBlockStatsFlags
, METH_VARARGS
, NULL
},
10985 {(char *) "virDomainGetCPUStats", libvirt_virDomainGetCPUStats
, METH_VARARGS
, NULL
},
10986 {(char *) "virDomainInterfaceStats", libvirt_virDomainInterfaceStats
, METH_VARARGS
, NULL
},
10987 {(char *) "virDomainMemoryStats", libvirt_virDomainMemoryStats
, METH_VARARGS
, NULL
},
10988 {(char *) "virNodeGetCellsFreeMemory", libvirt_virNodeGetCellsFreeMemory
, METH_VARARGS
, NULL
},
10989 {(char *) "virDomainGetSchedulerType", libvirt_virDomainGetSchedulerType
, METH_VARARGS
, NULL
},
10990 {(char *) "virDomainGetSchedulerParameters", libvirt_virDomainGetSchedulerParameters
, METH_VARARGS
, NULL
},
10991 {(char *) "virDomainGetSchedulerParametersFlags", libvirt_virDomainGetSchedulerParametersFlags
, METH_VARARGS
, NULL
},
10992 {(char *) "virDomainSetSchedulerParameters", libvirt_virDomainSetSchedulerParameters
, METH_VARARGS
, NULL
},
10993 {(char *) "virDomainSetSchedulerParametersFlags", libvirt_virDomainSetSchedulerParametersFlags
, METH_VARARGS
, NULL
},
10994 {(char *) "virDomainSetBlkioParameters", libvirt_virDomainSetBlkioParameters
, METH_VARARGS
, NULL
},
10995 {(char *) "virDomainGetBlkioParameters", libvirt_virDomainGetBlkioParameters
, METH_VARARGS
, NULL
},
10996 {(char *) "virDomainSetMemoryParameters", libvirt_virDomainSetMemoryParameters
, METH_VARARGS
, NULL
},
10997 {(char *) "virDomainGetMemoryParameters", libvirt_virDomainGetMemoryParameters
, METH_VARARGS
, NULL
},
10998 {(char *) "virDomainSetNumaParameters", libvirt_virDomainSetNumaParameters
, METH_VARARGS
, NULL
},
10999 {(char *) "virDomainGetNumaParameters", libvirt_virDomainGetNumaParameters
, METH_VARARGS
, NULL
},
11000 {(char *) "virDomainSetInterfaceParameters", libvirt_virDomainSetInterfaceParameters
, METH_VARARGS
, NULL
},
11001 {(char *) "virDomainGetInterfaceParameters", libvirt_virDomainGetInterfaceParameters
, METH_VARARGS
, NULL
},
11002 {(char *) "virDomainGetVcpus", libvirt_virDomainGetVcpus
, METH_VARARGS
, NULL
},
11003 {(char *) "virDomainPinVcpu", libvirt_virDomainPinVcpu
, METH_VARARGS
, NULL
},
11004 {(char *) "virDomainPinVcpuFlags", libvirt_virDomainPinVcpuFlags
, METH_VARARGS
, NULL
},
11005 {(char *) "virDomainGetVcpuPinInfo", libvirt_virDomainGetVcpuPinInfo
, METH_VARARGS
, NULL
},
11006 #if LIBVIR_CHECK_VERSION(0, 10, 0)
11007 {(char *) "virDomainGetEmulatorPinInfo", libvirt_virDomainGetEmulatorPinInfo
, METH_VARARGS
, NULL
},
11008 {(char *) "virDomainPinEmulator", libvirt_virDomainPinEmulator
, METH_VARARGS
, NULL
},
11009 #endif /* LIBVIR_CHECK_VERSION(0, 10, 0) */
11010 #if LIBVIR_CHECK_VERSION(1, 2, 14)
11011 {(char *) "virDomainGetIOThreadInfo", libvirt_virDomainGetIOThreadInfo
, METH_VARARGS
, NULL
},
11012 {(char *) "virDomainPinIOThread", libvirt_virDomainPinIOThread
, METH_VARARGS
, NULL
},
11013 #endif /* LIBVIR_CHECK_VERSION(1, 2, 14) */
11014 #if LIBVIR_CHECK_VERSION(4, 10, 0)
11015 {(char *) "virDomainSetIOThreadParams", libvirt_virDomainSetIOThreadParams
, METH_VARARGS
, NULL
},
11016 #endif /* LIBVIR_CHECK_VERSION(4, 10, 0) */
11017 {(char *) "virConnectListStoragePools", libvirt_virConnectListStoragePools
, METH_VARARGS
, NULL
},
11018 {(char *) "virConnectListDefinedStoragePools", libvirt_virConnectListDefinedStoragePools
, METH_VARARGS
, NULL
},
11019 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11020 {(char *) "virConnectListAllStoragePools", libvirt_virConnectListAllStoragePools
, METH_VARARGS
, NULL
},
11021 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11022 {(char *) "virStoragePoolGetAutostart", libvirt_virStoragePoolGetAutostart
, METH_VARARGS
, NULL
},
11023 {(char *) "virStoragePoolListVolumes", libvirt_virStoragePoolListVolumes
, METH_VARARGS
, NULL
},
11024 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11025 {(char *) "virStoragePoolListAllVolumes", libvirt_virStoragePoolListAllVolumes
, METH_VARARGS
, NULL
},
11026 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11027 {(char *) "virStoragePoolGetInfo", libvirt_virStoragePoolGetInfo
, METH_VARARGS
, NULL
},
11028 {(char *) "virStorageVolGetInfo", libvirt_virStorageVolGetInfo
, METH_VARARGS
, NULL
},
11029 #if LIBVIR_CHECK_VERSION(3, 0, 0)
11030 {(char *) "virStorageVolGetInfoFlags", libvirt_virStorageVolGetInfoFlags
, METH_VARARGS
, NULL
},
11031 #endif /* LIBVIR_CHECK_VERSION(3, 0, 0) */
11032 {(char *) "virStoragePoolGetUUID", libvirt_virStoragePoolGetUUID
, METH_VARARGS
, NULL
},
11033 {(char *) "virStoragePoolGetUUIDString", libvirt_virStoragePoolGetUUIDString
, METH_VARARGS
, NULL
},
11034 {(char *) "virStoragePoolLookupByUUID", libvirt_virStoragePoolLookupByUUID
, METH_VARARGS
, NULL
},
11035 {(char *) "virEventRegisterImpl", libvirt_virEventRegisterImpl
, METH_VARARGS
, NULL
},
11036 {(char *) "virEventAddHandle", libvirt_virEventAddHandle
, METH_VARARGS
, NULL
},
11037 {(char *) "virEventAddTimeout", libvirt_virEventAddTimeout
, METH_VARARGS
, NULL
},
11038 {(char *) "virEventInvokeHandleCallback", libvirt_virEventInvokeHandleCallback
, METH_VARARGS
, NULL
},
11039 {(char *) "virEventInvokeTimeoutCallback", libvirt_virEventInvokeTimeoutCallback
, METH_VARARGS
, NULL
},
11040 {(char *) "virEventInvokeFreeCallback", libvirt_virEventInvokeFreeCallback
, METH_VARARGS
, NULL
},
11041 {(char *) "virNodeListDevices", libvirt_virNodeListDevices
, METH_VARARGS
, NULL
},
11042 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11043 {(char *) "virConnectListAllNodeDevices", libvirt_virConnectListAllNodeDevices
, METH_VARARGS
, NULL
},
11044 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11045 {(char *) "virNodeDeviceListCaps", libvirt_virNodeDeviceListCaps
, METH_VARARGS
, NULL
},
11046 {(char *) "virSecretGetUUID", libvirt_virSecretGetUUID
, METH_VARARGS
, NULL
},
11047 {(char *) "virSecretGetUUIDString", libvirt_virSecretGetUUIDString
, METH_VARARGS
, NULL
},
11048 {(char *) "virSecretLookupByUUID", libvirt_virSecretLookupByUUID
, METH_VARARGS
, NULL
},
11049 {(char *) "virConnectListSecrets", libvirt_virConnectListSecrets
, METH_VARARGS
, NULL
},
11050 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11051 {(char *) "virConnectListAllSecrets", libvirt_virConnectListAllSecrets
, METH_VARARGS
, NULL
},
11052 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11053 {(char *) "virSecretGetValue", libvirt_virSecretGetValue
, METH_VARARGS
, NULL
},
11054 {(char *) "virSecretSetValue", libvirt_virSecretSetValue
, METH_VARARGS
, NULL
},
11055 {(char *) "virNWFilterGetUUID", libvirt_virNWFilterGetUUID
, METH_VARARGS
, NULL
},
11056 {(char *) "virNWFilterGetUUIDString", libvirt_virNWFilterGetUUIDString
, METH_VARARGS
, NULL
},
11057 {(char *) "virNWFilterLookupByUUID", libvirt_virNWFilterLookupByUUID
, METH_VARARGS
, NULL
},
11058 {(char *) "virConnectListNWFilters", libvirt_virConnectListNWFilters
, METH_VARARGS
, NULL
},
11059 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11060 {(char *) "virConnectListAllNWFilters", libvirt_virConnectListAllNWFilters
, METH_VARARGS
, NULL
},
11061 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11062 #if LIBVIR_CHECK_VERSION(4, 5, 0)
11063 {(char *) "virConnectListAllNWFilterBindings", libvirt_virConnectListAllNWFilterBindings
, METH_VARARGS
, NULL
},
11064 #endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
11065 {(char *) "virConnectListInterfaces", libvirt_virConnectListInterfaces
, METH_VARARGS
, NULL
},
11066 {(char *) "virConnectListDefinedInterfaces", libvirt_virConnectListDefinedInterfaces
, METH_VARARGS
, NULL
},
11067 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11068 {(char *) "virConnectListAllInterfaces", libvirt_virConnectListAllInterfaces
, METH_VARARGS
, NULL
},
11069 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11070 {(char *) "virConnectBaselineCPU", libvirt_virConnectBaselineCPU
, METH_VARARGS
, NULL
},
11071 {(char *) "virDomainGetJobInfo", libvirt_virDomainGetJobInfo
, METH_VARARGS
, NULL
},
11072 #if LIBVIR_CHECK_VERSION(1, 0, 3)
11073 {(char *) "virDomainGetJobStats", libvirt_virDomainGetJobStats
, METH_VARARGS
, NULL
},
11074 #endif /* LIBVIR_CHECK_VERSION(1, 0, 3) */
11075 #if LIBVIR_CHECK_VERSION(5, 6, 0)
11076 {(char *) "virDomainListAllCheckpoints", libvirt_virDomainListAllCheckpoints
, METH_VARARGS
, NULL
},
11077 {(char *) "virDomainCheckpointListAllChildren", libvirt_virDomainCheckpointListAllChildren
, METH_VARARGS
, NULL
},
11078 #endif /* LIBVIR_CHECK_VERSION(5, 6, 0) */
11079 {(char *) "virDomainSnapshotListNames", libvirt_virDomainSnapshotListNames
, METH_VARARGS
, NULL
},
11080 #if LIBVIR_CHECK_VERSION(0, 9, 13)
11081 {(char *) "virDomainListAllSnapshots", libvirt_virDomainListAllSnapshots
, METH_VARARGS
, NULL
},
11082 #endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
11083 {(char *) "virDomainSnapshotListChildrenNames", libvirt_virDomainSnapshotListChildrenNames
, METH_VARARGS
, NULL
},
11084 #if LIBVIR_CHECK_VERSION(0, 9, 13)
11085 {(char *) "virDomainSnapshotListAllChildren", libvirt_virDomainSnapshotListAllChildren
, METH_VARARGS
, NULL
},
11086 #endif /* LIBVIR_CHECK_VERSION(0, 9, 13) */
11087 {(char *) "virDomainRevertToSnapshot", libvirt_virDomainRevertToSnapshot
, METH_VARARGS
, NULL
},
11088 {(char *) "virDomainGetBlockJobInfo", libvirt_virDomainGetBlockJobInfo
, METH_VARARGS
, NULL
},
11089 {(char *) "virDomainSetBlockIoTune", libvirt_virDomainSetBlockIoTune
, METH_VARARGS
, NULL
},
11090 {(char *) "virDomainGetBlockIoTune", libvirt_virDomainGetBlockIoTune
, METH_VARARGS
, NULL
},
11091 {(char *) "virDomainSendKey", libvirt_virDomainSendKey
, METH_VARARGS
, NULL
},
11092 #if LIBVIR_CHECK_VERSION(1, 0, 3)
11093 {(char *) "virDomainMigrateGetCompressionCache", libvirt_virDomainMigrateGetCompressionCache
, METH_VARARGS
, NULL
},
11094 #endif /* LIBVIR_CHECK_VERSION(1, 0, 3) */
11095 {(char *) "virDomainMigrateGetMaxSpeed", libvirt_virDomainMigrateGetMaxSpeed
, METH_VARARGS
, NULL
},
11096 #if LIBVIR_CHECK_VERSION(3, 7, 0)
11097 {(char *) "virDomainMigrateGetMaxDowntime", libvirt_virDomainMigrateGetMaxDowntime
, METH_VARARGS
, NULL
},
11098 #endif /* LIBVIR_CHECK_VERSION(3, 7, 0) */
11099 {(char *) "virDomainMigrateGetMaxSpeed", libvirt_virDomainMigrateGetMaxSpeed
, METH_VARARGS
, NULL
},
11100 #if LIBVIR_CHECK_VERSION(1, 1, 0)
11101 {(char *) "virDomainMigrate3", libvirt_virDomainMigrate3
, METH_VARARGS
, NULL
},
11102 {(char *) "virDomainMigrateToURI3", libvirt_virDomainMigrateToURI3
, METH_VARARGS
, NULL
},
11103 #endif /* LIBVIR_CHECK_VERSION(1, 1, 0) */
11104 {(char *) "virDomainBlockPeek", libvirt_virDomainBlockPeek
, METH_VARARGS
, NULL
},
11105 {(char *) "virDomainMemoryPeek", libvirt_virDomainMemoryPeek
, METH_VARARGS
, NULL
},
11106 {(char *) "virDomainGetDiskErrors", libvirt_virDomainGetDiskErrors
, METH_VARARGS
, NULL
},
11107 #if LIBVIR_CHECK_VERSION(0, 10, 2)
11108 {(char *) "virNodeGetMemoryParameters", libvirt_virNodeGetMemoryParameters
, METH_VARARGS
, NULL
},
11109 {(char *) "virNodeSetMemoryParameters", libvirt_virNodeSetMemoryParameters
, METH_VARARGS
, NULL
},
11110 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
11111 #if LIBVIR_CHECK_VERSION(1, 0, 0)
11112 {(char *) "virNodeGetCPUMap", libvirt_virNodeGetCPUMap
, METH_VARARGS
, NULL
},
11113 #endif /* LIBVIR_CHECK_VERSION(1, 0, 0) */
11114 #if LIBVIR_CHECK_VERSION(1, 1, 1)
11115 {(char *) "virDomainCreateXMLWithFiles", libvirt_virDomainCreateXMLWithFiles
, METH_VARARGS
, NULL
},
11116 {(char *) "virDomainCreateWithFiles", libvirt_virDomainCreateWithFiles
, METH_VARARGS
, NULL
},
11117 #endif /* LIBVIR_CHECK_VERSION(1, 1, 1) */
11118 #if LIBVIR_CHECK_VERSION(1, 2, 5)
11119 {(char *) "virDomainFSFreeze", libvirt_virDomainFSFreeze
, METH_VARARGS
, NULL
},
11120 {(char *) "virDomainFSThaw", libvirt_virDomainFSThaw
, METH_VARARGS
, NULL
},
11121 {(char *) "virDomainGetTime", libvirt_virDomainGetTime
, METH_VARARGS
, NULL
},
11122 {(char *) "virDomainSetTime", libvirt_virDomainSetTime
, METH_VARARGS
, NULL
},
11123 #endif /* LIBVIR_CHECK_VERSION(1, 2, 5) */
11124 #if LIBVIR_CHECK_VERSION(1, 2, 6)
11125 {(char *) "virNodeGetFreePages", libvirt_virNodeGetFreePages
, METH_VARARGS
, NULL
},
11126 {(char *) "virNetworkGetDHCPLeases", libvirt_virNetworkGetDHCPLeases
, METH_VARARGS
, NULL
},
11127 #endif /* LIBVIR_CHECK_VERSION(1, 2, 6) */
11128 #if LIBVIR_CHECK_VERSION(1, 2, 8)
11129 {(char *) "virConnectGetAllDomainStats", libvirt_virConnectGetAllDomainStats
, METH_VARARGS
, NULL
},
11130 {(char *) "virDomainListGetStats", libvirt_virDomainListGetStats
, METH_VARARGS
, NULL
},
11131 {(char *) "virDomainBlockCopy", libvirt_virDomainBlockCopy
, METH_VARARGS
, NULL
},
11132 #endif /* LIBVIR_CHECK_VERSION(1, 2, 8) */
11133 #if LIBVIR_CHECK_VERSION(1, 2, 9)
11134 {(char *) "virNodeAllocPages", libvirt_virNodeAllocPages
, METH_VARARGS
, NULL
},
11135 #endif /* LIBVIR_CHECK_VERSION(1, 2, 9) */
11136 #if LIBVIR_CHECK_VERSION(1, 2, 11)
11137 {(char *) "virDomainGetFSInfo", libvirt_virDomainGetFSInfo
, METH_VARARGS
, NULL
},
11138 #endif /* LIBVIR_CHECK_VERSION(1, 2, 11) */
11139 #if LIBVIR_CHECK_VERSION(1, 2, 14)
11140 {(char *) "virDomainInterfaceAddresses", libvirt_virDomainInterfaceAddresses
, METH_VARARGS
, NULL
},
11141 #endif /* LIBVIR_CHECK_VERSION(1, 2, 14) */
11142 #if LIBVIR_CHECK_VERSION(1, 3, 3)
11143 {(char *) "virDomainGetPerfEvents", libvirt_virDomainGetPerfEvents
, METH_VARARGS
, NULL
},
11144 {(char *) "virDomainSetPerfEvents", libvirt_virDomainSetPerfEvents
, METH_VARARGS
, NULL
},
11145 #endif /* LIBVIR_CHECK_VERSION(1, 3, 3) */
11146 #if LIBVIR_CHECK_VERSION(2, 0, 0)
11147 {(char *) "virConnectStoragePoolEventRegisterAny", libvirt_virConnectStoragePoolEventRegisterAny
, METH_VARARGS
, NULL
},
11148 {(char *) "virConnectStoragePoolEventDeregisterAny", libvirt_virConnectStoragePoolEventDeregisterAny
, METH_VARARGS
, NULL
},
11149 {(char *) "virDomainGetGuestVcpus", libvirt_virDomainGetGuestVcpus
, METH_VARARGS
, NULL
},
11150 #endif /* LIBVIR_CHECK_VERSION(2, 0, 0) */
11151 #if LIBVIR_CHECK_VERSION(2, 2, 0)
11152 {(char *) "virConnectNodeDeviceEventRegisterAny", libvirt_virConnectNodeDeviceEventRegisterAny
, METH_VARARGS
, NULL
},
11153 {(char *) "virConnectNodeDeviceEventDeregisterAny", libvirt_virConnectNodeDeviceEventDeregisterAny
, METH_VARARGS
, NULL
},
11154 #endif /* LIBVIR_CHECK_VERSION(2, 2, 0) */
11155 #if LIBVIR_CHECK_VERSION(3, 0, 0)
11156 {(char *) "virConnectSecretEventRegisterAny", libvirt_virConnectSecretEventRegisterAny
, METH_VARARGS
, NULL
},
11157 {(char *) "virConnectSecretEventDeregisterAny", libvirt_virConnectSecretEventDeregisterAny
, METH_VARARGS
, NULL
},
11158 #endif /* LIBVIR_CHECK_VERSION(3, 0, 0) */
11159 #if LIBVIR_CHECK_VERSION(3, 4, 0)
11160 {(char *) "virStreamRecvHole", libvirt_virStreamRecvHole
, METH_VARARGS
, NULL
},
11161 {(char *) "virStreamSendHole", libvirt_virStreamSendHole
, METH_VARARGS
, NULL
},
11162 {(char *) "virStreamRecvFlags", libvirt_virStreamRecvFlags
, METH_VARARGS
, NULL
},
11163 #endif /* LIBVIR_CHECK_VERSION(3, 4, 0) */
11164 #if LIBVIR_CHECK_VERSION(4, 4, 0)
11165 {(char *) "virConnectBaselineHypervisorCPU", libvirt_virConnectBaselineHypervisorCPU
, METH_VARARGS
, NULL
},
11166 #endif /* LIBVIR_CHECK_VERSION(4, 4, 0) */
11167 #if LIBVIR_CHECK_VERSION(4, 5, 0)
11168 {(char *) "virDomainGetLaunchSecurityInfo", libvirt_virDomainGetLaunchSecurityInfo
, METH_VARARGS
, NULL
},
11169 {(char *) "virNodeGetSEVInfo", libvirt_virNodeGetSEVInfo
, METH_VARARGS
, NULL
},
11170 #endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
11171 #if LIBVIR_CHECK_VERSION(5, 5, 0)
11172 {(char *) "virNetworkListAllPorts", libvirt_virNetworkListAllPorts
, METH_VARARGS
, NULL
},
11173 {(char *) "virNetworkPortSetParameters", libvirt_virNetworkPortSetParameters
, METH_VARARGS
, NULL
},
11174 {(char *) "virNetworkPortGetParameters", libvirt_virNetworkPortGetParameters
, METH_VARARGS
, NULL
},
11175 {(char *) "virNetworkPortGetUUID", libvirt_virNetworkPortGetUUID
, METH_VARARGS
, NULL
},
11176 {(char *) "virNetworkPortGetUUIDString", libvirt_virNetworkPortGetUUIDString
, METH_VARARGS
, NULL
},
11177 {(char *) "virNetworkPortLookupByUUID", libvirt_virNetworkPortLookupByUUID
, METH_VARARGS
, NULL
},
11178 #endif /* LIBVIR_CHECK_VERSION(5, 5, 0) */
11179 #if LIBVIR_CHECK_VERSION(5, 7, 0)
11180 {(char *) "virDomainGetGuestInfo", libvirt_virDomainGetGuestInfo
, METH_VARARGS
, NULL
},
11181 #endif /* LIBVIR_CHECK_VERSION(5, 7, 0) */
11182 #if LIBVIR_CHECK_VERSION(5, 8, 0)
11183 {(char *) "virConnectSetIdentity", libvirt_virConnectSetIdentity
, METH_VARARGS
, NULL
},
11184 #endif /* LIBVIR_CHECK_VERSION(5, 8, 0) */
11185 #if LIBVIR_CHECK_VERSION(6, 10, 0)
11186 {(char *) "virDomainAuthorizedSSHKeysGet", libvirt_virDomainAuthorizedSSHKeysGet
, METH_VARARGS
, NULL
},
11187 {(char *) "virDomainAuthorizedSSHKeysSet", libvirt_virDomainAuthorizedSSHKeysSet
, METH_VARARGS
, NULL
},
11188 #endif /* LIBVIR_CHECK_VERSION(6, 10, 0) */
11189 #if LIBVIR_CHECK_VERSION(7, 1, 0)
11190 {(char *) "virDomainGetMessages", libvirt_virDomainGetMessages
, METH_VARARGS
, NULL
},
11191 #endif /* LIBVIR_CHECK_VERSION(7, 1, 0) */
11192 #if LIBVIR_CHECK_VERSION(7, 8, 0)
11193 {(char *) "virNodeDeviceGetAutostart", libvirt_virNodeDeviceGetAutostart
, METH_VARARGS
, NULL
},
11194 #endif /* LIBVIR_CHECK_VERSION(7, 8, 0) */
11195 #if LIBVIR_CHECK_VERSION(8, 0, 0)
11196 {(char *) "virDomainSetLaunchSecurityState", libvirt_virDomainSetLaunchSecurityState
, METH_VARARGS
, NULL
},
11197 #endif /* LIBVIR_CHECK_VERSION(8, 0, 0) */
11198 #if LIBVIR_CHECK_VERSION(8, 4, 0)
11199 {(char *) "virDomainSaveParams", libvirt_virDomainSaveParams
, METH_VARARGS
, NULL
},
11200 {(char *) "virDomainRestoreParams", libvirt_virDomainRestoreParams
, METH_VARARGS
, NULL
},
11201 #endif /* LIBVIR_CHECK_VERSION(8, 4, 0) */
11202 #if LIBVIR_CHECK_VERSION(9, 0, 0)
11203 {(char *) "virDomainFDAssociate", libvirt_virDomainFDAssociate
, METH_VARARGS
, NULL
},
11204 #endif /* LIBVIR_CHECK_VERSION(9, 0, 0) */
11205 {NULL
, NULL
, 0, NULL
}
11208 static struct PyModuleDef moduledef
= {
11209 PyModuleDef_HEAD_INIT
,
11234 if (virInitialize() < 0)
11237 module
= PyModule_Create(&moduledef
);