On 02/05/2013 04:40 AM, Martin Kletzander wrote: > My python libvirt module doesn't have VIR_ERR_* inside itself and > according to some places in the code, this was already taken care of > by using the 'getattr' with safe default. However, there were still > some places where this wasn't handled properly, so I tried to fixed it > by adding getattr for these attributes wherever 'git grep VIR_ERR' > found it. While on that, I took the liberty of cleaning up some > related lines that were too long. Like Dan said, we really only use getattr in the cases where an error code/flag value might be too new for some libvirt versions we still try and work with. So I won't apply this patch. However maybe after the gtk3 port we can bump to a much more modern libvirt requirement on the virt-manager host. - Cole > --- > src/virtManager/cli.py | 4 ++-- > src/virtManager/connection.py | 20 +++++++++++++------- > src/virtManager/domain.py | 7 ++++--- > src/virtManager/migrate.py | 6 ++++-- > 4 files changed, 23 insertions(+), 14 deletions(-) > > diff --git a/src/virtManager/cli.py b/src/virtManager/cli.py > index 3be6945..8d668fa 100644 > --- a/src/virtManager/cli.py > +++ b/src/virtManager/cli.py > @@ -1,5 +1,5 @@ > # > -# Copyright (C) 2011 Red Hat, Inc. > +# Copyright (C) 2011, 2013 Red Hat, Inc. > # Copyright (C) 2011 Cole Robinson <crobinso@xxxxxxxxxx> > # > # This program is free software; you can redistribute it and/or modify > @@ -72,7 +72,7 @@ def setup_logging(appname, debug_stdout): > > # Register libvirt handler > def libvirt_callback(ctx_ignore, err): > - if err[3] != libvirt.VIR_ERR_ERROR: > + if err[3] != getattr(libvirt, "VIR_ERR_ERROR", None): > # Don't log libvirt errors: global error handler will do that > logging.warn("Non-error from libvirt: '%s'", err[2]) > libvirt.registerErrorHandler(f=libvirt_callback, ctx=None) > diff --git a/src/virtManager/connection.py b/src/virtManager/connection.py > index fe96df2..e839611 100644 > --- a/src/virtManager/connection.py > +++ b/src/virtManager/connection.py > @@ -1,5 +1,5 @@ > # > -# Copyright (C) 2006 Red Hat, Inc. > +# Copyright (C) 2006, 2013 Red Hat, Inc. > # Copyright (C) 2006 Daniel P. Berrange <berrange@xxxxxxxxxx> > # > # This program is free software; you can redistribute it and/or modify > @@ -1040,13 +1040,16 @@ class vmmConnection(vmmGObject): > self.state = self.STATE_DISCONNECTED > > if (libexc and > - (libexc.get_error_code() == > - getattr(libvirt, "VIR_ERR_AUTH_CANCELLED", None))): > + libexc.get_error_code() == getattr(libvirt, > + "VIR_ERR_AUTH_CANCELLED", > + None)): > logging.debug("User cancelled auth, not raising any error.") > break > > if (libexc and > - libexc.get_error_code() == libvirt.VIR_ERR_AUTH_FAILED and > + libexc.get_error_code() == getattr(libvirt, > + "VIR_ERR_AUTH_FAILED", > + None) and > "not authorized" in libexc.get_error_message().lower()): > logging.debug("Looks like we might have failed policykit " > "auth. Checking to see if we have a valid " > @@ -1056,7 +1059,9 @@ class vmmConnection(vmmGObject): > warnconsole = True > > if (libexc and > - libexc.get_error_code() == libvirt.VIR_ERR_AUTH_FAILED and > + libexc.get_error_code() == getattr(libvirt, > + "VIR_ERR_AUTH_FAILED", > + None) and > "GSSAPI Error" in libexc.get_error_message() and > "No credentials cache found" in libexc.get_error_message()): > if connectauth.acquire_tgt(): > @@ -1418,8 +1423,9 @@ class vmmConnection(vmmGObject): > except Exception, e: > logging.exception("Tick for VM '%s' failed", vm.get_name()) > if (isinstance(e, libvirt.libvirtError) and > - (getattr(e, "get_error_code")() == > - libvirt.VIR_ERR_SYSTEM_ERROR)): > + e.get_error_code() == getattr(libvirt, > + "VIR_ERR_SYSTEM_ERROR", > + None)): > # Try a simple getInfo call to see if conn was dropped > self.vmm.getInfo() > logging.debug("vm tick raised system error but " > diff --git a/src/virtManager/domain.py b/src/virtManager/domain.py > index 53aa560..6a11f0b 100644 > --- a/src/virtManager/domain.py > +++ b/src/virtManager/domain.py > @@ -1,5 +1,5 @@ > # > -# Copyright (C) 2006 Red Hat, Inc. > +# Copyright (C) 2006, 2013 Red Hat, Inc. > # Copyright (C) 2006 Daniel P. Berrange <berrange@xxxxxxxxxx> > # > # This program is free software; you can redistribute it and/or modify > @@ -1466,8 +1466,9 @@ class vmmDomain(vmmLibvirtObject): > try: > info = self._backend.info() > except libvirt.libvirtError, e: > - if (hasattr(libvirt, "VIR_ERR_NO_DOMAIN") and > - e.get_error_code() == getattr(libvirt, "VIR_ERR_NO_DOMAIN")): > + if e.get_error_code() == getattr(libvirt, > + "VIR_ERR_NO_DOMAIN", > + None): > # Possibly a transient domain that was removed on shutdown > return > raise > diff --git a/src/virtManager/migrate.py b/src/virtManager/migrate.py > index 1a488e5..3ec3a76 100644 > --- a/src/virtManager/migrate.py > +++ b/src/virtManager/migrate.py > @@ -1,5 +1,5 @@ > # > -# Copyright (C) 2009 Red Hat, Inc. > +# Copyright (C) 2009, 2013 Red Hat, Inc. > # Copyright (C) 2009 Cole Robinson <crobinso@xxxxxxxxxx> > # > # This program is free software; you can redistribute it and/or modify > @@ -506,7 +506,9 @@ class vmmMigrateDialog(vmmGObjectUI): > return False > except libvirt.libvirtError, e: > if (isinstance(e, libvirt.libvirtError) and > - e.get_error_code() == libvirt.VIR_ERR_OPERATION_INVALID): > + e.get_error_code() == getattr(libvirt, > + "VIR_ERR_OPERATION_INVALID", > + None)): > # migration has not been started, wait 100 milliseconds > return True > > -- > 1.8.1.2 > > _______________________________________________ > virt-tools-list mailing list > virt-tools-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/virt-tools-list > _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list