diff options
author | Scott Moser <smoser@ubuntu.com> | 2014-09-12 15:46:00 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2014-09-12 15:46:00 -0400 |
commit | 3ac51517c6e561a4c3590af972b95602aa496afd (patch) | |
tree | 797e98be2637f9523defa2e08c01ff5a1d39a19f /cloudinit/sources/DataSourceConfigDrive.py | |
parent | 26c1cf9eeeb39e9bfcc1a37743679e5c76ab97b0 (diff) | |
parent | a515846e2cf59568d402baee70950a0b1b1d3182 (diff) | |
download | vyos-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.py | 13 |
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 |