Catch exception if the event or details is outside the known type to
prevent a traceback like the following:
raceback (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(a)univention.de>
---
examples/event-test.py | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/examples/event-test.py b/examples/event-test.py
index 04310e1..4632110 100755
--- a/examples/event-test.py
+++ b/examples/event-test.py
@@ -467,7 +467,10 @@ def domEventToString(event):
"PMSuspended",
"Crashed",
)
- return domEventStrings[event]
+ try:
+ return domEventStrings[event]
+ except IndexError:
+ return 'Unknown domain event %d' % (event,)
def domDetailToString(event, detail):
domEventStrings = (
@@ -481,7 +484,10 @@ def domDetailToString(event, detail):
( "Memory", "Disk" ),
( "Panicked", ),
)
- return domEventStrings[event][detail]
+ try:
+ return domEventStrings[event][detail]
+ except IndexError:
+ return 'Unknown domain event %d detail %d' % (event, detail)
def blockJobTypeToString(type):
blockJobTypes = ( "unknown", "Pull", "Copy",
"Commit", "ActiveCommit", )
--
2.11.0