diff options
| author | Sankar Tanguturi <stanguturi@stanguturi-rhel> | 2016-03-11 11:29:15 -0800 | 
|---|---|---|
| committer | Sankar Tanguturi <stanguturi@stanguturi-rhel> | 2016-03-11 11:29:15 -0800 | 
| commit | a3fd7441f8ea4d25e96b9bc0eca7cbb6164a4691 (patch) | |
| tree | 74a6ebbe7c91c30467577eb231fab8c5f188b93c /cloudinit/util.py | |
| parent | a6e0922a4d34ede6df000dd8fc4bb3531218d69f (diff) | |
| parent | 41470d29f5888baf7ec78e170cc0d6d981dcf63e (diff) | |
| download | vyos-cloud-init-a3fd7441f8ea4d25e96b9bc0eca7cbb6164a4691.tar.gz vyos-cloud-init-a3fd7441f8ea4d25e96b9bc0eca7cbb6164a4691.zip | |
- Executed 'bzr merge' and resolved all the conflicts.
- Now my branch is identical to trunk.dist
Diffstat (limited to 'cloudinit/util.py')
| -rw-r--r-- | cloudinit/util.py | 35 | 
1 files changed, 22 insertions, 13 deletions
| diff --git a/cloudinit/util.py b/cloudinit/util.py index 83c2c0d2..01dc7751 100644 --- a/cloudinit/util.py +++ b/cloudinit/util.py @@ -76,7 +76,9 @@ FALSE_STRINGS = ('off', '0', 'no', 'false')  # Helper utils to see if running in a container -CONTAINER_TESTS = ('running-in-container', 'lxc-is-container') +CONTAINER_TESTS = (['systemd-detect-virt', '--quiet', '--container'], +                   ['running-in-container'], +                   ['lxc-is-container'])  def decode_binary(blob, encoding='utf-8'): @@ -610,7 +612,7 @@ def redirect_output(outfmt, errfmt, o_out=None, o_err=None):  def make_url(scheme, host, port=None, -                path='', params='', query='', fragment=''): +             path='', params='', query='', fragment=''):      pieces = []      pieces.append(scheme or '') @@ -802,8 +804,8 @@ def load_yaml(blob, default=None, allowed=(dict,)):      blob = decode_binary(blob)      try:          LOG.debug("Attempting to load yaml from string " -                 "of length %s with allowed root types %s", -                 len(blob), allowed) +                  "of length %s with allowed root types %s", +                  len(blob), allowed)          converted = safeyaml.load(blob)          if not isinstance(converted, allowed):              # Yes this will just be caught, but thats ok for now... @@ -876,7 +878,7 @@ def read_conf_with_confd(cfgfile):              if not isinstance(confd, six.string_types):                  raise TypeError(("Config file %s contains 'conf_d' "                                   "with non-string type %s") % -                                 (cfgfile, type_utils.obj_name(confd))) +                                (cfgfile, type_utils.obj_name(confd)))              else:                  confd = str(confd).strip()      elif os.path.isdir("%s.d" % cfgfile): @@ -1039,7 +1041,8 @@ def is_resolvable(name):          for iname in badnames:              try:                  result = socket.getaddrinfo(iname, None, 0, 0, -                    socket.SOCK_STREAM, socket.AI_CANONNAME) +                                            socket.SOCK_STREAM, +                                            socket.AI_CANONNAME)                  badresults[iname] = []                  for (_fam, _stype, _proto, cname, sockaddr) in result:                      badresults[iname].append("%s: %s" % (cname, sockaddr[0])) @@ -1107,7 +1110,7 @@ def close_stdin():  def find_devs_with(criteria=None, oformat='device', -                    tag=None, no_cache=False, path=None): +                   tag=None, no_cache=False, path=None):      """      find devices matching given criteria (via blkid)      criteria can be *one* of: @@ -1626,7 +1629,7 @@ def write_file(filename, content, mode=0o644, omode="wb"):          content = decode_binary(content)          write_type = 'characters'      LOG.debug("Writing to %s - %s: [%s] %s %s", -               filename, omode, mode, len(content), write_type) +              filename, omode, mode, len(content), write_type)      with SeLinuxGuard(path=filename):          with open(filename, omode) as fh:              fh.write(content) @@ -1749,7 +1752,7 @@ def is_container():          try:              # try to run a helper program. if it returns true/zero              # then we're inside a container. otherwise, no -            subp([helper]) +            subp(helper)              return True          except (IOError, OSError):              pass @@ -2137,15 +2140,21 @@ def _read_dmi_syspath(key):              LOG.debug("did not find %s", dmi_key_path)              return None -        key_data = load_file(dmi_key_path) +        key_data = load_file(dmi_key_path, decode=False)          if not key_data:              LOG.debug("%s did not return any data", dmi_key_path)              return None -        LOG.debug("dmi data %s returned %s", dmi_key_path, key_data) -        return key_data.strip() +        # uninitialized dmi values show as all \xff and /sys appends a '\n'. +        # in that event, return a string of '.' in the same length. +        if key_data == b'\xff' * (len(key_data) - 1) + b'\n': +            key_data = b'.' * (len(key_data) - 1) + b'\n' -    except Exception as e: +        str_data = key_data.decode('utf8').strip() +        LOG.debug("dmi data %s returned %s", dmi_key_path, str_data) +        return str_data + +    except Exception:          logexc(LOG, "failed read of %s", dmi_key_path)          return None | 
