1
0
mirror of https://gitlab.com/libvirt/libvirt-python.git synced 2025-12-10 16:23:50 +03:00
Commit Graph

1075 Commits

Author SHA1 Message Date
Philipp Hahn
900676d3c4 examples/consolecallback: Fix assorted errors
Assert stream is opened before receiving bytes.

Need to check for bytes() instead of [unicode]str().

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:01 +00:00
Philipp Hahn
55415a4870 examples/consolecallback: Add var to save callback
> examples/consolecallback.py:98: error: "Console" has no attribute "stdin_watch"

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:01 +00:00
Philipp Hahn
77f57cd5ec examples/esxlist: Fix Python 2 raw_input()
which was renamed to input() for Python 3.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:01 +00:00
Philipp Hahn
cb8cceb0d8 examples/event-test: Use atexit for Python 3
Assigning sys.exitfunc no longer works with Python 3.

Use atexit.register() instead.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:01 +00:00
Philipp Hahn
59c2df2fa4 examples/event-test: Remove unneeded global statement
It only needed when a value is assigned.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:01 +00:00
Philipp Hahn
a19f086831 examples/dhcp*: Fix None comparison
None should be compared with "is None" instead of "== None", as the
later would invoke a "__cmp__()" method.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:01 +00:00
Philipp Hahn
6aa02b3292 examples/*: Remove stray semicolon
This is Python, not C

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:01 +00:00
Daniel P. Berrangé
dc1dc11efe ci: refresh dockerfiles for changed libvirt build system
Libvirt changed from autotools to meson. All the containers need
refreshing and the CI recipes updated.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-08-04 12:23:26 +01:00
Jiri Denemark
2966ed6085 Post-release version bump to 6.7.0
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
2020-08-03 00:23:16 +02:00
Philipp Hahn
ca394b9f3c generator: Fix parent type
The constructors for virDomain, virStoragePool, virDomainCheckpoint,
virDomainSnapshot expect virConnect as their first argument. The current
code always uses `self`, which is okay when such an instance is created
from a method of virConnect itself, but there are several cases where
this is not the case:

    virDomain.migrate() -> virDomain
    virDomain.migrate2() -> virDomain
    virDomain.migrate3() -> virDomain
    virDomainCheckpoint.getParent() -> virDomainCheckpoint
    virDomainSnapshot.getParent() -> virDomainSnapshot
    virStorageVol.storagePoolLookupByVolume() -> virStoragePool

> libvirt.py:1850: error: Argument 1 to "virDomain" has incompatible type "virDomain"; expected "virConnect"
> libvirt.py:1871: error: Argument 1 to "virDomain" has incompatible type "virDomain"; expected "virConnect"
> libvirt.py:1888: error: Argument 1 to "virDomain" has incompatible type "virDomain"; expected "virConnect"
> libvirt.py:3422: error: Argument 1 to "virStorageVol" has incompatible type "virStoragePool"; expected "virConnect"
> libvirt.py:6835: error: Argument 1 to "virDomainCheckpoint" has incompatible type "virDomainCheckpoint"; expected "virDomain"
> libvirt.py:6943: error: Argument 1 to "virDomainSnapshot" has incompatible type "virDomainSnapshot"; expected "virDomain"

>>> import libvirt
>>> con = libvirt.open('test:///default')
>>> dom = con.lookupByName("test")
>>> first = dom.checkpointCreateXML("""<domaincheckpoint><name>First</name></domaincheckpoint>""")
>>> first.domain()
<libvirt.virDomain object at 0x7f728c3b6b80>
            ^^^^^^
>>> second = dom.checkpointCreateXML("""<domaincheckpoint><name>Second</name></domaincheckpoint>""")
>>> parent = second.getParent()
>>> parent.domain()
<libvirt.virDomainCheckpoint object at 0x7f728c424d30>
            ^^^^^^^^^^^^^^^^

Signed-off-by: Philipp Hahn <hahn@univention.de>
v6.6.0
2020-07-27 13:48:28 +02:00
Philipp Hahn
a14161f01c debug: Fix bit-rot in debug output
Let the compiler optimize out the printf() call instead of doing it with the
pre-processor as the later does not catch format string errors or the following
case, where NULLSTR() is used but not defined:

> libvirt-qemu-override.c: In function ‘libvirt_qemu_virConnectDomainQemuMonitorEventRegister’:
> libvirt-qemu-override.c:271:34: warning: implicit declaration of function ‘NULLSTR’; did you mean ‘NULL’? [-Wimplicit-function-declaration]
>   271 |           pyobj_conn, pyobj_dom, NULLSTR(event), pyobj_cbData, flags);
>       |                                  ^~~~~~~
> libvirt-qemu-override.c:39:28: note: in definition of macro ‘DEBUG’
>    39 |     while (0) {printf(fmt, __VA_ARGS__);}
>       |                            ^~~~~~~~~~~
> libvirt-qemu-override.c:270:11: warning: format ‘%s’ expects argument of type ‘char *’, but argument 4 has type ‘int’ [-Wformat=]
>   270 |     DEBUG("libvirt_qemu_virConnectDomainQemuMonitorEventRegister(%p %p %s %p %x) called\n",
>       |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   271 |           pyobj_conn, pyobj_dom, NULLSTR(event), pyobj_cbData, flags);
>       |                                  ~~~~~~~~~~~~~~
>       |                                  |
>       |                                  int
> libvirt-qemu-override.c:39:23: note: in definition of macro ‘DEBUG’
>    39 |     while (0) {printf(fmt, __VA_ARGS__);}
>       |                       ^~~
> libvirt-qemu-override.c:270:73: note: format string is defined here
>   270 |     DEBUG("libvirt_qemu_virConnectDomainQemuMonitorEventRegister(%p %p %s %p %x) called\n",
>       |                                                                        ~^
>       |                                                                         |
>       |                                                                         char *
>       |                                                                        %d

Copy the definition of NULLSTR from libvirt/src/internal.h to typewrappers.h

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-07-27 13:24:36 +02:00
Philipp Hahn
cfcf988a98 libvirtaio: Fix return types of callback
libvirt defines the signature for the callback functions, e.g. the
functions for remove() must return -1 on error and 0 on success. Raising
an exception violates that contract.

_remove_timeout() did not explicitly handle a double-remove and
implicitly passed on the exception.

update() expects no return value, so remove the pointless return to pass
on None.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-07-27 13:24:36 +02:00
Philipp Hahn
b595e59b48 qemu-api: Fix return type
The API XML description uses "C types": "str *" is not valid.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-07-27 13:24:36 +02:00
Philipp Hahn
932055e3cb generator: Fix domainCheckpoint.listAllChildren()
virDomainCheckpoint(dom, _obj)
expects a reference to the virDomain as its first argument, but
    virDomainCheckpoint.listAllChildren()
passes `self` instead:

libvirt.py:7056: error: Argument 1 to "virDomainCheckpoint" has incompatible type "virDomainCheckpoint"; expected "virDomain"

>>> import libvirt
>>> con = libvirt.open('test:///default')
>>> dom = con.lookupByName("test")
>>> first = dom.checkpointCreateXML("""<domaincheckpoint><name>First</name></domaincheckpoint>""")
>>> second = dom.checkpointCreateXML("""<domaincheckpoint><name>Second</name></domaincheckpoint>""")
>>> child, = first.listAllChildren()
>>> second.domain()
<libvirt.virDomain object at 0x7f828d777b80>
         ^^^^^^^^^
>>> child.domain()
<libvirt.virDomainCheckpoint object at 0x7f828d8160a0>
         ^^^^^^^^^^^^^^^^^^^

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-07-27 13:24:36 +02:00
Philipp Hahn
a65d230ded generator: Fix domainSnapshot.listAllChildren()
virDomainSnapshot(dom, _obj)
expects a reference to the virDomain as its first argument, but
    virDomainSnapshot.listAllChildren()
passes `self` instead:

libvirt.py:6459: error: Argument 1 to "virDomainSnapshot" has incompatible type "virDomainSnapshot"; expected "virDomain"

>>> import libvirt
>>> con = libvirt.open('test:///default')
>>> dom = con.lookupByName("test")
>>> first = dom.snapshotCreateXML("""<domainsnapshot><name>First</name></domainsnapshot>""")
>>> second = dom.snapshotCreateXML("""<domainsnapshot><name>Second</name></domainsnapshot>""")
>>> child, = first.listAllChildren()
>>> second.domain()
<libvirt.virDomain object at 0x7fb32be3cfd0>
         ^^^^^^^^^
>>> child.domain()
<libvirt.virDomainSnapshot object at 0x7fb32bdb9080>
         ^^^^^^^^^^^^^^^^^

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-07-27 13:24:36 +02:00
Philipp Hahn
d2de75dd83 generator: Fix string formatting
remove excessive arguments.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-07-27 13:24:36 +02:00
Philipp Hahn
c23bd95798 generator: Fix undefined variables file
generator.py:931:15: F821 undefined name 'file'
generator.py:951:15: F821 undefined name 'file'

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-07-27 13:24:36 +02:00
Jiri Denemark
bf049af8f9 Post-release version bump to 6.6.0
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
2020-07-23 00:43:16 +02:00
Radostin Stoyanov
d4b62ae615 generator: Fix typos
Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
2020-07-17 09:28:39 +01:00
Radostin Stoyanov
ed545f9fff examples: Refactor domipaddrs
This patch makes domipaddrs example compatible with Python3.

Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
2020-07-15 11:05:35 +01:00
Cole Robinson
c1b9384759 Fix PY_SSIZE_T_CLEAN deprecation warning
Seen running on fedora 32:

DeprecationWarning: PY_SSIZE_T_CLEAN will be required for '#' formats
  ret = libvirtmod.virDomainLookupByUUID(self._o, uuid)

This comes from here: https://bugs.python.org/issue36381
See the section about PY_SSIZE_T_CLEAN here:
https://docs.python.org/3/c-api/arg.html#strings-and-buffers

Solution is to use Py_ssize_t instead of int for unpacked '#' values,
combined with defined PY_SSIZE_T_CLEAN before importing Python.h. The
latter turns these deprecation warnings into runtime segfaults though
if we missed an instance.

I verified the virt-manager's test suite works fine after this change

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-07-06 11:01:01 +00:00
Cole Robinson
cecaa15b64 generator: Fix SyntaxWarning
$ ./setup.py build
running build
/usr/bin/pkg-config --print-errors --atleast-version=0.9.11 libvirt
/usr/bin/python3 generator.py libvirt /usr/share/libvirt/api/libvirt-api.xml
generator.py:1562: SyntaxWarning: "is" with a literal. Did you mean "=="?
  if classname is "virStorageVol":
...

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2020-07-05 17:48:50 -04:00
Michal Privoznik
d0ac75bb9c virStream: Use larger buffer for sendAll/recvAll methods
There are four methods which receive/send entire stream
(sendAll(), recvAll(), sparseSendAll() and sparseRecvAll()). All
these have an intermediary buffer which is either filled by
incoming stream and passed to a user provided callback to handle
the data, or the other way round - user fills it with data they
want to send and the buffer is handed over to virStream.

But the buffer is incredibly small which leads to smaller packets
being sent and thus increased overhead. What we can do is to use
the same buffer as their C counterparts do (e.g.
virStreamSendAll()) - they all use VIR_NET_MESSAGE_LEGACY_PAYLOAD_MAX
long buffer (which is the maximum size of a stream packet we
send) - this is almost exactly 256KiB (it's 256KiB - 24B for the
header).

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
2020-07-03 19:09:46 +02:00
Michal Privoznik
11bb65bff3 MANIFEST: Distribute sparsestream.py example
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
2020-07-03 19:09:45 +02:00
Daniel P. Berrangé
2ccc481c31 setup: post-release version bump to 6.5.0
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
v6.5.0
2020-06-08 16:43:39 +01:00
Andrea Bolognani
8c5879b44d ci: Test installation
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
v6.4.0
2020-05-22 18:35:19 +02:00
Andrea Bolognani
dc5edeb087 ci: Make job skips more flexible
Instead of hardcoding the names of the targets for which certain
steps should be skipped, use a separate variable to store that
information.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2020-05-22 18:29:22 +02:00
Daniel P. Berrangé
68f5bd0bbc examples: remove docs about non-existent XML files
The docs refers to XML files that don't exist in the python binding
since it was split off from the main libvirt.git repo.

Fixes #3
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-05-14 14:03:59 +01:00
Daniel P. Berrangé
54e99c9ec4 Drop largely empty and unused NEWS file
We bundle a git generated ChangeLog file in the dist, and never add
any entries to the NEWS file.

Fixes #2
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-05-14 10:43:41 +01:00
Daniel P. Berrangé
8cbcbf2a84 gitlab: add testing of the rpmbuild process
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-05-14 10:43:40 +01:00
Daniel P. Berrangé
6088ce10b9 gitlab: add CONTRIBUTING.rst file to indicate use of merge requests
With the introduction of automated CI pipelines, we are now ready to switch
to using merge requests for the project. With this switch we longer wish
to have patches sent to the mailing list, and thus the git-publish
config is removed.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-05-05 12:10:18 +01:00
Daniel P. Berrangé
11805dd7a6 setup: post-release version bump to 6.4.0
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-05-05 12:08:51 +01:00
Daniel Veillard
4c7fc59e0a Release of libvirt-python 6.3.0
* setup.py: updated for the release

Signed-off-by: Daniel Veillard <veillard@redhat.com>
v6.3.0
2020-05-05 08:52:25 +02:00
Daniel P. Berrangé
ed74df4813 gitlab: fix typo s/perl/python/ in docker cached image name
Reported-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-05-01 17:09:13 +01:00
Daniel P. Berrangé
5ee6b3ac26 travis: delete redundant configuration
Now that we're standardizing on GitLab CI for both official gating CI
and developer CI, there's no compelling reason to continue to support
Travis CI.

Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-05-01 13:15:02 +01:00
Daniel P. Berrangé
76a8346643 gitlab: introduce CI jobs testing git master & distro libvirt
The python build needs to validate two axis

 - A variety of libvirt versions
 - A variety of python versions

We get coverage for both these axis by running a build against the
distro provided libvirt packages. All that is then missing is a build
against the latest libvirt git master, which only needs to be run on
a single distro, for which CentOS 8 is picked as a stable long life
base.

Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-05-01 13:14:55 +01:00
Daniel P. Berrangé
7d2715c0dd test: workaround missing VIR_TYPED_PARAM enums in API definition
On Ubuntu 18.04 with libvirt 4.0.0 libvirt-python build fails

running test
/usr/bin/python3 sanitytest.py build/lib.linux-x86_64-3.6 /usr/share/libvirt/api/libvirt-api.xml
Cannot get a value of enum VIR_TYPED_PARAM_BOOLEAN (originally VIR_DOMAIN_BLKIO_PARAM_BOOLEAN)
Cannot get a value of enum VIR_TYPED_PARAM_DOUBLE (originally VIR_DOMAIN_BLKIO_PARAM_DOUBLE)
Cannot get a value of enum VIR_TYPED_PARAM_INT (originally VIR_DOMAIN_BLKIO_PARAM_INT)
...snip...

The code generated for the binding is still correct and so we can just
whitelist this error scenario.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-05-01 13:13:13 +01:00
Daniel P. Berrangé
51d434cf03 gitlab: add CI job for validating DCO signoff
This job uses the shared "check-dco" image to validate that all
commits on a branch in a developer's repo fork have a suitable
Signed-off-by statement present.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-04-30 16:24:52 +01:00
Philipp Hahn
4d99e8443c examples: Fix connection error handling 2
Fix two more cases in examples as
libvirt.open*() does not return None but raises an exception

Fixes: 283e2bc693
Signed-off-by: Philipp Hahn <hahn@univention.de>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2020-04-27 11:16:21 +02:00
Daniel P. Berrangé
4252e827e0 setup: require python >= 3.5 to build
Python 3.5 is the oldest Python version available across our supported
build platforms.

Reviewed-by: Philipp Hahn <hahn@univention.de>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-04-22 11:05:11 +01:00
Philipp Hahn
283e2bc693 examples: Fix connection error handling
libvirt.open*() does not return None but raises an exception

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-04-20 13:21:55 +01:00
Daniel P. Berrangé
53565fe096 github: enable lockdown of issues and merge requests
Libvirt uses GitHub as an automated read-only mirror. The goals were to
have a disaster recovery backup for libvirt.org, a way to make it easy
for people to clone their own private copy of libvirt Git, and finally
as a way to interact with apps like Travis.

The project description was set to a message telling people that we
don't respond to pull requests. This was quite a negative message to
potential contributors, and also did not give them any guidance about
the right way to submit to libvirt. Many also missed the description and
submitted issues or pull requests regardless.

It is possible to disable the issue tracker in GitHub, but there is no
way to disable merge requests. Disabling the issue tracker would also
leave the problem of users not being given any positive information
about where they should be reporting instead.

There is a fairly new 3rd party application built for GitHub that
provides a bot which auto-responds to both issues and merge requests,
closing and locking them, with a arbitrary comment:

   https://github.com/apps/repo-lockdown

This commit adds a suitable configuration file for libvirt, which
tries to give a positive response to user's issue/pullreq and guide
them to the desired contribution path on GitLab.

Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-04-07 17:28:33 +01:00
Daniel Veillard
85c5243497 Release of libvirt-python 6.2.0
* setup.py: bumped version to 6.2.0

Signed-off-by: Daniel Veillard <veillard@redhat.com>
v6.2.0
2020-04-02 21:26:41 +02:00
Radostin Stoyanov
eed36f8935 tox: Test with Python 3.6, 3.7 and 3.8
Support for Python 2.X has been dropped with commit b22e4f2.

Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2020-03-30 12:33:17 +02:00
Daniel Veillard
af65786ef5 Release of libvirt-python 6.1.0
* setup.py : updated for release

Signed-off-by: Daniel Veillard <veillard@redhat.com>
v6.1.0
2020-03-03 14:53:15 +01:00
Daniel P. Berrangé
95c1bb2fed gitpublish: add 'libvirt-' to subject prefix
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-01-16 15:44:34 +00:00
Daniel Veillard
ae8e5b1de6 Release of libvirt-python-6.0.0
* setup.py: updated for the release

Signed-off-by: Daniel Veillard <veillard@redhat.com>
v6.0.0
2020-01-15 16:23:53 +01:00
Daniel P. Berrangé
56afc9b33f Add overrides for network port UUID getter/lookup methods
The generator creates broken code for all these methods.

Reviewed-by: Fabiano Fidêncio <fidencio@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-01-03 11:32:57 +00:00
Daniel P. Berrangé
7b18e3bae8 fix class type instantiated when listing network ports
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-01-03 11:32:55 +00:00
Andrea Bolognani
5efdfd042c setup: Accept 'nosetests3' as nosetests binary
This is the name used on Ubuntu.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-12-09 16:14:10 +01:00