[PATCH V2] [Kimchi] Handle URLError exception when creating Template.

From: Paulo Vital <pvital@linux.vnet.ibm.com> urllib2 raised URLError when could not access a remote file due to unauthorized access, for example. This patch gives to IsoImage the ability to handle this exception and raises a relevant error message to user. This patch fixes Issue #959 Signed-off-by: Paulo Vital <pvital@linux.vnet.ibm.com> --- i18n.py | 1 + isoinfo.py | 15 +++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/i18n.py b/i18n.py index 2d8390f..b33c6ec 100644 --- a/i18n.py +++ b/i18n.py @@ -52,6 +52,7 @@ messages = { "to file access control lists for '%(user)s' user if possible, or add the " "'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x 'path_to_iso'." "Details: %(err)s" ), + "KCHISO0009E": _("Unable to access remote ISO. Details: %(err)s"), "KCHIMG0001E": _("An error occurred when probing image OS information."), "KCHIMG0003E": _("Unable to read image file %(filename)s"), diff --git a/isoinfo.py b/isoinfo.py index 4cb0209..7c000b7 100644 --- a/isoinfo.py +++ b/isoinfo.py @@ -28,7 +28,7 @@ import sys import urllib2 -from wok.exception import IsoFormatError +from wok.exception import IsoFormatError, OperationFailed from wok.plugins.kimchi.utils import check_url_path from wok.utils import wok_log @@ -419,11 +419,14 @@ lang=en#!/wiki/W51a7ffcf4dfd_4b40_9d82_446ebc23c550/page/PowerLinux\ def _get_iso_data(self, offset, size): if self.remote: - request = urllib2.Request(self.path) - range_header = "bytes=%d-%d" % (offset, offset + size - 1) - request.add_header("range", range_header) - with contextlib.closing(urllib2.urlopen(request)) as response: - data = response.read() + try: + request = urllib2.Request(self.path) + range_header = "bytes=%d-%d" % (offset, offset + size - 1) + request.add_header("range", range_header) + with contextlib.closing(urllib2.urlopen(request)) as response: + data = response.read() + except urllib2.URLError as e: + raise OperationFailed("KCHISO0009E", {'err': e}) else: with open(self.path) as fd: fd.seek(offset) -- 2.5.5
participants (2)
-
Aline Manera
-
pvital@linux.vnet.ibm.com