13975 Transport errors should be logged rather than displayed in a dialog
authorJohn Rice <john.rice@sun.com>
Thu, 21 Jan 2010 13:39:10 +0000
changeset 1675 8caa149137be
parent 1674 faf484754465
child 1676 a915a28af957
13975 Transport errors should be logged rather than displayed in a dialog
src/gui/modules/installupdate.py
src/gui/modules/misc.py
src/gui/modules/repository.py
src/packagemanager.py
src/updatemanager.py
--- a/src/gui/modules/installupdate.py	Wed Jan 20 16:09:18 2010 -0800
+++ b/src/gui/modules/installupdate.py	Thu Jan 21 13:39:10 2010 +0000
@@ -56,6 +56,9 @@
 import pkg.gui.uarenamebe as uarenamebe
 import pkg.gui.misc as gui_misc
 import pkg.gui.enumerations as enumerations
+from pkg.client import global_settings
+
+logger = global_settings.logger
 
 class InstallUpdate(progress.GuiProgressTracker):
         def __init__(self, list_of_packages, parent, image_directory,
@@ -1113,10 +1116,14 @@
                                         to_install[stem][1] = info_s.summary
                                 elif stem in to_remove:
                                         to_remove[stem][1] = info_s.summary
-                except (api_errors.TransportError):
-                        pass
-                except (api_errors.InvalidDepotResponseException):
-                        pass
+                except api_errors.TransportError, tpex:
+                        err = str(tpex)
+                        logger.error(err)
+                        gui_misc.notify_log_error(self.parent)
+                except api_errors.InvalidDepotResponseException, idex:
+                        err = str(idex)
+                        logger.error(err)
+                        gui_misc.notify_log_error(self.parent)
 
         @staticmethod
         def get_datetime(date_time):
--- a/src/gui/modules/misc.py	Wed Jan 20 16:09:18 2010 -0800
+++ b/src/gui/modules/misc.py	Thu Jan 21 13:39:10 2010 +0000
@@ -51,6 +51,18 @@
 from pkg.gui.misc_non_gui import shutdown_logging as sd_logging
 from pkg.gui.misc_non_gui import get_version as g_version
 
+from pkg.gui.misc_non_gui import get_log_dir as ge_log_dir
+from pkg.gui.misc_non_gui import get_log_error_ext as ge_log_error_ext
+from pkg.gui.misc_non_gui import get_log_info_ext as ge_log_info_ext
+
+from pkg.client import global_settings
+
+PKG_CLIENT_NAME_PM = "packagemanager"
+PKG_CLIENT_NAME_WI = "packagemanager-webinstall"
+PKG_CLIENT_NAME_UM = "updatemanager"
+
+logger = global_settings.logger
+
 def get_version():
         return g_version()        
                 
@@ -85,16 +97,6 @@
                 pass
         return publisher_str
 
-from pkg.gui.misc_non_gui import get_log_dir as ge_log_dir
-from pkg.gui.misc_non_gui import get_log_error_ext as ge_log_error_ext
-from pkg.gui.misc_non_gui import get_log_info_ext as ge_log_info_ext
-
-from pkg.client import global_settings
-
-PKG_CLIENT_NAME_PM = "packagemanager"
-PKG_CLIENT_NAME_WI = "packagemanager-webinstall"
-PKG_CLIENT_NAME_UM = "updatemanager"
-
 def get_log_dir():
         return ge_log_dir()
 
@@ -397,15 +399,21 @@
             font_size,
             gtk.gdk.INTERP_BILINEAR)
 
-def get_pkg_info(api_o, pkg_stem, local):
+def get_pkg_info(app, api_o, pkg_stem, local):
         info = None
         try:
                 info = api_o.info([pkg_stem], local,
                     api.PackageInfo.ALL_OPTIONS -
                     frozenset([api.PackageInfo.LICENSES]))
-        except (api_errors.TransportError):
+        except api_errors.TransportError, tpex:
+                err = str(tpex)
+                logger.error(err)
+                notify_log_error(app)
                 return info
-        except (api_errors.InvalidDepotResponseException):
+        except api_errors.InvalidDepotResponseException, idex:
+                err = str(idex)
+                logger.error(err)
+                notify_log_error(app)
                 return info
  
         pkgs_info = None
@@ -440,7 +448,6 @@
                 msg += _(
                     "Only %(suc)s out of %(tot)s catalogs successfully updated.\n") % \
                     {"suc": cre.succeeded, "tot": cre.total}
-        msg += "\n"
 
         for pub, err in cre.failed:
                 if isinstance(err, urllib2.HTTPError):
--- a/src/gui/modules/repository.py	Wed Jan 20 16:09:18 2010 -0800
+++ b/src/gui/modules/repository.py	Thu Jan 21 13:39:10 2010 +0000
@@ -48,6 +48,9 @@
 import pkg.gui.enumerations as enumerations
 import pkg.gui.misc as gui_misc
 import pkg.gui.progress as progress
+from pkg.client import global_settings
+
+logger = global_settings.logger
 
 ERROR_FORMAT = "<span color = \"red\">%s</span>"
 
