diff options
Diffstat (limited to 'cloudinit/util.py')
| -rw-r--r-- | cloudinit/util.py | 38 | 
1 files changed, 10 insertions, 28 deletions
| diff --git a/cloudinit/util.py b/cloudinit/util.py index d350ba08..b3332acd 100644 --- a/cloudinit/util.py +++ b/cloudinit/util.py @@ -74,31 +74,6 @@ FN_ALLOWED = ('_-.()' + string.digits + string.ascii_letters)  CONTAINER_TESTS = ['running-in-container', 'lxc-is-container'] -# Made to have same accessors as UrlResponse so that the -# read_file_or_url can return this or that object and the -# 'user' of those objects will not need to know the difference. -class StringResponse(object): -    def __init__(self, contents, code=200): -        self.code = code -        self.headers = {} -        self.contents = contents -        self.url = None - -    def ok(self, *args, **kwargs):  # pylint: disable=W0613 -        if self.code != 200: -            return False -        return True - -    def __str__(self): -        return self.contents - - -class FileResponse(StringResponse): -    def __init__(self, path, contents, code=200): -        StringResponse.__init__(self, contents, code=code) -        self.url = path - -  class ProcessExecutionError(IOError):      MESSAGE_TMPL = ('%(description)s\n' @@ -651,8 +626,8 @@ def read_optional_seed(fill, base="", ext="", timeout=5):          fill['user-data'] = ud          fill['meta-data'] = md          return True -    except IOError as e: -        if e.errno == errno.ENOENT: +    except url_helper.UrlError as e: +        if e.code == url_helper.NOT_FOUND:              return False          raise @@ -699,7 +674,14 @@ def read_file_or_url(url, timeout=5, retries=10,          if data:              LOG.warn("Unable to post data to file resource %s", url)          file_path = url[len("file://"):] -        return FileResponse(file_path, contents=load_file(file_path)) +        try: +            contents = load_file(file_path) +        except IOError as e: +            code = e.errno +            if e.errno == errno.ENOENT: +                code = url_helper.NOT_FOUND +            raise url_helper.UrlError(cause=e, code=code, headers=None) +        return url_helper.FileResponse(file_path, contents=contents)      else:          return url_helper.readurl(url,                                    timeout=timeout, | 
