From 48a862175f41e11a5e7281923c9352efbb176bdd Mon Sep 17 00:00:00 2001 From: Junien Fridrick Date: Wed, 9 Jan 2019 09:46:49 +0100 Subject: [PATCH] fix handling of vendor-data and vendor-data-url config options Also fix the doc to mention Rocky as the turning point, because that's what the code does Change-Id: Ie5fe7e0b023920489182fd060c52b1043bb209a9 --- config.yaml | 4 ++-- hooks/neutron_contexts.py | 7 ++++--- unit_tests/test_neutron_contexts.py | 14 +++++++------- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/config.yaml b/config.yaml index 98517bac..bd32b392 100644 --- a/config.yaml +++ b/config.yaml @@ -257,7 +257,7 @@ options: description: | A JSON-formatted string that will serve as vendor metadata (via "StaticJSON" provider) to all VM's within an OpenStack deployment, - regardless of project or domain. For deployments of Queens or later + regardless of project or domain. For deployments of Rocky or later this value is ignored. Please set the corresponding value in the nova-cloud-controller charm. vendor-data-url: @@ -268,7 +268,7 @@ options: (via "DynamicJSON" provider) to all VM's within an OpenStack deployment, regardless of project or domain. . - Only supported in OpenStack Newton and higher. For deployments of Queens or + Only supported in OpenStack Newton and higher. For deployments of Rocky or later this value is ignored. Please set the corresponding value in the nova-cloud-controller charm. default-availability-zone: diff --git a/hooks/neutron_contexts.py b/hooks/neutron_contexts.py index 60f626c2..ddef3d42 100644 --- a/hooks/neutron_contexts.py +++ b/hooks/neutron_contexts.py @@ -172,21 +172,22 @@ class NovaMetadataContext(OSContextGenerator): ctxt = {} cmp_os_release = CompareOpenStackReleases(os_release('neutron-common')) if cmp_os_release < 'rocky': - ctxt['vendordata_providers'] = [] + vdata_providers = [] vdata = config('vendor-data') vdata_url = config('vendor-data-url') if vdata: ctxt['vendor_data'] = True - ctxt['vendordata_providers'].append('StaticJSON') + vdata_providers.append('StaticJSON') if vdata_url: if cmp_os_release > 'mitaka': ctxt['vendor_data_url'] = vdata_url - ctxt['vendordata_providers'].append('DynamicJSON') + vdata_providers.append('DynamicJSON') else: log('Dynamic vendor data unsupported' ' for {}.'.format(cmp_os_release), level=ERROR) + ctxt['vendordata_providers'] = ','.join(vdata_providers) for rid in relation_ids(self.rel_name): for unit in related_units(rid): rdata = relation_get(rid=rid, unit=unit) diff --git a/unit_tests/test_neutron_contexts.py b/unit_tests/test_neutron_contexts.py index 90a52098..7d97f695 100644 --- a/unit_tests/test_neutron_contexts.py +++ b/unit_tests/test_neutron_contexts.py @@ -459,7 +459,7 @@ class TestNovaMetadataContext(CharmTestCase): ctxt = neutron_contexts.NovaMetadataContext()() self.assertTrue(ctxt['vendor_data']) - self.assertEqual(ctxt['vendordata_providers'], ['StaticJSON']) + self.assertEqual(ctxt['vendordata_providers'], 'StaticJSON') @patch.object(neutron_contexts, 'get_local_ip') @patch.object(neutron_contexts, 'get_shared_secret') @@ -476,7 +476,7 @@ class TestNovaMetadataContext(CharmTestCase): ctxt = neutron_contexts.NovaMetadataContext()() self.assertEqual(ctxt['vendor_data_url'], _vdata_url) - self.assertEqual(ctxt['vendordata_providers'], ['DynamicJSON']) + self.assertEqual(ctxt['vendordata_providers'], 'DynamicJSON') @patch.object(neutron_contexts, 'get_local_ip') @patch.object(neutron_contexts, 'get_shared_secret') @@ -496,8 +496,8 @@ class TestNovaMetadataContext(CharmTestCase): self.assertTrue(ctxt['vendor_data']) self.assertEqual(ctxt['vendor_data_url'], _vdata_url) - self.assertEqual(ctxt['vendordata_providers'], ['StaticJSON', - 'DynamicJSON']) + self.assertEqual(ctxt['vendordata_providers'], + 'StaticJSON,DynamicJSON') @patch.object(neutron_contexts, 'get_local_ip') @patch.object(neutron_contexts, 'get_shared_secret') @@ -519,7 +519,7 @@ class TestNovaMetadataContext(CharmTestCase): 'nova_metadata_port': '8775', 'nova_metadata_protocol': 'http', 'shared_secret': 'asecret', - 'vendordata_providers': []}) + 'vendordata_providers': ''}) @patch.object(neutron_contexts, 'relation_get') @patch.object(neutron_contexts, 'related_units') @@ -542,7 +542,7 @@ class TestNovaMetadataContext(CharmTestCase): 'nova_metadata_port': '8775', 'nova_metadata_protocol': 'http', 'shared_secret': 'auuid', - 'vendordata_providers': []}) + 'vendordata_providers': ''}) @patch.object(neutron_contexts, 'get_local_ip') @patch.object(neutron_contexts, 'get_shared_secret') @@ -561,4 +561,4 @@ class TestNovaMetadataContext(CharmTestCase): 'nova_metadata_port': '8775', 'nova_metadata_protocol': 'http', 'shared_secret': 'buuid', - 'vendordata_providers': []}) + 'vendordata_providers': ''})