diff options
Diffstat (limited to 'cloudinit/DataSourceNoCloud.py')
| -rw-r--r-- | cloudinit/DataSourceNoCloud.py | 32 | 
1 files changed, 16 insertions, 16 deletions
| diff --git a/cloudinit/DataSourceNoCloud.py b/cloudinit/DataSourceNoCloud.py index 573f3f43..b20a35e2 100644 --- a/cloudinit/DataSourceNoCloud.py +++ b/cloudinit/DataSourceNoCloud.py @@ -48,30 +48,30 @@ class DataSourceNoCloud(DataSource.DataSource):              "instance-id" : "nocloud"          } +        found = False          md = { }          ud = ""          try:              # parse the kernel command line, getting data passed in -            md = parse_cmdline_data(self.cmdline_id) +            if parse_cmdline_data(self.cmdline_id, md): +                found = True          except:              util.logexc(cloudinit.log,util.WARN)              return False          # check to see if the seeddir has data. -        try: -            (seeddir_md,ud) = util.read_seeded(self.seeddir + "/") -            self.metadata = md -            md = util.mergedict(md,seeddir_md) +        seedret={ } +        if util.read_optional_seed(seedret,base=self.seeddir + "/"): +            md = util.mergedict(md,seedret['meta-data']) +            ud = seedret['user-data'] +            found = True              cloudinit.log.debug("using seeded cache data in %s" % self.seeddir) -        except OSError, e: -            if e.errno != errno.ENOENT: -                util.logexc(cloudinit.log,util.WARN) -                raise +            return True          # there was no indication on kernel cmdline or data          # in the seeddir suggesting this handler should be used. -        if md is None: +        if not found:              return False          # the special argument "seedfrom" indicates we should @@ -102,10 +102,11 @@ class DataSourceNoCloud(DataSource.DataSource):          self.userdata_raw = ud          return True -# returns a dictionary of key/val or None if cmdline did not have data +# returns true or false indicating if cmdline indicated +# that this module should be used  # example cmdline:  #  root=LABEL=uec-rootfs ro ds=nocloud -def parse_cmdline_data(ds_id,cmdline=None): +def parse_cmdline_data(ds_id,fill,cmdline=None):      if cmdline is None:          if 'DEBUG_PROC_CMDLINE' in os.environ:              cmdline = os.environ["DEBUG_PROC_CMDLINE"] @@ -116,7 +117,7 @@ def parse_cmdline_data(ds_id,cmdline=None):          cmdline = " %s " % cmdline.lower()          if not ( " %s " % ds_id in cmdline or " %s;" % ds_id in cmdline ): -            return None +            return False      argline=""      # cmdline can contain: @@ -134,7 +135,6 @@ def parse_cmdline_data(ds_id,cmdline=None):      # short2long mapping to save cmdline typing      s2l = {  "h" : "local-hostname", "i" : "instance-id", "s" : "seedfrom" } -    cfg = { }      for item in kvpairs:          try:              (k,v) = item.split("=",1) @@ -142,9 +142,9 @@ def parse_cmdline_data(ds_id,cmdline=None):              k=item              v=None          if k in s2l: k=s2l[k] -        cfg[k]=v +        fill[k]=v -    return(cfg) +    return(True)  class DataSourceNoCloudNet(DataSourceNoCloud):      cmdline_id = "ds=nocloud-net" | 
