diff options
| -rwxr-xr-x | kolla/common/config.py | 4 | ||||
| -rwxr-xr-x | kolla/image/build.py | 43 |
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 |
