diff options
author | cvstealth <72958055+cvstealth@users.noreply.github.com> | 2022-03-09 18:59:28 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-09 17:59:28 -0600 |
commit | 558f03754fb873b54fedca14caaee605210830d5 (patch) | |
tree | ee77c95b187fe010be578f1cadcc922edbccc404 | |
parent | afaa7da4e6eab7a98e4643bc2ebd849d53c540f5 (diff) | |
download | cloud-init-git-558f03754fb873b54fedca14caaee605210830d5.tar.gz |
Add vendor_data2 support for ConfigDrive source (#1307)
When using a ConfigDrive as a data source for cloud-init only
vendordata is currently evaluated. This patch adds support for
vendor_data2 when used with ConfigDrive and aligns with the same
feature parity that is found when using the OpenStack Neutron metadata
service (DataSourceOpenStack.py).
-rw-r--r-- | cloudinit/sources/DataSourceConfigDrive.py | 8 | ||||
-rw-r--r-- | tests/unittests/sources/test_configdrive.py | 14 | ||||
-rw-r--r-- | tools/.github-cla-signers | 1 |
3 files changed, 23 insertions, 0 deletions
diff --git a/cloudinit/sources/DataSourceConfigDrive.py b/cloudinit/sources/DataSourceConfigDrive.py index f7c58b12..e47e5820 100644 --- a/cloudinit/sources/DataSourceConfigDrive.py +++ b/cloudinit/sources/DataSourceConfigDrive.py @@ -149,6 +149,14 @@ class DataSourceConfigDrive(openstack.SourceMixin, sources.DataSource): LOG.warning("Invalid content in vendor-data: %s", e) self.vendordata_raw = None + vd2 = results.get("vendordata2") + self.vendordata2_pure = vd2 + try: + self.vendordata2_raw = sources.convert_vendordata(vd2) + except ValueError as e: + LOG.warning("Invalid content in vendor-data2: %s", e) + self.vendordata2_raw = None + # network_config is an /etc/network/interfaces formated file and is # obsolete compared to networkdata (from network_data.json) but both # might be present. diff --git a/tests/unittests/sources/test_configdrive.py b/tests/unittests/sources/test_configdrive.py index 1fc40a0e..5188ed32 100644 --- a/tests/unittests/sources/test_configdrive.py +++ b/tests/unittests/sources/test_configdrive.py @@ -35,6 +35,12 @@ EC2_META = { "security-groups": ["default"], } USER_DATA = b"#!/bin/sh\necho This is user data\n" +VENDOR_DATA = { + "magic": "", +} +VENDOR_DATA2 = { + "static": "", +} OSTACK_META = { "availability_zone": "nova", "files": [ @@ -363,10 +369,14 @@ CFG_DRIVE_FILES_V2 = { "openstack/content/0001": CONTENT_1, "openstack/latest/meta_data.json": json.dumps(OSTACK_META), "openstack/latest/user_data": USER_DATA, + "openstack/latest/vendor_data.json": json.dumps(VENDOR_DATA), + "openstack/latest/vendor_data2.json": json.dumps(VENDOR_DATA2), "openstack/latest/network_data.json": json.dumps(NETWORK_DATA), "openstack/2015-10-15/meta_data.json": json.dumps(OSTACK_META), "openstack/2015-10-15/user_data": USER_DATA, "openstack/2015-10-15/network_data.json": json.dumps(NETWORK_DATA), + "openstack/2015-10-15/vendor_data.json": json.dumps(VENDOR_DATA), + "openstack/2015-10-15/vendor_data2.json": json.dumps(VENDOR_DATA2), } M_PATH = "cloudinit.sources.DataSourceConfigDrive." @@ -531,6 +541,8 @@ class TestConfigDriveDataSource(CiTestCase): self.assertEqual(USER_DATA, found["userdata"]) self.assertEqual(expected_md, found["metadata"]) self.assertEqual(NETWORK_DATA, found["networkdata"]) + self.assertEqual(VENDOR_DATA, found["vendordata"]) + self.assertEqual(VENDOR_DATA2, found["vendordata2"]) self.assertEqual(found["files"]["/etc/foo.cfg"], CONTENT_0) self.assertEqual(found["files"]["/etc/bar/bar.cfg"], CONTENT_1) @@ -1058,6 +1070,8 @@ def populate_ds_from_read_config(cfg_ds, source, results): cfg_ds.metadata = results.get("metadata") cfg_ds.ec2_metadata = results.get("ec2-metadata") cfg_ds.userdata_raw = results.get("userdata") + cfg_ds.vendordata_raw = results.get("vendordata") + cfg_ds.vendordata2_raw = results.get("vendordata2") cfg_ds.version = results.get("version") cfg_ds.network_json = results.get("networkdata") cfg_ds._network_config = openstack.convert_net_json( diff --git a/tools/.github-cla-signers b/tools/.github-cla-signers index 1aaae7f9..e205d6ea 100644 --- a/tools/.github-cla-signers +++ b/tools/.github-cla-signers @@ -20,6 +20,7 @@ chrislalos ciprianbadescu citrus-it cjp256 +cvstealth dankenigsberg ddymko dermotbradley |