osbuild: support specifying package_sets for repos

The `koji-osbuild` plugin supports additional formats for the `repo`
property since v4 [1]. Specifically, a repo can be specified as a
dictionary with `baseurl` key and `package_sets` list containing
specific package set names, that the repository should be used for.

Extend the configuration schema to reflect the plugin change.
Extend the documentation to cover the new repository format.
Extend an existing unit test to specify additional repository using the
added format.

[1] https://github.com/osbuild/koji-osbuild/pull/82

Signed-off-by: Tomáš Hozza <thozza@redhat.com>
This commit is contained in:
Tomáš Hozza 2022-11-23 17:07:26 +01:00
parent e3072c3d5f
commit 8f0906be53
No known key found for this signature in database
GPG Key ID: C5887AD51D9F3C2D
3 changed files with 50 additions and 4 deletions

View File

@ -1607,8 +1607,23 @@ OSBuild Composer for building images
* ``release`` -- release part of the final NVR. If neither this option nor * ``release`` -- release part of the final NVR. If neither this option nor
the global ``osbuild_release`` is set, Koji will automatically generate a the global ``osbuild_release`` is set, Koji will automatically generate a
value. value.
* ``repo`` -- a list of repository URLs from which to consume packages for * ``repo`` -- a list of repositories from which to consume packages for
building the image. By default only the variant repository is used. building the image. By default only the variant repository is used.
The list items may use one of the following formats:
* String with just the repository URL.
* Dictionary with the following keys:
* ``baseurl`` -- URL of the repository.
* ``package_sets`` -- a list of package set names to use for this
repository. Package sets are an internal concept of Image Builder
and are used in image definitions. If specified, the repository is
used by Image Builder only for the pipeline with the same name.
For example, specifying the ``build`` package set name will make
the repository to be used only for the build environment in which
the image will be built. (optional)
* ``arches`` -- list of architectures for which to build the image. By * ``arches`` -- list of architectures for which to build the image. By
default, the variant arches are used. This option can only restrict it, default, the variant arches are used. This option can only restrict it,
not add a new one. not add a new one.

View File

@ -1188,7 +1188,26 @@ def make_schema():
}, },
"arches": {"$ref": "#/definitions/list_of_strings"}, "arches": {"$ref": "#/definitions/list_of_strings"},
"release": {"type": "string"}, "release": {"type": "string"},
"repo": {"$ref": "#/definitions/list_of_strings"}, "repo": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"additionalProperties": False,
"required": ["baseurl"],
"properties": {
"baseurl": {"type": "string"},
"package_sets": {
"type": "array",
"items": {"type": "string"},
},
},
},
{"type": "string"},
]
},
},
"failable": {"$ref": "#/definitions/list_of_strings"}, "failable": {"$ref": "#/definitions/list_of_strings"},
"subvariant": {"type": "string"}, "subvariant": {"type": "string"},
"ostree_url": {"type": "string"}, "ostree_url": {"type": "string"},

View File

@ -251,7 +251,13 @@ class RunOSBuildThreadTest(helpers.PungiTestCase):
"1", # version "1", # version
"15", # release "15", # release
"image-target", "image-target",
[self.topdir + "/compose/Everything/$arch/os"], [
self.topdir + "/compose/Everything/$arch/os",
{
"baseurl": self.topdir + "/compose/Everything/$arch/os",
"package_sets": ["build"],
},
],
["x86_64"], ["x86_64"],
), ),
1, 1,
@ -273,7 +279,13 @@ class RunOSBuildThreadTest(helpers.PungiTestCase):
["aarch64", "x86_64"], ["aarch64", "x86_64"],
opts={ opts={
"release": "15", "release": "15",
"repo": [self.topdir + "/compose/Everything/$arch/os"], "repo": [
self.topdir + "/compose/Everything/$arch/os",
{
"baseurl": self.topdir + "/compose/Everything/$arch/os",
"package_sets": ["build"],
},
],
}, },
), ),
mock.call.save_task_id(1234), mock.call.save_task_id(1234),