diff options
Diffstat (limited to 'cloudinit/DataSourceOVF.py')
-rw-r--r-- | cloudinit/DataSourceOVF.py | 68 |
1 files changed, 39 insertions, 29 deletions
diff --git a/cloudinit/DataSourceOVF.py b/cloudinit/DataSourceOVF.py index 1c510688..4e960ffa 100644 --- a/cloudinit/DataSourceOVF.py +++ b/cloudinit/DataSourceOVF.py @@ -39,7 +39,7 @@ class DataSourceOVF(DataSource.DataSource): supported_seed_starts = ( "/" , "file://" ) def __str__(self): - mstr="DataSourceOVF" + mstr = "DataSourceOVF" mstr = mstr + " [seed=%s]" % self.seed return(mstr) @@ -55,7 +55,7 @@ class DataSourceOVF(DataSource.DataSource): (seedfile, contents) = get_ovf_env(seeddir) if seedfile: # found a seed dir - seed = "%s/%s" % (seeddir,seedfile) + seed = "%s/%s" % (seeddir, seedfile) (md, ud, cfg) = read_ovf_environment(contents) self.environment = contents @@ -65,7 +65,8 @@ class DataSourceOVF(DataSource.DataSource): 'vmware-guestd' : transport_vmware_guestd, } for name, transfunc in np.iteritems(): (contents, _dev, _fname) = transfunc() - if contents: break + if contents: + break if contents: (md, ud, cfg) = read_ovf_environment(contents) @@ -88,14 +89,14 @@ class DataSourceOVF(DataSource.DataSource): (seedfrom, self.__class__)) return False - (md_seed,ud) = util.read_seeded(seedfrom, timeout=None) + (md_seed, ud) = util.read_seeded(seedfrom, timeout=None) log.debug("using seeded cache data from %s" % seedfrom) - md = util.mergedict(md,md_seed) + md = util.mergedict(md, md_seed) found.append(seedfrom) - md = util.mergedict(md,defaults) + md = util.mergedict(md, defaults) self.seed = ",".join(found) self.metadata = md self.userdata_raw = ud @@ -103,7 +104,8 @@ class DataSourceOVF(DataSource.DataSource): return True def get_public_ssh_keys(self): - if not 'public-keys' in self.metadata: return([]) + if not 'public-keys' in self.metadata: + return([]) return([self.metadata['public-keys'],]) # the data sources' config_obj is a cloud-config formated @@ -126,7 +128,8 @@ def read_ovf_environment(contents): cfg_props = [ 'password', ] md_props = [ 'seedfrom', 'local-hostname', 'public-keys', 'instance-id' ] for prop, val in props.iteritems(): - if prop == 'hostname': prop = "local-hostname" + if prop == 'hostname': + prop = "local-hostname" if prop in md_props: md[prop] = val elif prop in cfg_props: @@ -144,12 +147,12 @@ def read_ovf_environment(contents): def get_ovf_env(dirname): env_names = ("ovf-env.xml", "ovf_env.xml", "OVF_ENV.XML", "OVF-ENV.XML" ) for fname in env_names: - if os.path.isfile("%s/%s" % (dirname,fname)): - fp = open("%s/%s" % (dirname,fname)) + if os.path.isfile("%s/%s" % (dirname, fname)): + fp = open("%s/%s" % (dirname, fname)) contents = fp.read() fp.close() - return(fname,contents) - return(None,False) + return(fname, contents) + return(None, False) # transport functions take no input and return # a 3 tuple of content, path, filename @@ -161,7 +164,7 @@ def transport_iso9660(require_iso=False): envname = "CLOUD_INIT_CDROM_DEV_REGEX" default_regex = "^(sr[0-9]+|hd[a-z]|xvd.*)" - devname_regex = os.environ.get(envname,default_regex) + devname_regex = os.environ.get(envname, default_regex) cdmatch = re.compile(devname_regex) # go through mounts to see if it was already mounted @@ -171,17 +174,18 @@ def transport_iso9660(require_iso=False): mounted = { } for mpline in mounts: - (dev,mp,fstype,_opts,_freq,_passno) = mpline.split() - mounted[dev]=(dev,fstype,mp,False) - mp = mp.replace("\\040"," ") - if fstype != "iso9660" and require_iso: continue + (dev, mp, fstype, _opts, _freq, _passno) = mpline.split() + mounted[dev] = (dev, fstype, mp, False) + mp = mp.replace("\\040", " ") + if fstype != "iso9660" and require_iso: + continue if cdmatch.match(dev[5:]) == None: # take off '/dev/' continue - (fname,contents) = get_ovf_env(mp) + (fname, contents) = get_ovf_env(mp) if contents is not False: - return(contents,dev,fname) + return(contents, dev, fname) tmpd = None dvnull = None @@ -201,7 +205,8 @@ def transport_iso9660(require_iso=False): fp.read(512) fp.close() except: - if fp: fp.close() + if fp: + fp.close() continue if tmpd is None: @@ -213,19 +218,20 @@ def transport_iso9660(require_iso=False): pass cmd = [ "mount", "-o", "ro", fullp, tmpd ] - if require_iso: cmd.extend(('-t','iso9660')) + if require_iso: + cmd.extend(('-t', 'iso9660')) rc = subprocess.call(cmd, stderr=dvnull, stdout=dvnull, stdin=dvnull) if rc: continue - (fname,contents) = get_ovf_env(tmpd) + (fname, contents) = get_ovf_env(tmpd) subprocess.call(["umount", tmpd]) if contents is not False: os.rmdir(tmpd) - return(contents,fullp,fname) + return(contents, fullp, fname) if tmpd: os.rmdir(tmpd) @@ -236,23 +242,27 @@ def transport_iso9660(require_iso=False): return(False, None, None) def transport_vmware_guestd(): + # pylint: disable=C0301 # http://blogs.vmware.com/vapp/2009/07/selfconfiguration-and-the-ovf-environment.html # try: # cmd = ['vmware-guestd', '--cmd', 'info-get guestinfo.ovfEnv'] - # (out,err) = subp(cmd) + # (out, err) = subp(cmd) # return(out, 'guestinfo.ovfEnv', 'vmware-guestd') # except: # # would need to error check here and see why this failed # # to know if log/error should be raised # return(False, None, None) + # pylint: enable=C0301 return(False, None, None) -def findChild(node,filter_func): +def findChild(node, filter_func): ret = [] - if not node.hasChildNodes(): return ret + if not node.hasChildNodes(): + return ret for child in node.childNodes: - if filter_func(child): ret.append(child) + if filter_func(child): + ret.append(child) return(ret) def getProperties(environString): @@ -277,8 +287,8 @@ def getProperties(environString): propElems = findChild(propSections[0], lambda n: n.localName == "Property") for elem in propElems: - key = elem.attributes.getNamedItemNS(envNsURI,"key").value - val = elem.attributes.getNamedItemNS(envNsURI,"value").value + key = elem.attributes.getNamedItemNS(envNsURI, "key").value + val = elem.attributes.getNamedItemNS(envNsURI, "value").value props[key] = val return(props) |