Merge "Add modify_only_with_source" into stable/train

This commit is contained in:
Zuul 2020-08-25 07:37:13 +00:00 committed by Gerrit Code Review
commit 1393f4eb56
3 changed files with 76 additions and 3 deletions

View File

@ -0,0 +1,6 @@
---
features:
- |
Added `modify_only_with_source` to the ContainerImagePrepare set that can
be used to limit modify container images to a specific image_source as
defined in the services to container images mapping.

View File

@ -189,6 +189,7 @@ def container_images_prepare_multi(environment, roles_data, dry_run=False,
modify_role = cip_entry.get('modify_role')
modify_vars = cip_entry.get('modify_vars')
modify_only_with_labels = cip_entry.get('modify_only_with_labels')
modify_only_with_source = cip_entry.get('modify_only_with_source')
modify_append_tag = cip_entry.get('modify_append_tag',
time.strftime(
'-modified-%Y%m%d%H%M%S'))
@ -217,6 +218,7 @@ def container_images_prepare_multi(environment, roles_data, dry_run=False,
modify_role=modify_role,
modify_vars=modify_vars,
modify_only_with_labels=modify_only_with_labels,
modify_only_with_source=modify_only_with_source,
mirrors=mirrors,
registry_credentials=creds,
multi_arch=multi_arch,
@ -258,6 +260,7 @@ def container_images_prepare(template_file=DEFAULT_TEMPLATE_FILE,
output_images_file=None, tag_from_label=None,
append_tag=None, modify_role=None,
modify_vars=None, modify_only_with_labels=None,
modify_only_with_source=None,
mirrors=None, registry_credentials=None,
multi_arch=False, lock=None):
"""Perform container image preparation
@ -285,6 +288,9 @@ def container_images_prepare(template_file=DEFAULT_TEMPLATE_FILE,
:param modify_vars: dict of variables to pass to modify_role
:param modify_only_with_labels: only modify the container images with the
given labels
:param modify_only_with_source: only modify the container images from a
image_source in the tripleo-common service
to container mapping (e.g. kolla/tripleo)
:param mirrors: dict of registry netloc values to mirror urls
:param registry_credentials: dict of registry netloc values to
authentication credentials for that registry.
@ -350,18 +356,27 @@ def container_images_prepare(template_file=DEFAULT_TEMPLATE_FILE,
entry['imagename'] = '%s:%s' % (
image_no_tag, image_version_tags[image_no_tag])
images_with_labels = []
if modify_only_with_labels:
images_with_labels = uploader.filter_images_with_labels(
images, modify_only_with_labels)
images_with_source = []
if modify_only_with_source:
images_with_source = [i.get('imagename') for i in result
if i.get('image_source', '')
in modify_only_with_source]
params = {}
modify_append_tag = append_tag
for entry in result:
imagename = entry.get('imagename', '')
append_tag = ''
if modify_role and (
(not modify_only_with_labels) or
imagename in images_with_labels):
(not modify_only_with_labels
and not modify_only_with_source) or
(imagename in images_with_labels or
imagename in images_with_source)):
entry['modify_role'] = modify_role
if modify_append_tag:
entry['modify_append_tag'] = modify_append_tag

View File

@ -955,6 +955,15 @@ class TestPrepare(base.TestCase):
'modify_role': 'add-foo-plugin',
'modify_only_with_labels': ['kolla_version'],
'modify_vars': {'foo_version': '1.0.1'}
}, {
'set': mapping_args,
'tag_from_label': 'bar',
'includes': ['nova', 'neutron'],
'push_destination': True,
'modify_role': 'add-foo-plugin',
'modify_only_with_source': ['kolla', 'tripleo'],
'modify_vars': {'foo_version': '1.0.1'}
}]
}
}
@ -981,6 +990,19 @@ class TestPrepare(base.TestCase):
'push_destination': '192.0.2.1:8787'
}]
},
{
'image_params': {
'BarImage': 't/bar:1.0',
'BazImage': 't/baz:1.0'
},
'upload_data': [{
'imagename': 't/bar:1.0',
'push_destination': '192.0.2.1:8787'
}, {
'imagename': 't/baz:1.0',
'push_destination': '192.0.2.1:8787'
}]
},
]
image_params = kb.container_images_prepare_multi(env, roles_data,
@ -1000,6 +1022,7 @@ class TestPrepare(base.TestCase):
append_tag=mock.ANY,
modify_role=None,
modify_only_with_labels=None,
modify_only_with_source=None,
modify_vars=None,
mirrors={
'docker.io': 'http://192.0.2.2/reg/'
@ -1023,6 +1046,31 @@ class TestPrepare(base.TestCase):
append_tag=mock.ANY,
modify_role='add-foo-plugin',
modify_only_with_labels=['kolla_version'],
modify_only_with_source=None,
modify_vars={'foo_version': '1.0.1'},
mirrors={
'docker.io': 'http://192.0.2.2/reg/'
},
registry_credentials={
'docker.io': {'my_username': 'my_password'}
},
multi_arch=False,
lock=mock_lock
),
mock.call(
excludes=None,
includes=['nova', 'neutron'],
mapping_args=mapping_args,
output_env_file='image_params',
output_images_file='upload_data',
pull_source=None,
push_destination='192.0.2.1:8787',
service_filter=None,
tag_from_label='bar',
append_tag=mock.ANY,
modify_role='add-foo-plugin',
modify_only_with_labels=None,
modify_only_with_source=['kolla', 'tripleo'],
modify_vars={'foo_version': '1.0.1'},
mirrors={
'docker.io': 'http://192.0.2.2/reg/'
@ -1035,7 +1083,7 @@ class TestPrepare(base.TestCase):
)
])
mock_im.assert_called_once()
self.assertEqual(mock_im.call_count, 2)
self.assertEqual(
{
@ -1114,6 +1162,7 @@ class TestPrepare(base.TestCase):
append_tag=mock.ANY,
modify_role=None,
modify_only_with_labels=None,
modify_only_with_source=None,
modify_vars=None,
mirrors={},
registry_credentials=None,
@ -1133,6 +1182,7 @@ class TestPrepare(base.TestCase):
append_tag=mock.ANY,
modify_role='add-foo-plugin',
modify_only_with_labels=['kolla_version'],
modify_only_with_source=None,
modify_vars={'foo_version': '1.0.1'},
mirrors={},
registry_credentials=None,
@ -1223,6 +1273,7 @@ class TestPrepare(base.TestCase):
append_tag=mock.ANY,
modify_role=None,
modify_only_with_labels=None,
modify_only_with_source=None,
modify_vars=None,
mirrors={},
registry_credentials=None,
@ -1242,6 +1293,7 @@ class TestPrepare(base.TestCase):
append_tag=mock.ANY,
modify_role='add-foo-plugin',
modify_only_with_labels=['kolla_version'],
modify_only_with_source=None,
modify_vars={'foo_version': '1.0.1'},
mirrors={},
registry_credentials=None,