summaryrefslogtreecommitdiff
path: root/cloudinit/sources/DataSourceConfigDrive.py
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2014-09-12 15:46:00 -0400
committerScott Moser <smoser@ubuntu.com>2014-09-12 15:46:00 -0400
commit3ac51517c6e561a4c3590af972b95602aa496afd (patch)
tree797e98be2637f9523defa2e08c01ff5a1d39a19f /cloudinit/sources/DataSourceConfigDrive.py
parent26c1cf9eeeb39e9bfcc1a37743679e5c76ab97b0 (diff)
parenta515846e2cf59568d402baee70950a0b1b1d3182 (diff)
downloadvyos-cloud-init-3ac51517c6e561a4c3590af972b95602aa496afd.tar.gz
vyos-cloud-init-3ac51517c6e561a4c3590af972b95602aa496afd.zip
OpenStack: fix consumption of vendor-data to allow namespacing
Not all vendor data is destined for cloud-init. This sanely reads the vendor data as a dict, array or a string.
Diffstat (limited to 'cloudinit/sources/DataSourceConfigDrive.py')
-rw-r--r--cloudinit/sources/DataSourceConfigDrive.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/cloudinit/sources/DataSourceConfigDrive.py b/cloudinit/sources/DataSourceConfigDrive.py
index a27d07fb..4e5d90de 100644
--- a/cloudinit/sources/DataSourceConfigDrive.py
+++ b/cloudinit/sources/DataSourceConfigDrive.py
@@ -126,12 +126,13 @@ class DataSourceConfigDrive(openstack.SourceMixin, sources.DataSource):
self.version = results['version']
self.files.update(results.get('files', {}))
- # If there is no vendordata, set vd to an empty dict instead of None
- vd = results.get('vendordata', {})
- # if vendordata includes 'cloud-init', then read that explicitly
- # for cloud-init (for namespacing).
- if 'cloud-init' in vd:
- self.vendordata_raw = vd['cloud-init']
+ vd = results.get('vendordata')
+ self.vendordata_pure = vd
+ try:
+ self.vendordata_raw = openstack.convert_vendordata_json(vd)
+ except ValueError as e:
+ LOG.warn("Invalid content in vendor-data: %s", e)
+ self.vendordata_raw = None
return True