diff options
author | Scott Moser <smoser@ubuntu.com> | 2016-06-20 22:38:26 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2016-06-20 22:38:26 -0400 |
commit | b0ea6e5a2c1c26b8faf1dc8303feebb00344e537 (patch) | |
tree | 1ec50e5f8c07ab1c7b4e206a5d0c7dca0858b640 /cloudinit/util.py | |
parent | fe6919dcd37c6c1ecd371e5eb20b605ab20a6420 (diff) | |
parent | 776b0cfe847f531d8d5a235f52673c3da1f06064 (diff) | |
download | vyos-cloud-init-b0ea6e5a2c1c26b8faf1dc8303feebb00344e537.tar.gz vyos-cloud-init-b0ea6e5a2c1c26b8faf1dc8303feebb00344e537.zip |
merge with trunk.
test runs to the point where it did, think I got most of the changes
incorporated.
Diffstat (limited to 'cloudinit/util.py')
-rw-r--r-- | cloudinit/util.py | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/cloudinit/util.py b/cloudinit/util.py index 8d6cbb4b..e5dd61a0 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, @@ -336,6 +338,16 @@ def rand_str(strlen=32, select_from=None): return "".join([random.choice(select_from) for _x in range(0, strlen)]) +def rand_dict_key(dictionary, postfix=None): + if not postfix: + postfix = "" + while True: + newkey = rand_str(strlen=8) + "_" + postfix + if newkey not in dictionary: + break + return newkey + + def read_conf(fname): try: return load_yaml(load_file(fname), default={}) @@ -1147,7 +1159,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 +1715,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, @@ -2190,7 +2210,7 @@ def _call_dmidecode(key, dmidecode_path): return "" return result except (IOError, OSError) as _err: - LOG.debug('failed dmidecode cmd: %s\n%s', cmd, _err.message) + LOG.debug('failed dmidecode cmd: %s\n%s', cmd, _err) return None |