diff options
Diffstat (limited to 'cloudinit/util.py')
| -rw-r--r-- | cloudinit/util.py | 16 | 
1 files changed, 13 insertions, 3 deletions
diff --git a/cloudinit/util.py b/cloudinit/util.py index 8d6cbb4b..851c1fcb 100644 --- a/cloudinit/util.py +++ b/cloudinit/util.py @@ -171,7 +171,8 @@ class ProcessExecutionError(IOError):      def __init__(self, stdout=None, stderr=None,                   exit_code=None, cmd=None, -                 description=None, reason=None): +                 description=None, reason=None, +                 errno=None):          if not cmd:              self.cmd = '-'          else: @@ -202,6 +203,7 @@ class ProcessExecutionError(IOError):          else:              self.reason = '-' +        self.errno = errno          message = self.MESSAGE_TMPL % {              'description': self.description,              'cmd': self.cmd, @@ -1147,7 +1149,14 @@ def find_devs_with(criteria=None, oformat='device',          options.append(path)      cmd = blk_id_cmd + options      # See man blkid for why 2 is added -    (out, _err) = subp(cmd, rcs=[0, 2]) +    try: +        (out, _err) = subp(cmd, rcs=[0, 2]) +    except ProcessExecutionError as e: +        if e.errno == errno.ENOENT: +            # blkid not found... +            out = "" +        else: +            raise      entries = []      for line in out.splitlines():          line = line.strip() @@ -1696,7 +1705,8 @@ def subp(args, data=None, rcs=None, env=None, capture=True, shell=False,          sp = subprocess.Popen(args, **kws)          (out, err) = sp.communicate(data)      except OSError as e: -        raise ProcessExecutionError(cmd=args, reason=e) +        raise ProcessExecutionError(cmd=args, reason=e, +                                    errno=e.errno)      rc = sp.returncode      if rc not in rcs:          raise ProcessExecutionError(stdout=out, stderr=err,  | 
