diff options
Diffstat (limited to 'cloudinit/DataSourceNoCloud.py')
-rw-r--r-- | cloudinit/DataSourceNoCloud.py | 78 |
1 files changed, 43 insertions, 35 deletions
diff --git a/cloudinit/DataSourceNoCloud.py b/cloudinit/DataSourceNoCloud.py index 2f4bd604..0d5f15b3 100644 --- a/cloudinit/DataSourceNoCloud.py +++ b/cloudinit/DataSourceNoCloud.py @@ -16,32 +16,34 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -import DataSource +import cloudinit.DataSource as DataSource -from cloudinit import seeddir, log # pylint: disable=W0611 +from cloudinit import seeddir as base_seeddir +from cloudinit import log import cloudinit.util as util + class DataSourceNoCloud(DataSource.DataSource): metadata = None userdata = None userdata_raw = None - supported_seed_starts = ( "/" , "file://" ) + supported_seed_starts = ("/", "file://") seed = None cmdline_id = "ds=nocloud" - seeddir = seeddir + '/nocloud' + seeddir = base_seeddir + '/nocloud' def __str__(self): - mstr="DataSourceNoCloud" + mstr = "DataSourceNoCloud" mstr = mstr + " [seed=%s]" % self.seed return(mstr) def get_data(self): - defaults = { - "instance-id" : "nocloud" + defaults = { + "instance-id": "nocloud" } - found = [ ] - md = { } + found = [] + md = {} ud = "" try: @@ -53,9 +55,9 @@ class DataSourceNoCloud(DataSource.DataSource): return False # check to see if the seeddir has data. - seedret={ } - if util.read_optional_seed(seedret,base=self.seeddir + "/"): - md = util.mergedict(md,seedret['meta-data']) + seedret = {} + if util.read_optional_seed(seedret, base=self.seeddir + "/"): + md = util.mergedict(md, seedret['meta-data']) ud = seedret['user-data'] found.append(self.seeddir) log.debug("using seeded cache data in %s" % self.seeddir) @@ -72,7 +74,7 @@ class DataSourceNoCloud(DataSource.DataSource): seedfound = False for proto in self.supported_seed_starts: if seedfrom.startswith(proto): - seedfound=proto + seedfound = proto break if not seedfound: log.debug("seed from %s not supported by %s" % @@ -81,69 +83,75 @@ class DataSourceNoCloud(DataSource.DataSource): # this could throw errors, but the user told us to do it # so if errors are raised, let them raise - (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) # values in the command line override those from the seed - 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 return True + # 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,fill,cmdline=None): +def parse_cmdline_data(ds_id, fill, cmdline=None): if cmdline is None: cmdline = util.get_cmdline() cmdline = " %s " % cmdline - if not ( " %s " % ds_id in cmdline or " %s;" % ds_id in cmdline ): + if not (" %s " % ds_id in cmdline or " %s;" % ds_id in cmdline): return False - argline="" + argline = "" # cmdline can contain: # ds=nocloud[;key=val;key=val] for tok in cmdline.split(): - if tok.startswith(ds_id): argline=tok.split("=",1) - + if tok.startswith(ds_id): + argline = tok.split("=", 1) + # argline array is now 'nocloud' followed optionally by # a ';' and then key=value pairs also terminated with ';' - tmp=argline[1].split(";") + tmp = argline[1].split(";") if len(tmp) > 1: - kvpairs=tmp[1:] + kvpairs = tmp[1:] else: - kvpairs=() + kvpairs = () # short2long mapping to save cmdline typing - s2l = { "h" : "local-hostname", "i" : "instance-id", "s" : "seedfrom" } + s2l = {"h": "local-hostname", "i": "instance-id", "s": "seedfrom"} for item in kvpairs: try: - (k,v) = item.split("=",1) + (k, v) = item.split("=", 1) except: - k=item - v=None - if k in s2l: k=s2l[k] - fill[k]=v + k = item + v = None + if k in s2l: + k = s2l[k] + fill[k] = v return(True) + class DataSourceNoCloudNet(DataSourceNoCloud): cmdline_id = "ds=nocloud-net" - supported_seed_starts = ( "http://", "https://", "ftp://" ) - seeddir = seeddir + '/nocloud-net' + supported_seed_starts = ("http://", "https://", "ftp://") + seeddir = base_seeddir + '/nocloud-net' + datasources = ( - ( DataSourceNoCloud, ( DataSource.DEP_FILESYSTEM, ) ), - ( DataSourceNoCloudNet, - ( DataSource.DEP_FILESYSTEM, DataSource.DEP_NETWORK ) ), + (DataSourceNoCloud, (DataSource.DEP_FILESYSTEM, )), + (DataSourceNoCloudNet, + (DataSource.DEP_FILESYSTEM, DataSource.DEP_NETWORK)), ) + # return a list of data sources that match this set of dependencies def get_datasource_list(depends): return(DataSource.list_from_depends(depends, datasources)) |