libvirt-python 12.2.0__tar.gz → 12.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/ChangeLog +29 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/PKG-INFO +1 -1
- libvirt_python-12.4.0/VERSION +1 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/event-test.py +12 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virConnect.py +19 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override.c +118 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-python.spec +1 -1
- libvirt_python-12.2.0/VERSION +0 -1
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/AUTHORS +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/CONTRIBUTING.rst +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/COPYING +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/HACKING +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/MANIFEST.in +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/Makefile +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/README +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/build/libvirt_python.egg-info/SOURCES.txt +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/README +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/consolecallback.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/dhcpleases.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/dominfo.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/domipaddrs.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/domrestore.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/domsave.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/domstart.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/esxlist.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/guest-vcpus/guest-vcpu-daemon.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/guest-vcpus/guest-vcpu.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/nodestats.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/sparsestream.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/topology.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/generator.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-lxc-override-api.xml +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-lxc-override.c +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-api.xml +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virDomain.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virDomainCheckpoint.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virDomainSnapshot.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virNetwork.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virStoragePool.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virStream.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-qemu-override-api.xml +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-qemu-override.c +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-qemu-override.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-utils.c +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-utils.h +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirtaio.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/pyproject.toml +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/requirements-test.txt +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/setup.cfg +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/setup.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/eventmock.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_aio.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_api_coverage.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_conn.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_domain.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_domain_checkpoint.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_domain_snapshot.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_interface.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_network.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_nodedev.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_storage.py +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tox.ini +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/typewrappers.c +0 -0
- {libvirt_python-12.2.0 → libvirt_python-12.4.0}/typewrappers.h +0 -0
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
2026- 5- 25 Michal Privoznik <mprivozn@redhat.com>
|
|
2
|
+
|
|
3
|
+
Add support for domain channel lifecycle event
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
2026- 5- 14 Michal Privoznik <mprivozn@redhat.com>
|
|
7
|
+
|
|
8
|
+
Add support for domain vCPU removed event
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
2026- 5- 11 Takashi Kajinami <kajinamit@oss.nttdata.com>
|
|
12
|
+
|
|
13
|
+
ci: regenerate with 'lcitool manifest'
|
|
14
|
+
- Drop Fedora 42, add Fedora 44
|
|
15
|
+
- Drop Ubuntu 22.04, add Ubuntu 26.04
|
|
16
|
+
- Add Debian 13
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
2026- 5- 1 Jiri Denemark <jdenemar@redhat.com>
|
|
21
|
+
|
|
22
|
+
Post-release version bump to 12.4.0
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
2026- 4- 1 Jiri Denemark <jdenemar@redhat.com>
|
|
26
|
+
|
|
27
|
+
Post-release version bump to 12.3.0
|
|
28
|
+
|
|
29
|
+
|
|
1
30
|
2026- 3- 25 Ben "535" Blank <ben.blank@gmail.com>
|
|
2
31
|
|
|
3
32
|
Emit type hints for function parameters and return values in most places.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
12.4.0
|
|
@@ -514,6 +514,8 @@ AGENT_REASONS = Description("unknown", "domain started", "channel event")
|
|
|
514
514
|
GRAPHICS_PHASES = Description("Connect", "Initialize", "Disconnect")
|
|
515
515
|
DISK_EVENTS = Description("Change missing on start", "Drop missing on start")
|
|
516
516
|
TRAY_EVENTS = Description("Opened", "Closed")
|
|
517
|
+
CHANNEL_STATES = Description("unknown", "connected", "disconnected")
|
|
518
|
+
CHANNEL_REASONS = Description("unknown", "domain started", "channel event")
|
|
517
519
|
|
|
518
520
|
|
|
519
521
|
def myDomainEventCallback(conn: libvirt.virConnect, dom: libvirt.virDomain, event: int, detail: int, opaque: _T) -> None:
|
|
@@ -652,6 +654,14 @@ def myDomainEventNICMACChangeCallback(conn: libvirt.virConnect, dom: libvirt.vir
|
|
|
652
654
|
print("myDomainEventNICMACChangeCallback: Domain %s(%s) NIC MAC change alias %s old MAC: %s new MAC: %s" % (
|
|
653
655
|
dom.name(), dom.ID(), alias, oldMAC, newMAC))
|
|
654
656
|
|
|
657
|
+
def myDomainEventVcpuRemovedCallback(conn: libvirt.virConnect, dom: libvirt.virDomain, vcpuid: int, opaque: _T) -> None:
|
|
658
|
+
print("myDomainEventVcpuRemovedCallback: Domain %s(%s) vCPU removed %d" % (
|
|
659
|
+
dom.name(), dom.ID(), vcpuid))
|
|
660
|
+
|
|
661
|
+
def myDomainEventChannelLifecycleCallback(conn: libvirt.virConnect, dom: libvirt.virDomain, state: int, reason: int, opaque: _T) -> None:
|
|
662
|
+
print("myDomainEventChannelLifecycleCallback: Domain %s(%s) %s %s" % (
|
|
663
|
+
dom.name(), dom.ID(), CHANNEL_STATES[state], CHANNEL_REASONS[reason]))
|
|
664
|
+
|
|
655
665
|
|
|
656
666
|
##########################################################################
|
|
657
667
|
# Network events
|
|
@@ -811,6 +821,8 @@ def main() -> None:
|
|
|
811
821
|
vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_MEMORY_FAILURE, myDomainEventMemoryFailureCallback, None),
|
|
812
822
|
vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE, myDomainEventMemoryDeviceSizeChangeCallback, None),
|
|
813
823
|
vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_NIC_MAC_CHANGE, myDomainEventNICMACChangeCallback, None),
|
|
824
|
+
vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_VCPU_REMOVED, myDomainEventVcpuRemovedCallback, None),
|
|
825
|
+
vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_CHANNEL_LIFECYCLE, myDomainEventChannelLifecycleCallback, None),
|
|
814
826
|
]
|
|
815
827
|
|
|
816
828
|
netcallbacks = [
|
|
@@ -288,6 +288,15 @@
|
|
|
288
288
|
cb(self, virDomain(self, _obj=dom), alias, oldMAC, newMAC, opaque)
|
|
289
289
|
return 0
|
|
290
290
|
|
|
291
|
+
def _dispatchDomainEventVcpuRemovedCallback(self, dom: 'virDomain', vcpuid: int, cbData: Dict[str, Any]) -> int:
|
|
292
|
+
"""Dispatches event to python user domain vCPU removal event callbacks
|
|
293
|
+
"""
|
|
294
|
+
cb = cbData["cb"]
|
|
295
|
+
opaque = cbData["opaque"]
|
|
296
|
+
|
|
297
|
+
cb(self, virDomain(self, _obj=dom), vcpuid, opaque)
|
|
298
|
+
return 0
|
|
299
|
+
|
|
291
300
|
def domainEventDeregisterAny(self, callbackID: int) -> None:
|
|
292
301
|
"""Removes a Domain Event Callback. De-registering for a
|
|
293
302
|
domain callback will disable delivery of this event type """
|
|
@@ -317,6 +326,16 @@
|
|
|
317
326
|
cb(self, virNetwork(self, _obj=dom), mtype, nsuri, opaque)
|
|
318
327
|
return 0
|
|
319
328
|
|
|
329
|
+
def _dispatchDomainEventChannelLifecycleCallback(self, dom: 'virDomain', state: int, reason: int, cbData: Dict[str, Any]) -> int:
|
|
330
|
+
"""Dispatches event to python user domain channel lifecycle event callback
|
|
331
|
+
"""
|
|
332
|
+
|
|
333
|
+
cb = cbData["cb"]
|
|
334
|
+
opaque = cbData["opaque"]
|
|
335
|
+
|
|
336
|
+
cb(self, virDomain(self, _obj=dom), state, reason, opaque)
|
|
337
|
+
return 0
|
|
338
|
+
|
|
320
339
|
def networkEventDeregisterAny(self, callbackID: int) -> None:
|
|
321
340
|
"""Removes a Network Event Callback. De-registering for a
|
|
322
341
|
network callback will disable delivery of this event type"""
|
|
@@ -7451,6 +7451,114 @@ libvirt_virConnectDomainEventNICMACChangeCallback(virConnectPtr conn ATTRIBUTE_U
|
|
|
7451
7451
|
#endif /* VIR_DOMAIN_EVENT_ID_NIC_MAC_CHANGE */
|
|
7452
7452
|
|
|
7453
7453
|
|
|
7454
|
+
#ifdef VIR_DOMAIN_EVENT_ID_VCPU_REMOVED
|
|
7455
|
+
static int
|
|
7456
|
+
libvirt_virConnectDomainEventVcpuRemovedCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
|
|
7457
|
+
virDomainPtr dom,
|
|
7458
|
+
unsigned int vcpuid,
|
|
7459
|
+
void *opaque)
|
|
7460
|
+
{
|
|
7461
|
+
PyObject *pyobj_cbData = (PyObject*)opaque;
|
|
7462
|
+
PyObject *pyobj_dom;
|
|
7463
|
+
PyObject *pyobj_ret = NULL;
|
|
7464
|
+
PyObject *pyobj_conn;
|
|
7465
|
+
PyObject *dictKey;
|
|
7466
|
+
int ret = -1;
|
|
7467
|
+
|
|
7468
|
+
LIBVIRT_ENSURE_THREAD_STATE;
|
|
7469
|
+
|
|
7470
|
+
if (!(dictKey = libvirt_constcharPtrWrap("conn")))
|
|
7471
|
+
goto cleanup;
|
|
7472
|
+
pyobj_conn = PyDict_GetItem(pyobj_cbData, dictKey);
|
|
7473
|
+
Py_DECREF(dictKey);
|
|
7474
|
+
|
|
7475
|
+
/* Create a python instance of this virDomainPtr */
|
|
7476
|
+
virDomainRef(dom);
|
|
7477
|
+
if (!(pyobj_dom = libvirt_virDomainPtrWrap(dom))) {
|
|
7478
|
+
virDomainFree(dom);
|
|
7479
|
+
goto cleanup;
|
|
7480
|
+
}
|
|
7481
|
+
Py_INCREF(pyobj_cbData);
|
|
7482
|
+
|
|
7483
|
+
/* Call the Callback Dispatcher */
|
|
7484
|
+
pyobj_ret = PyObject_CallMethod(pyobj_conn,
|
|
7485
|
+
(char*)"_dispatchDomainEventVcpuRemovedCallback",
|
|
7486
|
+
(char*)"OiO",
|
|
7487
|
+
pyobj_dom, vcpuid, pyobj_cbData);
|
|
7488
|
+
|
|
7489
|
+
Py_DECREF(pyobj_cbData);
|
|
7490
|
+
Py_DECREF(pyobj_dom);
|
|
7491
|
+
|
|
7492
|
+
cleanup:
|
|
7493
|
+
if (!pyobj_ret) {
|
|
7494
|
+
DEBUG("%s - ret:%p\n", __FUNCTION__, pyobj_ret);
|
|
7495
|
+
PyErr_Print();
|
|
7496
|
+
} else {
|
|
7497
|
+
Py_DECREF(pyobj_ret);
|
|
7498
|
+
ret = 0;
|
|
7499
|
+
}
|
|
7500
|
+
|
|
7501
|
+
LIBVIRT_RELEASE_THREAD_STATE;
|
|
7502
|
+
return ret;
|
|
7503
|
+
}
|
|
7504
|
+
#endif /* VIR_DOMAIN_EVENT_ID_VCPU_REMOVED */
|
|
7505
|
+
|
|
7506
|
+
|
|
7507
|
+
#ifdef VIR_DOMAIN_EVENT_ID_CHANNEL_LIFECYCLE
|
|
7508
|
+
static int
|
|
7509
|
+
libvirt_virConnectDomainEventChannelLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
|
|
7510
|
+
virDomainPtr dom,
|
|
7511
|
+
int state,
|
|
7512
|
+
int reason,
|
|
7513
|
+
void *opaque)
|
|
7514
|
+
{
|
|
7515
|
+
PyObject *pyobj_cbData = (PyObject*)opaque;
|
|
7516
|
+
PyObject *pyobj_dom;
|
|
7517
|
+
PyObject *pyobj_ret = NULL;
|
|
7518
|
+
PyObject *pyobj_conn;
|
|
7519
|
+
PyObject *dictKey;
|
|
7520
|
+
int ret = -1;
|
|
7521
|
+
|
|
7522
|
+
LIBVIRT_ENSURE_THREAD_STATE;
|
|
7523
|
+
|
|
7524
|
+
if (!(dictKey = libvirt_constcharPtrWrap("conn")))
|
|
7525
|
+
goto cleanup;
|
|
7526
|
+
pyobj_conn = PyDict_GetItem(pyobj_cbData, dictKey);
|
|
7527
|
+
Py_DECREF(dictKey);
|
|
7528
|
+
|
|
7529
|
+
/* Create a python instance of this virDomainPtr */
|
|
7530
|
+
virDomainRef(dom);
|
|
7531
|
+
if (!(pyobj_dom = libvirt_virDomainPtrWrap(dom))) {
|
|
7532
|
+
virDomainFree(dom);
|
|
7533
|
+
goto cleanup;
|
|
7534
|
+
}
|
|
7535
|
+
Py_INCREF(pyobj_cbData);
|
|
7536
|
+
|
|
7537
|
+
/* Call the Callback Dispatcher */
|
|
7538
|
+
pyobj_ret = PyObject_CallMethod(pyobj_conn,
|
|
7539
|
+
(char*)"_dispatchDomainEventChannelLifecycleCallback",
|
|
7540
|
+
(char*)"OiiO",
|
|
7541
|
+
pyobj_dom, state, reason, pyobj_cbData);
|
|
7542
|
+
|
|
7543
|
+
Py_DECREF(pyobj_cbData);
|
|
7544
|
+
Py_DECREF(pyobj_dom);
|
|
7545
|
+
|
|
7546
|
+
cleanup:
|
|
7547
|
+
if (!pyobj_ret) {
|
|
7548
|
+
DEBUG("%s - ret:%p\n", __FUNCTION__, pyobj_ret);
|
|
7549
|
+
PyErr_Print();
|
|
7550
|
+
} else {
|
|
7551
|
+
Py_DECREF(pyobj_ret);
|
|
7552
|
+
ret = 0;
|
|
7553
|
+
}
|
|
7554
|
+
|
|
7555
|
+
LIBVIRT_RELEASE_THREAD_STATE;
|
|
7556
|
+
return ret;
|
|
7557
|
+
|
|
7558
|
+
}
|
|
7559
|
+
#endif /* VIR_DOMAIN_EVENT_ID_CHANNEL_LIFECYCLE */
|
|
7560
|
+
|
|
7561
|
+
|
|
7454
7562
|
static PyObject *
|
|
7455
7563
|
libvirt_virConnectDomainEventRegisterAny(PyObject *self ATTRIBUTE_UNUSED,
|
|
7456
7564
|
PyObject *args)
|
|
@@ -7591,6 +7699,16 @@ libvirt_virConnectDomainEventRegisterAny(PyObject *self ATTRIBUTE_UNUSED,
|
|
|
7591
7699
|
cb = VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventNICMACChangeCallback);
|
|
7592
7700
|
break;
|
|
7593
7701
|
#endif /* VIR_DOMAIN_EVENT_ID_NIC_MAC_CHANGE */
|
|
7702
|
+
#ifdef VIR_DOMAIN_EVENT_ID_VCPU_REMOVED
|
|
7703
|
+
case VIR_DOMAIN_EVENT_ID_VCPU_REMOVED:
|
|
7704
|
+
cb = VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventVcpuRemovedCallback);
|
|
7705
|
+
break;
|
|
7706
|
+
#endif /* VIR_DOMAIN_EVENT_ID_VCPU_REMOVED */
|
|
7707
|
+
#ifdef VIR_DOMAIN_EVENT_ID_CHANNEL_LIFECYCLE
|
|
7708
|
+
case VIR_DOMAIN_EVENT_ID_CHANNEL_LIFECYCLE:
|
|
7709
|
+
cb = VIR_DOMAIN_EVENT_CALLBACK(libvirt_virConnectDomainEventChannelLifecycleCallback);
|
|
7710
|
+
break;
|
|
7711
|
+
#endif /* VIR_DOMAIN_EVENT_ID_CHANNEL_LIFECYCLE */
|
|
7594
7712
|
case VIR_DOMAIN_EVENT_ID_LAST:
|
|
7595
7713
|
break;
|
|
7596
7714
|
}
|
libvirt_python-12.2.0/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
12.2.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|