- add .errors attribute to NoMoreMirrorsRepoError.
- include URLs and error messages in unicode(e).
- exception2msg: prefer unicode(e) to e.value.

Also updated/fixed:

- We may never get URLGrabError(256) without MirrorGroup.

- When MG's failure_callback signals fail=1, the LAST error
  is re-raised.  We turn this into NoMoreMirrorsRepoError, too.
  (NoMoreMirrors should actually read AllMirrorsFailed, but..)
---
 yum/Errors.py  |    9 ++++++++-
 yum/i18n.py    |    4 ++--
 yum/yumRepo.py |   11 +++--------
 3 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/yum/Errors.py b/yum/Errors.py
index c1af4ad..ca23c24 100644
--- a/yum/Errors.py
+++ b/yum/Errors.py
@@ -80,7 +80,14 @@ class DuplicateRepoError(RepoError):
     pass
 
 class NoMoreMirrorsRepoError(RepoError):
-    pass
+    def __init__(self, value=None, errors=None):
+        RepoError.__init__(self, value)
+        self.errors = errors
+    def __unicode__(self):
+        ret = self.value
+        for url, msg in self.errors or []:
+            ret += '\n%s: %s' % (url, msg)
+        return ret
     
 class ConfigError(YumBaseError):
     pass
diff --git a/yum/i18n.py b/yum/i18n.py
index 76a258d..c4f72eb 100755
--- a/yum/i18n.py
+++ b/yum/i18n.py
@@ -474,12 +474,12 @@ def exception2msg(e):
     # to_unicode(e.value); unicode(e); str(e); 
     # Call this so you don't have to care.
     try:
-        return to_unicode(e.value)
+        return unicode(e)
     except:
         pass
 
     try:
-        return unicode(e)
+        return to_unicode(e.value)
     except:
         pass
 
diff --git a/yum/yumRepo.py b/yum/yumRepo.py
index b7b4357..e60fc20 100644
--- a/yum/yumRepo.py
+++ b/yum/yumRepo.py
@@ -891,10 +891,7 @@ Insufficient space in download directory %s
                 if self.mirrorurls:
                     errstr +="\n  You could try running: yum clean 
expire-cache"
                     errstr +="\n  To get a new set of mirrors."
-                if e.errno == 256:
-                    raise Errors.NoMoreMirrorsRepoError, errstr
-                else:
-                    raise Errors.RepoError, errstr
+                raise Errors.RepoError, errstr
 
 
         else:
@@ -912,10 +909,8 @@ Insufficient space in download directory %s
                                            )
             except URLGrabError, e:
                 errstr = "failure: %s from %s: %s" % (relative, self.id, e)
-                if e.errno == 256:
-                    raise Errors.NoMoreMirrorsRepoError, errstr
-                else:
-                    raise Errors.RepoError, errstr
+                errors = getattr(e, 'errors', None)
+                raise Errors.NoMoreMirrorsRepoError(errstr, errors)
 
         return result
     __get = _getFile
-- 
1.7.4.4

_______________________________________________
Yum-devel mailing list
[email protected]
http://lists.baseurl.org/mailman/listinfo/yum-devel

Reply via email to