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
|
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
|
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(
|
image['plugins'].append(
|
||||||
process_source_installation(image, plugin))
|
process_source_installation(image, plugin))
|
||||||
|
|
||||||
|
@ -11,6 +11,9 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
import fixtures
|
||||||
|
import mock
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslotest import base as oslotest_base
|
from oslotest import base as oslotest_base
|
||||||
|
|
||||||
@ -30,6 +33,11 @@ class TestCase(oslotest_base.BaseTestCase):
|
|||||||
default_config_files = self.get_default_config_files()
|
default_config_files = self.get_default_config_files()
|
||||||
common_config.parse(self.conf, [],
|
common_config.parse(self.conf, [],
|
||||||
default_config_files=default_config_files)
|
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):
|
def get_default_config_files(self):
|
||||||
if self.config_file:
|
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]
|
[DEFAULT]
|
||||||
debug=True
|
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):
|
class KollaWorkerTest(base.TestCase):
|
||||||
|
|
||||||
|
config_file = 'default.conf'
|
||||||
|
|
||||||
def test_supported_base_type(self):
|
def test_supported_base_type(self):
|
||||||
rh_base = ['fedora', 'centos', 'oraclelinux', 'rhel']
|
rh_base = ['fedora', 'centos', 'oraclelinux', 'rhel']
|
||||||
rh_type = ['source', 'binary', 'rdo', 'rhos']
|
rh_type = ['source', 'binary', 'rdo', 'rhos']
|
||||||
@ -128,3 +130,25 @@ class KollaWorkerTest(base.TestCase):
|
|||||||
self.conf.set_override('install_type', install_type)
|
self.conf.set_override('install_type', install_type)
|
||||||
self.assertRaises(build.KollaMismatchBaseTypeException,
|
self.assertRaises(build.KollaMismatchBaseTypeException,
|
||||||
build.KollaWorker, self.conf)
|
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