cloud-init-dev team mailing list archive
-
cloud-init-dev team
-
Mailing list archive
-
Message #00775
[Merge] lp:~alexandru-sirbu/cloud-init/bigstep-datasource into lp:cloud-init
Alex Sirbu has proposed merging lp:~alexandru-sirbu/cloud-init/bigstep-datasource into lp:cloud-init.
Requested reviews:
cloud init development team (cloud-init-dev)
For more details, see:
https://code.launchpad.net/~alexandru-sirbu/cloud-init/bigstep-datasource/+merge/287752
The Bigstep datasource, which looks inside the /var/lib/cloud/data/seed/bigstep/url file to get an URL which to call to obtain the cloud-init scripts, has been added.
This datasource will be used by Bigstep in provisioning its templates, by using cloudinit.
--
Your team cloud init development team is requested to review the proposed merge of lp:~alexandru-sirbu/cloud-init/bigstep-datasource into lp:cloud-init.
=== added file 'cloudinit/sources/DataSourceBigstep.py'
--- cloudinit/sources/DataSourceBigstep.py 1970-01-01 00:00:00 +0000
+++ cloudinit/sources/DataSourceBigstep.py 2016-03-02 08:58:50 +0000
@@ -0,0 +1,46 @@
+#
+# Copyright (C) 2015-2016 Bigstep Cloud Ltd.
+#
+# Author: Alexandru Sirbu <alexandru.sirbu@xxxxxxxxxxx>
+#
+
+import json
+
+from cloudinit import log as logging
+from cloudinit import sources
+from cloudinit import util
+from cloudinit import url_helper
+
+LOG = logging.getLogger(__name__)
+
+
+class DataSourceBigstep(sources.DataSource):
+ def __init__(self, sys_cfg, distro, paths):
+ sources.DataSource.__init__(self, sys_cfg, distro, paths)
+ self.metadata = {}
+ self.vendordata_raw = ""
+ self.userdata_raw = ""
+
+ def get_data(self, apply_filter=False):
+ url = get_url_from_file()
+ response = url_helper.readurl(url)
+ decoded = json.loads(response.contents)
+ self.metadata = decoded["metadata"]
+ self.vendordata_raw = decoded["vendordata_raw"]
+ self.userdata_raw = decoded["userdata_raw"]
+ return True
+
+
+def get_url_from_file():
+ content = util.load_file("/var/lib/cloud/data/seed/bigstep/url")
+ return content
+
+# Used to match classes to dependencies
+datasources = [
+ (DataSourceBigstep, (sources.DEP_FILESYSTEM, sources.DEP_NETWORK)),
+]
+
+
+# Return a list of data sources that match this set of dependencies
+def get_datasource_list(depends):
+ return sources.list_from_depends(depends, datasources)