Create 'infra' type of images
If image is always built same way then it is considered 'infra'. BINARY_SOURCE_IMAGES variable lists toplevel binary/source images. There is a switch "--infra-rename" to enable renaming of infrastructure images. Disabled by default to keep compatibility (will be enabled in future patch). Implements: blueprint infra-images Change-Id: Ib5235e3576ef0eae3efab9559ef44227c928067c
This commit is contained in:
parent
87730f8f7c
commit
e40bf80f98
|
@ -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 = [
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue