Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-libvirt-python for openSUSE:Factory checked in at 2022-04-05 19:57:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-libvirt-python (Old) and /work/SRC/openSUSE:Factory/.python-libvirt-python.new.1900 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-libvirt-python" Tue Apr 5 19:57:51 2022 rev:55 rq:966488 version:8.2.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-libvirt-python/python-libvirt-python.changes 2022-03-05 14:44:38.919719566 +0100 +++ /work/SRC/openSUSE:Factory/.python-libvirt-python.new.1900/python-libvirt-python.changes 2022-04-05 19:57:53.440603193 +0200 @@ -1,0 +2,6 @@ +Fri Apr 1 21:27:54 UTC 2022 - James Fehlig <jfeh...@suse.com> + +- Update to 8.2.0 + - Add all new APIs and constants in libvirt 8.2.0 + +------------------------------------------------------------------- Old: ---- libvirt-python-8.1.0.tar.gz New: ---- libvirt-python-8.2.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-libvirt-python.spec ++++++ --- /var/tmp/diff_new_pack.vpk5EP/_old 2022-04-05 19:57:54.108595746 +0200 +++ /var/tmp/diff_new_pack.vpk5EP/_new 2022-04-05 19:57:54.112595701 +0200 @@ -23,7 +23,7 @@ %define srcname libvirt-python Name: python-libvirt-python URL: https://libvirt.org/ -Version: 8.1.0 +Version: 8.2.0 Release: 0 Summary: Library providing a virtualization API License: LGPL-2.1-or-later ++++++ _service ++++++ --- /var/tmp/diff_new_pack.vpk5EP/_old 2022-04-05 19:57:54.140595388 +0200 +++ /var/tmp/diff_new_pack.vpk5EP/_new 2022-04-05 19:57:54.144595344 +0200 @@ -1,7 +1,7 @@ <services> <service name="tar_scm" mode="disabled"> <param name="filename">libvirt-python</param> - <param name="revision">v8.1.0</param> + <param name="revision">v8.2.0</param> <param name="scm">git</param> <param name="submodules">disable</param> <param name="url">https://gitlab.com/libvirt/libvirt-python.git</param> ++++++ libvirt-python-8.1.0.tar.gz -> libvirt-python-8.2.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/.gitlab-ci.yml new/libvirt-python-8.2.0/.gitlab-ci.yml --- old/libvirt-python-8.1.0/.gitlab-ci.yml 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/.gitlab-ci.yml 2022-03-28 16:44:48.000000000 +0200 @@ -28,7 +28,7 @@ - ninja -C build install - popd - $PYTHON setup.py build - - $PYTHON setup.py install + - $PYTHON -m pip install . - $PYTHON setup.py test - $PYTHON setup.py sdist - if test -x /usr/bin/rpmbuild && test "$RPM" != "skip" ; then rpmbuild --nodeps -ta dist/libvirt-python*tar.gz ; fi @@ -40,7 +40,7 @@ - export CFLAGS="-Werror" script: - $PYTHON setup.py build - - $PYTHON setup.py install + - $PYTHON -m pip install . - $PYTHON setup.py test - $PYTHON setup.py sdist - if test -x /usr/bin/rpmbuild && test "$RPM" != "skip" ; then rpmbuild --nodeps -ta dist/libvirt-python*tar.gz ; fi @@ -48,10 +48,10 @@ include: '/ci/gitlab.yml' api-coverage: - image: $CI_REGISTRY_IMAGE/ci-centos-8:latest + image: $CI_REGISTRY_IMAGE/ci-centos-stream-8:latest stage: sanity_checks needs: - - job: x86_64-centos-8-git + - job: x86_64-centos-stream-8-git artifacts: true before_script: - *git_build_vars diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/containers/centos-8.Dockerfile new/libvirt-python-8.2.0/ci/containers/centos-8.Dockerfile --- old/libvirt-python-8.1.0/ci/containers/centos-8.Dockerfile 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/containers/centos-8.Dockerfile 1970-01-01 01:00:00.000000000 +0100 @@ -1,59 +0,0 @@ -# THIS FILE WAS AUTO-GENERATED -# -# $ lcitool manifest ci/manifest.yml -# -# https://gitlab.com/libvirt/libvirt-ci - -FROM docker.io/library/centos:8 - -RUN dnf update -y && \ - dnf install 'dnf-command(config-manager)' -y && \ - dnf config-manager --set-enabled -y powertools && \ - dnf install -y centos-release-advanced-virtualization && \ - dnf install -y epel-release && \ - dnf install -y \ - ca-certificates \ - ccache \ - cpp \ - gcc \ - gettext \ - git \ - glib2-devel \ - glibc-devel \ - glibc-langpack-en \ - gnutls-devel \ - libnl3-devel \ - libtirpc-devel \ - libvirt-devel \ - libxml2 \ - libxml2-devel \ - libxslt \ - make \ - ninja-build \ - perl \ - pkgconfig \ - python3 \ - python3-devel \ - python3-docutils \ - python3-lxml \ - python3-pip \ - python3-pytest \ - python3-setuptools \ - python3-wheel \ - rpcgen \ - rpm-build && \ - dnf autoremove -y && \ - dnf clean all -y && \ - rpm -qa | sort > /packages.txt && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc - -RUN pip3 install \ - meson==0.56.0 - -ENV LANG "en_US.UTF-8" -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/containers/centos-stream-8.Dockerfile new/libvirt-python-8.2.0/ci/containers/centos-stream-8.Dockerfile --- old/libvirt-python-8.1.0/ci/containers/centos-stream-8.Dockerfile 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/containers/centos-stream-8.Dockerfile 2022-03-28 16:44:48.000000000 +0200 @@ -14,16 +14,33 @@ dnf install -y \ ca-certificates \ ccache \ + cpp \ gcc \ + gettext \ git \ + glib2-devel \ + glibc-devel \ glibc-langpack-en \ + gnutls-devel \ + libnl3-devel \ + libtirpc-devel \ libvirt-devel \ + libxml2 \ + libxml2-devel \ + libxslt \ + make \ + meson \ + ninja-build \ + perl \ pkgconfig \ python3 \ python3-devel \ + python3-docutils \ python3-lxml \ + python3-pip \ python3-pytest \ python3-setuptools \ + rpcgen \ rpm-build && \ dnf autoremove -y && \ dnf clean all -y && \ @@ -33,5 +50,7 @@ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc ENV LANG "en_US.UTF-8" +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" ENV PYTHON "/usr/bin/python3" ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/containers/debian-10.Dockerfile new/libvirt-python-8.2.0/ci/containers/debian-10.Dockerfile --- old/libvirt-python-8.1.0/ci/containers/debian-10.Dockerfile 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/containers/debian-10.Dockerfile 2022-03-28 16:44:48.000000000 +0200 @@ -21,6 +21,7 @@ python3 \ python3-dev \ python3-lxml \ + python3-pip \ python3-pytest \ python3-setuptools && \ eatmydata apt-get autoremove -y && \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/containers/debian-sid.Dockerfile new/libvirt-python-8.2.0/ci/containers/debian-sid.Dockerfile --- old/libvirt-python-8.1.0/ci/containers/debian-sid.Dockerfile 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/containers/debian-sid.Dockerfile 2022-03-28 16:44:48.000000000 +0200 @@ -21,6 +21,7 @@ python3 \ python3-dev \ python3-lxml \ + python3-pip \ python3-pytest \ python3-setuptools && \ eatmydata apt-get autoremove -y && \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/containers/fedora-33.Dockerfile new/libvirt-python-8.2.0/ci/containers/fedora-33.Dockerfile --- old/libvirt-python-8.1.0/ci/containers/fedora-33.Dockerfile 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/containers/fedora-33.Dockerfile 1970-01-01 01:00:00.000000000 +0100 @@ -1,43 +0,0 @@ -# THIS FILE WAS AUTO-GENERATED -# -# $ lcitool manifest ci/manifest.yml -# -# https://gitlab.com/libvirt/libvirt-ci - -FROM registry.fedoraproject.org/fedora:33 - -RUN dnf install -y nosync && \ - echo -e '#!/bin/sh\n\ -if test -d /usr/lib64\n\ -then\n\ - export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\ -else\n\ - export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\ -fi\n\ -exec "$@"' > /usr/bin/nosync && \ - chmod +x /usr/bin/nosync && \ - nosync dnf update -y && \ - nosync dnf install -y \ - ca-certificates \ - ccache \ - gcc \ - git \ - glibc-langpack-en \ - libvirt-devel \ - pkgconfig \ - python3 \ - python3-devel \ - python3-lxml \ - python3-pytest \ - python3-setuptools \ - rpm-build && \ - nosync dnf autoremove -y && \ - nosync dnf clean all -y && \ - rpm -qa | sort > /packages.txt && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc - -ENV LANG "en_US.UTF-8" -ENV PYTHON "/usr/bin/python3" -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/containers/fedora-34.Dockerfile new/libvirt-python-8.2.0/ci/containers/fedora-34.Dockerfile --- old/libvirt-python-8.1.0/ci/containers/fedora-34.Dockerfile 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/containers/fedora-34.Dockerfile 2022-03-28 16:44:48.000000000 +0200 @@ -28,6 +28,7 @@ python3 \ python3-devel \ python3-lxml \ + python3-pip \ python3-pytest \ python3-setuptools \ rpm-build && \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/containers/fedora-35.Dockerfile new/libvirt-python-8.2.0/ci/containers/fedora-35.Dockerfile --- old/libvirt-python-8.1.0/ci/containers/fedora-35.Dockerfile 1970-01-01 01:00:00.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/containers/fedora-35.Dockerfile 2022-03-28 16:44:48.000000000 +0200 @@ -0,0 +1,44 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +FROM registry.fedoraproject.org/fedora:35 + +RUN dnf install -y nosync && \ + echo -e '#!/bin/sh\n\ +if test -d /usr/lib64\n\ +then\n\ + export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\ +else\n\ + export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\ +fi\n\ +exec "$@"' > /usr/bin/nosync && \ + chmod +x /usr/bin/nosync && \ + nosync dnf update -y && \ + nosync dnf install -y \ + ca-certificates \ + ccache \ + gcc \ + git \ + glibc-langpack-en \ + libvirt-devel \ + pkgconfig \ + python3 \ + python3-devel \ + python3-lxml \ + python3-pip \ + python3-pytest \ + python3-setuptools \ + rpm-build && \ + nosync dnf autoremove -y && \ + nosync dnf clean all -y && \ + rpm -qa | sort > /packages.txt && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc + +ENV LANG "en_US.UTF-8" +ENV PYTHON "/usr/bin/python3" +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/containers/fedora-rawhide.Dockerfile new/libvirt-python-8.2.0/ci/containers/fedora-rawhide.Dockerfile --- old/libvirt-python-8.1.0/ci/containers/fedora-rawhide.Dockerfile 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/containers/fedora-rawhide.Dockerfile 2022-03-28 16:44:48.000000000 +0200 @@ -17,7 +17,7 @@ fi\n\ exec "$@"' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ - nosync dnf update -y && \ + nosync dnf distro-sync -y && \ nosync dnf install -y \ ca-certificates \ ccache \ @@ -29,6 +29,7 @@ python3 \ python3-devel \ python3-lxml \ + python3-pip \ python3-pytest \ python3-setuptools \ rpm-build && \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/containers/opensuse-leap-152.Dockerfile new/libvirt-python-8.2.0/ci/containers/opensuse-leap-152.Dockerfile --- old/libvirt-python-8.1.0/ci/containers/opensuse-leap-152.Dockerfile 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/containers/opensuse-leap-152.Dockerfile 2022-03-28 16:44:48.000000000 +0200 @@ -18,6 +18,7 @@ python3-base \ python3-devel \ python3-lxml \ + python3-pip \ python3-pytest \ python3-setuptools \ rpm-build && \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/containers/opensuse-tumbleweed.Dockerfile new/libvirt-python-8.2.0/ci/containers/opensuse-tumbleweed.Dockerfile --- old/libvirt-python-8.1.0/ci/containers/opensuse-tumbleweed.Dockerfile 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/containers/opensuse-tumbleweed.Dockerfile 2022-03-28 16:44:48.000000000 +0200 @@ -6,7 +6,7 @@ FROM registry.opensuse.org/opensuse/tumbleweed:latest -RUN zypper update -y && \ +RUN zypper dist-upgrade -y && \ zypper install -y \ ca-certificates \ ccache \ @@ -18,6 +18,7 @@ python3-base \ python3-devel \ python3-lxml \ + python3-pip \ python3-pytest \ python3-setuptools \ rpm-build && \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/containers/ubuntu-1804.Dockerfile new/libvirt-python-8.2.0/ci/containers/ubuntu-1804.Dockerfile --- old/libvirt-python-8.1.0/ci/containers/ubuntu-1804.Dockerfile 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/containers/ubuntu-1804.Dockerfile 2022-03-28 16:44:48.000000000 +0200 @@ -21,6 +21,7 @@ python3 \ python3-dev \ python3-lxml \ + python3-pip \ python3-pytest \ python3-setuptools && \ eatmydata apt-get autoremove -y && \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/containers/ubuntu-2004.Dockerfile new/libvirt-python-8.2.0/ci/containers/ubuntu-2004.Dockerfile --- old/libvirt-python-8.1.0/ci/containers/ubuntu-2004.Dockerfile 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/containers/ubuntu-2004.Dockerfile 2022-03-28 16:44:48.000000000 +0200 @@ -21,6 +21,7 @@ python3 \ python3-dev \ python3-lxml \ + python3-pip \ python3-pytest \ python3-setuptools && \ eatmydata apt-get autoremove -y && \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/gitlab.yml new/libvirt-python-8.2.0/ci/gitlab.yml --- old/libvirt-python-8.1.0/ci/gitlab.yml 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/gitlab.yml 2022-03-28 16:44:48.000000000 +0200 @@ -10,8 +10,7 @@ stage: containers needs: [] services: - - name: registry.gitlab.com/libvirt/libvirt-ci/docker-dind:master - alias: docker + - docker:dind before_script: - export TAG="$CI_REGISTRY_IMAGE/ci-$NAME:latest" - export COMMON_TAG="$CI_REGISTRY/libvirt/libvirt-python/ci-$NAME:latest" @@ -50,13 +49,6 @@ # Native container jobs -x86_64-centos-8-container: - extends: .container_job - allow_failure: false - variables: - NAME: centos-8 - - x86_64-centos-stream-8-container: extends: .container_job allow_failure: false @@ -78,18 +70,18 @@ NAME: debian-sid -x86_64-fedora-33-container: +x86_64-fedora-34-container: extends: .container_job allow_failure: false variables: - NAME: fedora-33 + NAME: fedora-34 -x86_64-fedora-34-container: +x86_64-fedora-35-container: extends: .container_job allow_failure: false variables: - NAME: fedora-34 + NAME: fedora-35 x86_64-fedora-rawhide-container: @@ -129,36 +121,28 @@ # Native build jobs -x86_64-centos-8: +x86_64-centos-stream-8: extends: .native_build_job needs: - - x86_64-centos-8-container + - x86_64-centos-stream-8-container allow_failure: false variables: - NAME: centos-8 + NAME: centos-stream-8 -x86_64-centos-8-git: +x86_64-centos-stream-8-git: extends: .native_git_build_job needs: - - x86_64-centos-8-container + - x86_64-centos-stream-8-container allow_failure: false variables: - NAME: centos-8 + NAME: centos-stream-8 artifacts: expire_in: 2 days paths: - scratch - build -x86_64-centos-stream-8: - extends: .native_build_job - needs: - - x86_64-centos-stream-8-container - allow_failure: false - variables: - NAME: centos-stream-8 - x86_64-debian-10: extends: .native_build_job @@ -178,22 +162,22 @@ NAME: debian-sid -x86_64-fedora-33: +x86_64-fedora-34: extends: .native_build_job needs: - - x86_64-fedora-33-container + - x86_64-fedora-34-container allow_failure: false variables: - NAME: fedora-33 + NAME: fedora-34 -x86_64-fedora-34: +x86_64-fedora-35: extends: .native_build_job needs: - - x86_64-fedora-34-container + - x86_64-fedora-35-container allow_failure: false variables: - NAME: fedora-34 + NAME: fedora-35 x86_64-fedora-rawhide: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/ci/manifest.yml new/libvirt-python-8.2.0/ci/manifest.yml --- old/libvirt-python-8.1.0/ci/manifest.yml 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/ci/manifest.yml 2022-03-28 16:44:48.000000000 +0200 @@ -8,7 +8,7 @@ targets: - centos-8: + centos-stream-8: projects: - libvirt-python - libvirt+minimal @@ -25,16 +25,14 @@ - scratch - build - centos-stream-8: x86_64 - debian-10: x86_64 debian-sid: x86_64 - fedora-33: x86_64 - fedora-34: x86_64 + fedora-35: x86_64 + fedora-rawhide: x86_64 opensuse-leap-152: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/generator.py new/libvirt-python-8.2.0/generator.py --- old/libvirt-python-8.1.0/generator.py 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/generator.py 2022-03-28 16:44:48.000000000 +0200 @@ -626,6 +626,7 @@ # "virDomainQemuAttach", 'virConnectDomainQemuMonitorEventRegister', # overridden in -qemu.py 'virConnectDomainQemuMonitorEventDeregister', # overridden in -qemu.py + 'virDomainQemuMonitorCommandWithFiles', # overridden in -qemu.py } # Generate C code, but skip python impl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/libvirt-qemu-override.c new/libvirt-python-8.2.0/libvirt-qemu-override.c --- old/libvirt-python-8.1.0/libvirt-qemu-override.c 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/libvirt-qemu-override.c 2022-03-28 16:44:48.000000000 +0200 @@ -20,6 +20,9 @@ #include "typewrappers.h" #include "libvirt-utils.h" #include "build/libvirt-qemu.h" +#ifndef __CYGWIN__ +# include <fcntl.h> +#endif #ifndef __CYGWIN__ extern PyObject *PyInit_libvirtmod_qemu(void); @@ -325,6 +328,118 @@ } #endif /* LIBVIR_CHECK_VERSION(1, 2, 3) */ +#if LIBVIR_CHECK_VERSION(8, 2, 0) +static PyObject * +libvirt_qemu_virDomainQemuMonitorCommandWithFiles(PyObject *self ATTRIBUTE_UNUSED, + PyObject *args) +{ + PyObject *pyobj_domain; + const char *cmd; + PyObject *pyobj_files; + unsigned int flags; + virDomainPtr domain; + unsigned int ninfiles; + int *infiles = NULL; + unsigned int noutfiles = 0; + int *outfiles = NULL; + char *result = NULL; + ssize_t i; + PyObject *py_outfiles = NULL; + PyObject *py_retval = NULL; + int c_retval; + + if (!PyArg_ParseTuple(args, + (char *) "Os|OI:virDomainQemuMonitorCommandWithFiles", + &pyobj_domain, &cmd, &pyobj_files, &flags)) + return NULL; + domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain); + + ninfiles = PyList_Size(pyobj_files); + + if (VIR_ALLOC_N(infiles, ninfiles) < 0) + return PyErr_NoMemory(); + + for (i = 0; i < ninfiles; i++) { + PyObject *pyfd; + int fd; + + pyfd = PyList_GetItem(pyobj_files, i); + + if (libvirt_intUnwrap(pyfd, &fd) < 0) + goto cleanup; + + infiles[i] = fd; + } + + LIBVIRT_BEGIN_ALLOW_THREADS; + c_retval = virDomainQemuMonitorCommandWithFiles(domain, cmd, ninfiles, infiles, + &noutfiles, &outfiles, &result, flags); + LIBVIRT_END_ALLOW_THREADS; + + if (c_retval < 0) { + py_retval = VIR_PY_NONE; + goto cleanup; + } + + if (!(py_outfiles = PyList_New(0)) || + !(py_retval = PyTuple_New(2))) { + goto error; + } + + for (i = 0; i < noutfiles; i++) { + int fd = outfiles[i]; + const char *mode = "r+b"; + + /* Since FD passing works only on UNIX-like systems, we can do this. */ +#ifndef __CYGWIN__ + int fflags; + + if ((fflags = fcntl(fd, F_GETFL)) < 0) + goto error; + + switch (fflags & (O_ACCMODE | O_APPEND)) { + case O_RDONLY: + mode = "rb"; + break; + case O_WRONLY: + mode = "wb"; + break; + case O_RDWR: + mode = "r+b"; + break; + case O_WRONLY | O_APPEND: + mode = "ab"; + break; + case O_RDWR | O_APPEND: + mode = "a+b"; + break; + } +#endif + + VIR_PY_LIST_APPEND_GOTO(py_outfiles, PyFile_FromFd(fd, NULL, mode, 0, NULL, NULL, NULL, 1), error); + } + + VIR_PY_TUPLE_SET_GOTO(py_retval, 0, libvirt_charPtrWrap(result), error); + VIR_PY_TUPLE_SET_GOTO(py_retval, 1, py_outfiles, error); + /* stolen by py_retval */ + py_outfiles = NULL; + + cleanup: + Py_XDECREF(py_outfiles); + VIR_FREE(result); + VIR_FREE(outfiles); + VIR_FREE(infiles); + return py_retval; + + error: + while (noutfiles > 0) { + VIR_FORCE_CLOSE(outfiles[--noutfiles]); + } + Py_CLEAR(py_retval); + goto cleanup; +} +#endif /* LIBVIR_CHECK_VERSION(8, 2, 0) */ + /************************************************************************ * * * The registration stuff * @@ -340,6 +455,9 @@ {(char *) "virConnectDomainQemuMonitorEventRegister", libvirt_qemu_virConnectDomainQemuMonitorEventRegister, METH_VARARGS, NULL}, {(char *) "virConnectDomainQemuMonitorEventDeregister", libvirt_qemu_virConnectDomainQemuMonitorEventDeregister, METH_VARARGS, NULL}, #endif /* LIBVIR_CHECK_VERSION(1, 2, 3) */ +#if LIBVIR_CHECK_VERSION(8, 2, 0) + {(char *) "virDomainQemuMonitorCommandWithFiles", libvirt_qemu_virDomainQemuMonitorCommandWithFiles, METH_VARARGS, NULL}, +#endif /* LIBVIR_CHECK_VERSION(8, 2, 0) */ {NULL, NULL, 0, NULL} }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/libvirt-qemu-override.py new/libvirt-python-8.2.0/libvirt-qemu-override.py --- old/libvirt-python-8.1.0/libvirt-qemu-override.py 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/libvirt-qemu-override.py 2022-03-28 16:44:48.000000000 +0200 @@ -1,5 +1,5 @@ # Manually written part of python bindings for libvirt-qemu -from typing import Any, Callable, Dict +from typing import Any, Callable, Dict, List, IO def _dispatchQemuMonitorEventCallback(conn: libvirt.virConnect, dom: libvirt.virDomain, event: str, seconds: int, micros: int, details: str, cbData: Dict[str, Any]) -> int: @@ -38,3 +38,32 @@ raise libvirt.libvirtError('virConnectDomainQemuMonitorEventRegister() failed') conn.qemuMonitorEventCallbackID[ret] = opaque # type: ignore return ret + +def qemuMonitorCommandWithFiles(domain: libvirt.virDomain, cmd: str, files: List[int] = [], flags: int = 0) -> (str, List[IO]): + """This API is QEMU specific, so it will only work with hypervisor + connections to the QEMU driver with local connections using the unix + socket. + + Send an arbitrary monitor command @cmd with file descriptors @files to + domain through the QEMU monitor and optionally return a list of files + in the returned tuple. There are several requirements to safely + and successfully use this API: + + - A @cmd that queries state without making any modifications is safe + - A @cmd that alters state that is also tracked by libvirt is unsafe, + and may cause libvirtd to crash + - A @cmd that alters state not tracked by the current version of + libvirt is possible as a means to test new qemu features before + they have support in libvirt, but no guarantees are made to safety + + If VIR_DOMAIN_QEMU_MONITOR_COMMAND_HMP is set, the command is considered to + be a human monitor command and libvirt will automatically convert it into + QMP if needed. In that case the @result will also be converted back from + QMP. + + Returns a tuple consisting of the string output from @cmd and a list of + files respectively.""" + ret = libvirtmod_qemu.virDomainQemuMonitorCommandWithFiles(domain._o, cmd, files, flags) + if ret is None: + raise libvirt.libvirtError('virDomainQemuMonitorCommandWithFiles() failed') + return ret diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-8.1.0/setup.py new/libvirt-python-8.2.0/setup.py --- old/libvirt-python-8.1.0/setup.py 2022-02-11 12:20:26.000000000 +0100 +++ new/libvirt-python-8.2.0/setup.py 2022-03-28 16:44:48.000000000 +0200 @@ -335,7 +335,7 @@ _c_modules, _py_modules = get_module_lists() setup(name = 'libvirt-python', - version = '8.1.0', + version = '8.2.0', url = 'http://www.libvirt.org', maintainer = 'Libvirt Maintainers', maintainer_email = 'libvir-l...@redhat.com',