Make container list optional for builds

Since we can generate the list of containers from a jinja file, we don't
need to specify the static file from tripleo-common. This change adds
the ability to fall back to the jinja version of the overcloud
containers list if the container config file is not specified.

Change-Id: I931a83cd2f3aa5026c863771e3d80be42f0a5976
This commit is contained in:
Alex Schultz 2019-02-27 14:41:14 -07:00 committed by Emilien Macchi
parent e7103f96d5
commit c1a6348174
2 changed files with 11 additions and 19 deletions

View File

@ -447,7 +447,12 @@ class KollaImageBuilder(base.BaseImageManager):
cmd.append('--config-file')
cmd.append(f)
container_images = self.load_config_files(self.CONTAINER_IMAGES) or []
if len(self.config_files) == 0:
self.config_files = [DEFAULT_TEMPLATE_FILE]
container_images = self.container_images_from_template()
else:
container_images = self.load_config_files(self.CONTAINER_IMAGES) \
or []
container_images.sort(key=lambda i: i.get('imagename'))
for i in container_images:
# Do not attempt to build containers that are not from kolla or

View File

@ -18,7 +18,6 @@ import mock
import os
import requests
import six
import subprocess
import sys
import tempfile
import yaml
@ -163,16 +162,20 @@ class TestKollaImageBuilder(base.TestCase):
calls = [call1, call2]
mock_popen.assert_has_calls(calls, any_order=True)
@mock.patch('tripleo_common.image.kolla_builder.KollaImageBuilder.'
'container_images_from_template')
@mock.patch('subprocess.Popen')
def test_build_images_no_conf(self, mock_popen):
def test_build_images_no_conf(self, mock_popen, mock_images_from_template):
process = mock.Mock()
process.returncode = 0
process.communicate.return_value = 'done', ''
mock_popen.return_value = process
mock_images_from_template.return_value = []
builder = kb.KollaImageBuilder([])
self.assertEqual('done', builder.build_images([]))
env = os.environ.copy()
mock_images_from_template.assert_called_once()
mock_popen.assert_called_once_with([
'kolla-build',
], env=env, stdout=-1, universal_newlines=True)
@ -200,22 +203,6 @@ class TestKollaImageBuilder(base.TestCase):
'image-with-missing-tag',
], env=env, stdout=-1, universal_newlines=True)
@mock.patch('subprocess.Popen')
def test_build_images_fail(self, mock_popen):
process = mock.Mock()
process.returncode = 1
process.communicate.return_value = '', 'ouch'
mock_popen.return_value = process
builder = kb.KollaImageBuilder([])
self.assertRaises(subprocess.CalledProcessError,
builder.build_images,
[])
env = os.environ.copy()
mock_popen.assert_called_once_with([
'kolla-build',
], env=env, stdout=-1, universal_newlines=True)
class TestKollaImageBuilderTemplate(base.TestCase):