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.
Files changed (65) hide show
  1. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/ChangeLog +29 -0
  2. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/PKG-INFO +1 -1
  3. libvirt_python-12.4.0/VERSION +1 -0
  4. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/event-test.py +12 -0
  5. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virConnect.py +19 -0
  6. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override.c +118 -0
  7. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-python.spec +1 -1
  8. libvirt_python-12.2.0/VERSION +0 -1
  9. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/AUTHORS +0 -0
  10. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/CONTRIBUTING.rst +0 -0
  11. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/COPYING +0 -0
  12. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/HACKING +0 -0
  13. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/MANIFEST.in +0 -0
  14. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/Makefile +0 -0
  15. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/README +0 -0
  16. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/build/libvirt_python.egg-info/SOURCES.txt +0 -0
  17. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/README +0 -0
  18. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/consolecallback.py +0 -0
  19. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/dhcpleases.py +0 -0
  20. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/dominfo.py +0 -0
  21. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/domipaddrs.py +0 -0
  22. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/domrestore.py +0 -0
  23. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/domsave.py +0 -0
  24. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/domstart.py +0 -0
  25. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/esxlist.py +0 -0
  26. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/guest-vcpus/guest-vcpu-daemon.py +0 -0
  27. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/guest-vcpus/guest-vcpu.py +0 -0
  28. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/nodestats.py +0 -0
  29. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/sparsestream.py +0 -0
  30. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/examples/topology.py +0 -0
  31. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/generator.py +0 -0
  32. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-lxc-override-api.xml +0 -0
  33. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-lxc-override.c +0 -0
  34. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-api.xml +0 -0
  35. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virDomain.py +0 -0
  36. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virDomainCheckpoint.py +0 -0
  37. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virDomainSnapshot.py +0 -0
  38. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virNetwork.py +0 -0
  39. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virStoragePool.py +0 -0
  40. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override-virStream.py +0 -0
  41. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-override.py +0 -0
  42. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-qemu-override-api.xml +0 -0
  43. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-qemu-override.c +0 -0
  44. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-qemu-override.py +0 -0
  45. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-utils.c +0 -0
  46. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirt-utils.h +0 -0
  47. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/libvirtaio.py +0 -0
  48. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/pyproject.toml +0 -0
  49. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/requirements-test.txt +0 -0
  50. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/setup.cfg +0 -0
  51. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/setup.py +0 -0
  52. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/eventmock.py +0 -0
  53. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_aio.py +0 -0
  54. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_api_coverage.py +0 -0
  55. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_conn.py +0 -0
  56. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_domain.py +0 -0
  57. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_domain_checkpoint.py +0 -0
  58. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_domain_snapshot.py +0 -0
  59. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_interface.py +0 -0
  60. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_network.py +0 -0
  61. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_nodedev.py +0 -0
  62. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tests/test_storage.py +0 -0
  63. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/tox.ini +0 -0
  64. {libvirt_python-12.2.0 → libvirt_python-12.4.0}/typewrappers.c +0 -0
  65. {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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: libvirt-python
3
- Version: 12.2.0
3
+ Version: 12.4.0
4
4
  Summary: The libvirt virtualization API python binding
5
5
  Home-page: http://www.libvirt.org
6
6
  Maintainer: Libvirt Maintainers
@@ -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
  }
@@ -16,7 +16,7 @@
16
16
 
17
17
  Summary: The libvirt virtualization API python3 binding
18
18
  Name: libvirt-python
19
- Version: 12.2.0
19
+ Version: 12.4.0
20
20
  Release: 1%{?dist}
21
21
  Source0: https://libvirt.org/sources/python/%{dist_name}-%{version}.tar.gz
22
22
  Url: https://libvirt.org
@@ -1 +0,0 @@
1
- 12.2.0
File without changes
File without changes
File without changes
File without changes
File without changes