@@ -1523,8 +1526,7 @@
                         desc_itr = details_buffer.get_end_iter()
                         details_buffer.insert(desc_itr, "%s\n" % description)
 
-        @staticmethod
-        def __show_errors(errors, msg_type=gtk.MESSAGE_ERROR, title = None):
+        def __show_errors(self, errors, msg_type=gtk.MESSAGE_ERROR, title = None):
                 error_msg = ""
                 if title != None:
                         msg_title = title
@@ -1532,12 +1534,14 @@
                         msg_title = _("Publisher error")
                 for err in errors:
                         if isinstance(err[1], api_errors.CatalogRefreshException):
-                                error_msg += gui_misc.get_catalogrefresh_exception_msg(
-                                    err[1])
+                                crerr = gui_misc.get_catalogrefresh_exception_msg(err[1])
+                                logger.error(crerr)
+                                gui_misc.notify_log_error(self.parent)
                         else:
                                 error_msg += str(err[1])
-                        error_msg += "\n\n"
-                gui_misc.error_occurred(None, error_msg, msg_title, msg_type)
+                                error_msg += "\n\n"
+                if error_msg != "":
+                        gui_misc.error_occurred(None, error_msg, msg_title, msg_type)
 
         @staticmethod
         def __keybrowse(w_parent, key_entry, cert_entry):
--- a/src/packagemanager.py	Wed Jan 20 16:09:18 2010 -0800
+++ b/src/packagemanager.py	Thu Jan 21 13:39:10 2010 +0000
@@ -2580,13 +2580,15 @@
                                           api.PackageInfo.STATE, 
                                           api.PackageInfo.SUMMARY]))
                                 results = res.get(0)
-                        except api_errors.TransportError, ex:
-                                err = str(ex)
-                                gobject.idle_add(self.error_occurred, err)
-                        except api_errors.InvalidDepotResponseException, ex:
-                                err = str(ex)
-                                gobject.idle_add(self.error_occurred, err)
-                        except Exception:
+                        except api_errors.TransportError, tpex:
+                                err = str(tpex)
+                                logger.error(err)
+                                gui_misc.notify_log_error(self)
+                        except api_errors.InvalidDepotResponseException, idex:
+                                err = str(idex)
+                                logger.error(err)
+                                gui_misc.notify_log_error(self)
+                        except Exception, ex:
                                 err = str(ex)
                                 gobject.idle_add(self.error_occurred, err)
                 finally:
@@ -3405,19 +3407,24 @@
                 else:
                         self.__do_refresh(pubs=[pub])
 
-        def __do_refresh(self, pubs=None, immediate=False, ignore_transport_ex=False):
+        def __do_refresh(self, pubs=None, immediate=False):
                 success = False
                 try:
                         self.api_o.reset()
                         self.api_o.refresh(pubs=pubs, immediate=immediate)
                         success = True
                 except api_errors.CatalogRefreshException, cre:
-                        if ignore_transport_ex == False:
-                                self.__catalog_refresh_message(cre)
-                except api_errors.InvalidDepotResponseException, idrex:
-                        err = str(idrex)
-                        gobject.idle_add(self.error_occurred, err,
-                            None, gtk.MESSAGE_INFO)
+                        crerr = gui_misc.get_catalogrefresh_exception_msg(cre)
+                        logger.error(crerr)
+                        gui_misc.notify_log_error(self)
+                except api_errors.TransportError, tpex:
+                        err = str(tpex)
+                        logger.error(err)
+                        gui_misc.notify_log_error(self)
+                except api_errors.InvalidDepotResponseException, idex:
+                        err = str(idex)
+                        logger.error(err)
+                        gui_misc.notify_log_error(self)
                 except api_errors.ApiException, ex:
                         err = str(ex)
                         gobject.idle_add(self.error_occurred, err,
@@ -3562,8 +3569,8 @@
 
         def __get_info(self, pkg_stem, name):
                 self.api_o.reset()
-                local_info = gui_misc.get_pkg_info(self.api_o, pkg_stem, True)
-                remote_info = gui_misc.get_pkg_info(self.api_o, pkg_stem, False)
+                local_info = gui_misc.get_pkg_info(self, self.api_o, pkg_stem, True)
+                remote_info = gui_misc.get_pkg_info(self, self.api_o, pkg_stem, False)
                 if self.exiting:
                         return
                 plan_pkg = None
@@ -4440,10 +4447,14 @@
                 try:
                         info = self.api_o.info([selected_pkgstem],
                             True, frozenset([api.PackageInfo.LICENSES]))
-                except (api_errors.TransportError):
-                        pass
-                except (api_errors.InvalidDepotResponseException):
-                        pass
+                except api_errors.TransportError, tpex:
+                        err = str(tpex)
+                        logger.error(err)
+                        gui_misc.notify_log_error(self)
+                except api_errors.InvalidDepotResponseException, idex:
+                        err = str(idex)
+                        logger.error(err)
+                        gui_misc.notify_log_error(self)
                 if self.showing_empty_details or (license_id != 
                     self.last_show_licenses_id):
                         return
@@ -4452,10 +4463,14 @@
                         # Get license from remote
                                 info = self.api_o.info([selected_pkgstem],
                                     False, frozenset([api.PackageInfo.LICENSES]))
-                        except (api_errors.TransportError):
-                                pass
-                        except (api_errors.InvalidDepotResponseException):
-                                pass
+                        except api_errors.TransportError, tpex:
+                                err = str(tpex)
+                                logger.error(err)
+                                gui_misc.notify_log_error(self)
+                        except api_errors.InvalidDepotResponseException, idex:
+                                err = str(idex)
+                                logger.error(err)
+                                gui_misc.notify_log_error(self)
                 if self.showing_empty_details or (license_id != 
                     self.last_show_licenses_id):
                         return
@@ -4507,13 +4522,13 @@
                     self.last_show_info_id) and (pkg_status ==
                     api.PackageInfo.INSTALLED or pkg_status ==
                     api.PackageInfo.UPGRADABLE):
-                        local_info = gui_misc.get_pkg_info(self.api_o, pkg_stem,
+                        local_info = gui_misc.get_pkg_info(self, self.api_o, pkg_stem,
                             True)
                 if not self.showing_empty_details and (info_id ==
                     self.last_show_info_id) and (pkg_status ==
                     api.PackageInfo.KNOWN or pkg_status ==
                     api.PackageInfo.UPGRADABLE):
-                        remote_info = gui_misc.get_pkg_info(self.api_o, pkg_stem,
+                        remote_info = gui_misc.get_pkg_info(self, self.api_o, pkg_stem,
                             False)
                 if not self.showing_empty_details and (info_id ==
                     self.last_show_info_id):
@@ -4539,10 +4554,14 @@
                                             True,
                                             frozenset([api.PackageInfo.STATE,
                                             api.PackageInfo.IDENTITY]))
-                                except (api_errors.TransportError):
-                                        pass
-                                except (api_errors.InvalidDepotResponseException):
-                                        pass
+                                except api_errors.TransportError, tpex:
+                                        err = str(tpex)
+                                        logger.error(err)
+                                        gui_misc.notify_log_error(self)
+                                except api_errors.InvalidDepotResponseException, idex:
+                                        err = str(idex)
+                                        logger.error(err)
+                                        gui_misc.notify_log_error(self)
                         gobject.idle_add(self.__update_package_info, pkg,
                             local_info, remote_info, dep_info, installed_dep_info,
                             info_id)
@@ -5123,10 +5142,14 @@
                                 else:
                                         pkg_stem_states[pkg_stem] = \
                                                 api.PackageInfo.KNOWN
-                except (api_errors.TransportError):
-                        pass
-                except (api_errors.InvalidDepotResponseException):
-                        pass
+                except api_errors.TransportError, tpex:
+                        err = str(tpex)
+                        logger.error(err)
+                        gui_misc.notify_log_error(self)
+                except api_errors.InvalidDepotResponseException, idex:
+                        err = str(idex)
+                        logger.error(err)
+                        gui_misc.notify_log_error(self)
 
                 #Create a new result list updated with current installation status
                 tmp_app_list = self.__get_new_application_liststore()
@@ -5552,7 +5575,7 @@
                 self.after_install_remove = True
                 visible_publisher = self.__get_selected_publisher()
                 default_publisher = self.default_publisher
-                self.__do_refresh(ignore_transport_ex=True)
+                self.__do_refresh()
                 visible_list = update_list.get(visible_publisher)
                 if self.is_all_publishers or self.is_all_publishers_installed \
                     or self.in_recent_search:
@@ -5612,18 +5635,6 @@
                 self.__enable_disable_install_remove()
                 self.update_statusbar()
 
-        def __catalog_refresh_message(self, cre):
-                total = cre.total
-                succeeded = cre.succeeded
-                ermsg = _("Network problem.\n\n")
-                ermsg += _("Details:\n")
-                ermsg += _("%s/%s catalogs successfully updated:\n") % (
-                    succeeded, total)
-                for pub, err in cre.failed:
-                        ermsg += "%s: %s\n" % (pub["origin"], str(err))
-                gobject.idle_add(self.error_occurred, ermsg,
-                    None, gtk.MESSAGE_INFO)
-
         def __reset_home_dir(self):
                 # We reset the HOME directory in case the user called us
                 # with gksu and had NFS mounted home directory in which
--- a/src/updatemanager.py	Wed Jan 20 16:09:18 2010 -0800
+++ b/src/updatemanager.py	Thu Jan 21 13:39:10 2010 +0000
@@ -501,10 +501,10 @@
                 local_info = None
                 remote_info = None
                 if info_id == self.last_show_info_id:
-                        local_info = gui_misc.get_pkg_info(self.__get_api_obj(),
+                        local_info = gui_misc.get_pkg_info(self, self.__get_api_obj(),
                             stem, True) 
                 if info_id == self.last_show_info_id:
-                        remote_info = gui_misc.get_pkg_info(self.__get_api_obj(),
+                        remote_info = gui_misc.get_pkg_info(self, self.__get_api_obj(),
                             stem, False) 
                 if info_id == self.last_show_info_id:
                         gobject.idle_add(self.__update_package_info, stem,