summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcvstealth <72958055+cvstealth@users.noreply.github.com>2022-03-09 18:59:28 -0500
committerGitHub <noreply@github.com>2022-03-09 17:59:28 -0600
commit558f03754fb873b54fedca14caaee605210830d5 (patch)
treeee77c95b187fe010be578f1cadcc922edbccc404
parentafaa7da4e6eab7a98e4643bc2ebd849d53c540f5 (diff)
downloadcloud-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.py8
-rw-r--r--tests/unittests/sources/test_configdrive.py14
-rw-r--r--tools/.github-cla-signers1
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