summaryrefslogtreecommitdiff
path: root/cloudinit/handlers
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2014-01-17 15:30:04 -0500
committerScott Moser <smoser@ubuntu.com>2014-01-17 15:30:04 -0500
commit605335f4732246ef89b94dcc542e73f13fdef1c9 (patch)
tree7e0ac9e33408102a04342db5b54ee0a520ef64ec /cloudinit/handlers
parent98fd17c55b637f4e1d136c954567c1d9b23e6c20 (diff)
parent1729b161c7569ec60ac6102a046e0b8c22457b7c (diff)
downloadvyos-cloud-init-605335f4732246ef89b94dcc542e73f13fdef1c9.tar.gz
vyos-cloud-init-605335f4732246ef89b94dcc542e73f13fdef1c9.zip
initial vendordata support
This adds the ability for a datasource to provide "vendordata". The difference here is that vendordata is from the vendor (cloud provider) where user-data is from the user. By enabling this channel, the vendor can have input on how the instance is set up without modifying or needing to understand the user-data. vendordata is generally consumed exactly like user-data, but the user has the ability to disable its consumption. The only datasource supporting this at the moment is SmartOS.
Diffstat (limited to 'cloudinit/handlers')
-rw-r--r--cloudinit/handlers/__init__.py4
-rw-r--r--cloudinit/handlers/cloud_config.py2
-rw-r--r--cloudinit/handlers/shell_script.py2
3 files changed, 8 insertions, 0 deletions
diff --git a/cloudinit/handlers/__init__.py b/cloudinit/handlers/__init__.py
index 2ddc75f4..059d7495 100644
--- a/cloudinit/handlers/__init__.py
+++ b/cloudinit/handlers/__init__.py
@@ -187,6 +187,10 @@ def _escape_string(text):
def walker_callback(data, filename, payload, headers):
content_type = headers['Content-Type']
+ if content_type in data.get('excluded'):
+ LOG.debug('content_type "%s" is excluded', content_type)
+ return
+
if content_type in PART_CONTENT_TYPES:
walker_handle_handler(data, content_type, filename, payload)
return
diff --git a/cloudinit/handlers/cloud_config.py b/cloudinit/handlers/cloud_config.py
index 34a73115..4232700f 100644
--- a/cloudinit/handlers/cloud_config.py
+++ b/cloudinit/handlers/cloud_config.py
@@ -66,6 +66,8 @@ class CloudConfigPartHandler(handlers.Handler):
handlers.Handler.__init__(self, PER_ALWAYS, version=3)
self.cloud_buf = None
self.cloud_fn = paths.get_ipath("cloud_config")
+ if 'cloud_config_path' in _kwargs:
+ self.cloud_fn = paths.get_ipath(_kwargs["cloud_config_path"])
self.file_names = []
def list_types(self):
diff --git a/cloudinit/handlers/shell_script.py b/cloudinit/handlers/shell_script.py
index 62289d98..30c1ed89 100644
--- a/cloudinit/handlers/shell_script.py
+++ b/cloudinit/handlers/shell_script.py
@@ -36,6 +36,8 @@ class ShellScriptPartHandler(handlers.Handler):
def __init__(self, paths, **_kwargs):
handlers.Handler.__init__(self, PER_ALWAYS)
self.script_dir = paths.get_ipath_cur('scripts')
+ if 'script_path' in _kwargs:
+ self.script_dir = paths.get_ipath_cur(_kwargs['script_path'])
def list_types(self):
return [