Merge "Add label argument for the container image build" into stable/train

This commit is contained in:
Zuul 2021-03-08 23:49:17 +00:00 committed by Gerrit Code Review
commit 375e32d8f2
2 changed files with 44 additions and 0 deletions

View File

@ -0,0 +1,12 @@
---
features:
- The container image build command now has the ability to inject labels
into various images being constructed. To add labels into a container,
the argument `--label` can be specified multiple times. The value is
always a key=value pair and each key must be unique.
other:
- The container image build label agument has the ability to do simple
string replacements following the python standard. Available options
for string replacement are `registry`, `namespace`, `prefix`,
`image`, `tag`, and `name`. Example usage
`--label component="%(prefix)s-%(name)s-container"`.

View File

@ -184,6 +184,18 @@ class Build(command.Command):
"(default: %(default)s)" "(default: %(default)s)"
), ),
) )
parser.add_argument(
"--label",
dest="labels",
metavar="<label-data>",
default=[],
action="append",
help=_(
"Add labels to the containers. This option can be "
"specified multiple times. Each label is a key=value "
"pair."
),
)
parser.add_argument( parser.add_argument(
"--volume", "--volume",
dest="volumes", dest="volumes",
@ -562,6 +574,26 @@ class Build(command.Command):
rhel_modules.update({name: version}) rhel_modules.update({name: version})
image_config['tcib_rhel_modules'] = rhel_modules image_config['tcib_rhel_modules'] = rhel_modules
if parsed_args.labels:
_desc = "OpenStack Platform {}".format(image_parsed_name)
label_data = image_config['tcib_labels'] = {
"tcib_managed": True,
"maintainer": "OpenStack TripleO Team",
"description": _desc,
"summary": _desc,
"io.k8s.display-name": _desc,
}
for item in parsed_args.labels:
key, value = item.split("=", 1)
label_data[key] = value % dict(
registry=parsed_args.registry,
namespace=parsed_args.namespace,
prefix=parsed_args.prefix,
image=image_name,
tag=parsed_args.tag,
name=image_parsed_name,
)
# NOTE(cloudnull): Check if the reference config has a valid # NOTE(cloudnull): Check if the reference config has a valid
# "from" option. If the reference "from" # "from" option. If the reference "from"
# option is valid, it will be used. # option is valid, it will be used.