From 5ddba7892df71d23fefbf7116e8cfec11a2f41da Mon Sep 17 00:00:00 2001 From: Paul Bourke Date: Thu, 3 Nov 2016 12:31:07 +0000 Subject: [PATCH] Fix plugin parsing for base images If we try to add a plugin to a base image, e.g. [neutron-base-plugin-neutron-fwaas] type = git location = https://github.com/openstack/neutron-fwaas reference = master The build will fail as it parses the above as both "neutron-base-plugin-neutron-fwaas" and "base-plugin-neutron-fwaas". Update the regex to ensure the image name is anchored to the beginning of the conf section. Change-Id: I4099ebd0d25cd28a9bb3bdc4fcfbf311ce22a3fd Closes-Bug: #1638900 --- kolla/image/build.py | 2 +- kolla/tests/etc/default.conf | 5 +++++ kolla/tests/test_build.py | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/kolla/image/build.py b/kolla/image/build.py index 231824e85b..9ad42ab8f2 100644 --- a/kolla/image/build.py +++ b/kolla/image/build.py @@ -836,7 +836,7 @@ class KollaWorker(object): image.name) image.source = process_source_installation(image, image.name) for plugin in [match.group(0) for match in - (re.search('{}-plugin-.+'.format(image.name), + (re.search('^{}-plugin-.+'.format(image.name), section) for section in self.conf.list_all_sections()) if match]: try: diff --git a/kolla/tests/etc/default.conf b/kolla/tests/etc/default.conf index 214ca8841a..545953e34b 100644 --- a/kolla/tests/etc/default.conf +++ b/kolla/tests/etc/default.conf @@ -6,6 +6,11 @@ reference = master location = https://git.openstack.org/openstack/networking-arista type = git +[neutron-base-plugin-neutron-fwaas] +reference = master +location = https://git.openstack.org/openstack/neutron-fwaas +type = git + [profiles] default = image-base all = image-base,image-child diff --git a/kolla/tests/test_build.py b/kolla/tests/test_build.py index 515aa1ddd7..d822a4dfec 100644 --- a/kolla/tests/test_build.py +++ b/kolla/tests/test_build.py @@ -195,6 +195,24 @@ class KollaWorkerTest(base.TestCase): else: self.fail('Can not find the expected neutron arista plugin') + def test_build_image_list_plugin_parsing(self): + """Ensure regex used to parse plugins adds them to the correct image""" + self.conf.set_override('install_type', 'source') + + kolla = build.KollaWorker(self.conf) + kolla.setup_working_dir() + kolla.find_dockerfiles() + kolla.create_dockerfiles() + kolla.build_image_list() + for image in kolla.images: + if image.name == 'base': + self.assertEqual(len(image.plugins), 0, + 'base image should not have any plugins ' + 'registered') + break + else: + self.fail('Expected to find the base image in this test') + def _get_matched_images(self, images): return [image for image in images if image.status == build.STATUS_MATCHED]