aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xkolla/common/config.py4
-rwxr-xr-xkolla/image/build.py43
2 files changed, 44 insertions, 3 deletions
diff --git a/kolla/common/config.py b/kolla/common/config.py
index 4ccf8d626..9925d5843 100755
--- a/kolla/common/config.py
+++ b/kolla/common/config.py
@@ -254,7 +254,9 @@ _CLI_OPTS = [
cfg.BoolOpt('enable-unbuildable', default=False,
help='Enable images marked as unbuildable'),
cfg.BoolOpt('summary', default=True,
- help='Show summary at the end of build')
+ help='Show summary at the end of build'),
+ cfg.BoolOpt('infra-rename', default=False,
+ help='Rename infrastructure images to infra')
]
_BASE_OPTS = [
diff --git a/kolla/image/build.py b/kolla/image/build.py
index 5a2f4104b..4af4e4437 100755
--- a/kolla/image/build.py
+++ b/kolla/image/build.py
@@ -192,6 +192,13 @@ UNBUILDABLE_IMAGES = {
},
}
+# NOTE(hrw): all non-infra images and their children
+BINARY_SOURCE_IMAGES = [
+ 'kolla-toolbox',
+ 'openstack-base',
+ 'monasca-thresh',
+]
+
class ArchivingError(Exception):
pass
@@ -751,7 +758,10 @@ class KollaWorker(object):
sys.exit(1)
self.image_prefix = self.base + '-' + self.install_type + '-'
- self.infra_image_prefix = self.image_prefix
+ if self.conf.infra_rename:
+ self.infra_image_prefix = self.base + '-infra-'
+ else:
+ self.infra_image_prefix = self.image_prefix
self.regex = conf.regex
self.image_statuses_bad = dict()
@@ -1004,6 +1014,15 @@ class KollaWorker(object):
if not self.conf.work_dir:
shutil.rmtree(self.temp_dir)
+ def change_install_type(self, image, old_type, new_type):
+ # NOTE(hrw): /self.base to make sure that we do not break image name
+ image.canonical_name = image.canonical_name.replace(
+ f'/{self.base}-{old_type}-',
+ f'/{self.base}-{new_type}-')
+ if image.children:
+ for tmp_image in image.children:
+ tmp_image.parent_name = image.canonical_name
+
def filter_images(self):
"""Filter which images to build."""
filter_ = list()
@@ -1085,6 +1104,25 @@ class KollaWorker(object):
if image.status != STATUS_UNBUILDABLE:
image.status = STATUS_MATCHED
+ if self.conf.infra_rename:
+ for image in self.images:
+ is_infra = True
+ if image.name in BINARY_SOURCE_IMAGES:
+ # keep as is
+ is_infra = False
+ else:
+ # let's check ancestors if any of them is binary/source
+ ancestor_image = image
+ while (ancestor_image.parent is not None):
+ ancestor_image = ancestor_image.parent
+ if ancestor_image.name in BINARY_SOURCE_IMAGES:
+ is_infra = False
+ break
+
+ if is_infra:
+ self.change_install_type(image, self.install_type, 'infra')
+ pass
+
# Next, mark any skipped images.
for image in self.images:
if image.status != STATUS_MATCHED:
@@ -1343,7 +1381,8 @@ class KollaWorker(object):
for parent_name, parent in sort_images.items():
for image in sort_images.values():
- if image.parent_name == parent_name:
+ if (image.parent_name == parent_name or image.parent_name ==
+ parent_name.replace(self.install_type, 'infra')):
parent.children.append(image)
image.parent = parent