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: Jeffrey Zhang <zhang.lei.fly@gmail.com> Closes-Bug: 1534556 Change-Id: I135797c733ae0cae040a009c364073769b19e4eb
This commit is contained in:
parent
013d21119f
commit
477fc18bd0
@ -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:
|
||||
|
1
kolla/tests/docker/base/Dockerfile.j2
Normal file
1
kolla/tests/docker/base/Dockerfile.j2
Normal file
@ -0,0 +1 @@
|
||||
FROM {{ base_distro }}:{{ base_distro_tag }}
|
1
kolla/tests/docker/neutron-server/Dockerfile.j2
Normal file
1
kolla/tests/docker/neutron-server/Dockerfile.j2
Normal file
@ -0,0 +1 @@
|
||||
FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}
|
@ -1,2 +1,7 @@
|
||||
[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')
|
||||
|
Loading…
Reference in New Issue
Block a user