Skip to content
Snippets Groups Projects
Commit 477fc18b authored by Paul Bourke's avatar Paul Bourke Committed by Jeffrey Zhang
Browse files

Fix image plugin functionality for oslo.config


The new oslo.config style parsing for kolla-build.conf stopped plugins
from working. This patch fixes it and adds a unit test.

Co-Authored-By: default avatarJeffrey Zhang <zhang.lei.fly@gmail.com>
Closes-Bug: 1534556
Change-Id: I135797c733ae0cae040a009c364073769b19e4eb
parent 013d2111
No related branches found
No related tags found
No related merge requests found
......@@ -604,7 +604,9 @@ class KollaWorker(object):
for plugin in [match.group(0) for match in
(re.search('{}-plugin-.+'.format(image['name']),
section) for section in
self.conf._groups) if match]:
self.conf.list_all_sections()) if match]:
self.conf.register_opts(common_config.get_source_opts(),
plugin)
image['plugins'].append(
process_source_installation(image, plugin))
......
......@@ -11,6 +11,9 @@
# limitations under the License.
import os
import fixtures
import mock
from oslo_config import cfg
from oslotest import base as oslotest_base
......@@ -30,6 +33,11 @@ class TestCase(oslotest_base.BaseTestCase):
default_config_files = self.get_default_config_files()
common_config.parse(self.conf, [],
default_config_files=default_config_files)
# NOTE(jeffrey4l): mock the _get_image_dir method to return a fake
# docker images dir
self.useFixture(fixtures.MockPatch(
'kolla.cmd.build.KollaWorker._get_images_dir',
mock.Mock(return_value=os.path.join(TESTS_ROOT, 'docker'))))
def get_default_config_files(self):
if self.config_file:
......
FROM {{ base_distro }}:{{ base_distro_tag }}
FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}
[DEFAULT]
debug=True
[neutron-server-plugin-networking-arista]
reference = master
location = https://github.com/openstack/networking-arista
type = git
......@@ -107,6 +107,8 @@ class WorkerThreadTest(base.TestCase):
class KollaWorkerTest(base.TestCase):
config_file = 'default.conf'
def test_supported_base_type(self):
rh_base = ['fedora', 'centos', 'oraclelinux', 'rhel']
rh_type = ['source', 'binary', 'rdo', 'rhos']
......@@ -128,3 +130,25 @@ class KollaWorkerTest(base.TestCase):
self.conf.set_override('install_type', install_type)
self.assertRaises(build.KollaMismatchBaseTypeException,
build.KollaWorker, self.conf)
def test_build_image_list_adds_plugins(self):
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()
expected_plugin = {
'name': 'neutron-server-plugin-networking-arista',
'reference': 'master',
'source': 'https://github.com/openstack/networking-arista',
'type': 'git'
}
for image in kolla.images:
if image['name'] == 'neutron-server':
self.assertEqual(image['plugins'][0], expected_plugin)
break
else:
self.fail('Can not find the expected neutron arista plugin')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment