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@xxxxxxxxxxxxx> --- 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list