plugins: add support for customizations
The Cloud API supports passing in a variety of image customizations, like e.g. extra packages or pre-defining users. Add a new command line option to the client `--customizations` which takes a path to a JSON file which contains the customziations; they will be passed via the existing `opts` argument to the hub. Add support for `customizations` to the `opts`/`options` arguments to the hub plugin. No validation to the object is done. Instead we rely in Composer for the validation of the content. Add support for `customizations` the image `ComposeRequest` in the builder plugin. All specified values are just passed through to composer as-is. Add tests for the respective plugins.
This commit is contained in:
parent
d8c9332257
commit
591a55aad5
5 changed files with 130 additions and 1 deletions
|
|
@ -1026,6 +1026,49 @@ class TestBuilderPlugin(PluginTest): # pylint: disable=too-many-public-methods
|
|||
res = handler.handler(*args)
|
||||
assert res, "invalid compose result"
|
||||
|
||||
@httpretty.activate
|
||||
def test_customizations_compose(self):
|
||||
# Check we properly handle compose requests with customizations
|
||||
session = self.mock_session()
|
||||
handler = self.make_handler(session=session)
|
||||
|
||||
customizations = {
|
||||
"packages": [
|
||||
"emacs"
|
||||
]
|
||||
}
|
||||
|
||||
arches = ["x86_64", "s390x"]
|
||||
repos = ["http://1.repo", "https://2.repo"]
|
||||
args = ["name", "version", "distro",
|
||||
["image_type"],
|
||||
"fedora-candidate",
|
||||
arches,
|
||||
{"repo": repos,
|
||||
"customizations": customizations
|
||||
}]
|
||||
|
||||
url = self.plugin.DEFAULT_COMPOSER_URL
|
||||
composer = MockComposer(url, architectures=arches)
|
||||
composer.httpretty_register()
|
||||
|
||||
res = handler.handler(*args)
|
||||
assert res, "invalid compose result"
|
||||
compose_id = res["composer"]["id"]
|
||||
compose = composer.composes.get(compose_id)
|
||||
self.assertIsNotNone(compose)
|
||||
|
||||
ireqs = compose["request"]["image_requests"]
|
||||
|
||||
# Check we got all the requested architectures
|
||||
ireq_arches = [i["architecture"] for i in ireqs]
|
||||
diff = set(arches) ^ set(ireq_arches)
|
||||
self.assertEqual(diff, set())
|
||||
|
||||
# Check we actually got the customizations
|
||||
self.assertEqual(compose["request"].get("customizations"),
|
||||
customizations)
|
||||
|
||||
@httpretty.activate
|
||||
def test_ostree_compose(self):
|
||||
# Check we properly handle ostree compose requests
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue