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

82 Commits

Author SHA1 Message Date
Philipp Hahn
7c93891420 examples/event-test: Fix remove return type
The remove function are supposed to return 0 on success and -1 on failure.
<https://libvirt.org/html/libvirt-libvirt-event.html#virEventRemoveTimeoutFunc>

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-06 08:50:37 +02:00
Philipp Hahn
74a78fa42c examples: Fix white space
indent by 4 spaces
one spaces around assignments

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:02 +00:00
Philipp Hahn
b801ff31fa examples: Replace sys.exit() with exit()
No need to import sys.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:02 +00:00
Philipp Hahn
f496dc55ee examples: Cleanup imports
Break import into multiple lines as recommended by PEP-8

Move imports to top

Remove unused imports

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:02 +00:00
Philipp Hahn
4e22f4de6f examples: Do not use bare except
as it also catches SystemExit, InterruptedError, SyntaxError and such.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:02 +00:00
Philipp Hahn
06aba185a8 examples: Convert to ArgumentParser
Replace getopt() and hand-rolled-parser with argparse.ArgumentParser.

Fix wrong header comments copy-pasted from domstart.py

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:02 +00:00
Philipp Hahn
9cf539a2a8 examples: Add/fix PEP 484 type annotation
Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:02 +00:00
Philipp Hahn
5434ed53ff examples: Add missing return values
examples/dhcpleases.py:45: error: Missing return statement

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:02 +00:00
Philipp Hahn
c588ba982e examples/nodestat: Fix None comparison
"is" compares for "points to the same object", which for strings is the
same as comparing the byte sequence itself as Python hashes each strings
to only stores a unique copy of each string.

> examples/nodestats.py:86:43: F632 use ==/!= to compare constant literals (str, bytes, int, float, tuple)
> examples/nodestats.py:91:12: F632 use ==/!= to compare constant literals (str, bytes, int, float, tuple)
> examples/nodestats.py:94:40: F632 use ==/!= to compare constant literals (str, bytes, int, float, tuple)

Use "==" and "!=" for string comparsion.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2020-08-05 07:43:02 +00:00
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
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
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
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
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é
b22e4f2441 Drop support for python 2
python2 will be end of life by the time of the next
libvirt release. All our supported build targets, including
CentOS7, have a python3 build available.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-12-04 12:14:51 +00:00
Philipp Hahn
389cc9d0c7 Add daemon to list of shutdown reasons
Add the support to work with libvirt commit 66a85cb13.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-11-26 14:13:49 +01:00
Philipp Hahn
9af6f1a5d3 event-test.py: Report ERROR events
VIR_DOMAIN_EVENT_ID_IO_ERROR and VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON
callbacks receive the same 'action' parameter, so also translate that
numeric action to a descriptive text for the first callback.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-11-01 14:09:20 +01:00
Philipp Hahn
c8b6e5fc3c event-test.py: Fix ERROR event
ERROR_EVENTS translates the numeric 'action' argument to a description,
not the 'reason' argument which already contains a descriptive string
like 'enospc'.

> Traceback (most recent call last):
>   File "/usr/lib/python2.7/dist-packages/libvirt.py", line 4661, in _dispatchDomainEventIOErrorReasonCallback
>     reason, opaque)
>   File "libvirt-python/examples/event-test.py", line 536, in myDomainEventIOErrorReasonCallback
>     dom.name(), dom.ID(), srcpath, devalias, action, ERROR_EVENTS[reason]))
>   File "libvirt-python/examples/event-test.py", line 474, in __getitem__
>     data = self.args[item]
> TypeError: tuple indices must be integers, not str

Fixes: f5928c6711
Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-11-01 14:09:20 +01:00
Philipp Hahn
9dff88056c event-test.py: Fix blanks
Closer to pep8

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
10ba71a0a0 event-test.py: Convert CONNECTION events
to use new Description class

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
bf7c6135e8 event-test.py: Convert SECRET events
to use new Description class

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
c0235d01e7 event-test.py: Convert DEVICE events
to use new Description class

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
808625fac7 event-test.py: Convert STORAGE events
to use new Description class

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
616c7c3482 event-test.py: Convert NETWORK events
to use new Description class

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
298f90c6ef event-test.py: Convert TRAY events
to use new Description class

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
6a41da247d event-test.py: Convert DISK events
to use new Description class

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
f58fcd69d2 event-test.py: Convert GRAPHICS events
to use new Description class

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
dfa00dddd5 event-test.py: Convert AGENT events
to use new Description class

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
f5928c6711 event-test.py: Convert ERROR events
to use new Description class

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
ba45c10511 event-test.py: Convert WATCHDOG events
to use new Description class

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
e5ecf38911 event-test.py: Convert BLOCKJOB events
to use new Description class

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
257157c984 event-test.py: Convert LIVECYCLE events
to use new Description class

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
26350dc97d event-test.py: Add class for event descriptions
Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
37e56947cc event-test.py: Simplify event ID lists
by directly building the list with the IDs instead of appending them
explicitly.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:06:00 +02:00
Philipp Hahn
73b5ae581c event-test.py: Merge livecycle callbacks
Registering the same function twice using the old domainEventRegister()
interface would not work, as the function reference is used for
un-registering.

But it is not a problem with the new interface domainEventRegisterAny(),
as that returns a unique ID.

While at it also demonstrate the 'opaque' mechanism.

Signed-off-by: Philipp Hahn <hahn@univention.de>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-09-24 09:06:00 +02:00
Philipp Hahn
d408dc944d event-test.py: Use __file__
instead of sys.argv[0]

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:05:59 +02:00
Philipp Hahn
655b94803e event-test.py: Add missing globale statement
to fix loop termination on exit.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:05:59 +02:00
Philipp Hahn
b7d5d60274 event-test.py: Remove dead assignment
variable is unused

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:05:59 +02:00
Philipp Hahn
5a7a871961 event-test.py: Remove extra parenthesis
Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:05:59 +02:00
Philipp Hahn
77e700c501 event-test.py: Handle closed connection
If libvirtd terminates while event-test.py has an open connection to it,
it will crash with the following traceback:

> myConnectionCloseCallback: qemu:///session: Error
> Exception in thread libvirtEventLoop:
> Traceback (most recent call last):
>   File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
>     self.run()
>   File "/usr/lib/python2.7/threading.py", line 754, in run
>     self.__target(*self.__args, **self.__kwargs)
>   File "examples/event-test.py", line 424, in virEventLoopPollRun
>     eventLoop.run_loop()
>   File "examples/event-test.py", line 242, in run_loop
>     self.run_once()
>   File "examples/event-test.py", line 187, in run_once
>     libvirt.virEventInvokeFreeCallback(opaque)
> AttributeError: 'module' object has no attribute 'virEventInvokeFreeCallback'
>
> libvirt: XML-RPC error : internal error: client socket is closed
> Traceback (most recent call last):
>   File "examples/event-test.py", line 872, in <module>
>     main()
>   File "examples/event-test.py", line 854, in main
>     vc.secretEventDeregisterAny(id)
>   File "/usr/lib/python2.7/dist-packages/libvirt.py", line 4987, in secretEventDeregisterAny
>     if ret == -1: raise libvirtError ('virConnectSecretEventDeregisterAny() failed', conn=self)
> libvirt.libvirtError: internal error: client socket is closed
> Closing qemu:///session

Skip unregistering the event callbacks and closing the connection if the
connection is already broken / closed.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2018-09-24 09:05:59 +02:00
Philipp Hahn
d5342a9803 event-test.py: Sync list of domain lifecycle events
Add new events to prevent crash:
> Traceback (most recent call last):
>   File "/usr/lib/python2.7/dist-packages/libvirt.py", line 4601, in _dispatchDomainEventCallbacks
>     cb(self, virDomain(self, _obj=dom), event, detail, opaque)
>   File "libvirt-python/examples/event-test.py", line 505, in myDomainEventCallback1
>     domDetailToString(event, detail)))
>   File "libvirt-python/examples/event-test.py", line 484, in domDetailToString
>     return domEventStrings[event][detail]
> IndexError: tuple index out of range

Signed-off-by: Philipp Hahn <hahn@univention.de>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-09-24 09:05:59 +02:00
Michal Privoznik
bae22e3eb7 event-test.py: Sync list of storage lifecycle events
https://bugzilla.redhat.com/show_bug.cgi?id=1578337

Since libvirt 3.8.0 we have 6 events: defined, undefined,
started, stopped, created, deleted. However, the last two were
missing in a string list that translates libvirt events (int)
into human readable strings.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
2018-05-22 14:22:46 +02:00
Jiri Denemark
324197bfaa event-test.py: Remove extra ( in --help output
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
2018-02-06 11:58:42 +01:00
Cédric Bosdonnat
bedc937cce Don't hardcode interpreter path
This is particularly useful on operating systems that don't ship
Python as part of the base system (eg. FreeBSD) while still working
just as well as it did before on Linux.

Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
2017-11-30 08:48:36 +01:00