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
(cherry picked from commit 5ddba7892d)
This commit is contained in:
Paul Bourke 2016-11-03 12:31:07 +00:00 committed by Jeffrey Zhang
parent 57bdf18716
commit 18c3918f5c
3 changed files with 24 additions and 1 deletions

View File

@ -845,7 +845,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
all_sections) if match]:
try:

View File

@ -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

View File

@ -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]