Hub: use anyOf for upload_options schema

It turned out, that the upload options for AWS EC2 or GCP with just the
required properties specified, would match both schemas. This is causing
the validation fail with `oneOf` used for `upload_options`.

This will be fixed in osbuild-composer PR#3018. However, we can't use
the same approach for koji-osbuild, while keeping the schema backward
compatible and sane.

Another discussed option would be to define `upload_options` as an empty
object with `additionalProperties` set to `True`. This would
effectively mean no validation of `upload_options`. None of the plugins
actually modify the `upload_options` in any way. It is passed as
provided to `osbuild-composer`.

I think that the change in this commit is a compromise. The validation
of the `upload_options` schema is kept, but it is relaxed to `anyOf`.

[1] https://github.com/osbuild/osbuild-composer/pull/3018

Signed-off-by: Tomáš Hozza <thozza@redhat.com>
This commit is contained in:
Tomáš Hozza 2022-11-02 20:26:08 +01:00 committed by Ondřej Budai
parent 7ccd349999
commit 3d1c24fdc0

View file

@ -112,7 +112,9 @@ OSBUILD_IMAGE_SCHEMA = {
"$ref": "#/definitions/ostree" "$ref": "#/definitions/ostree"
}, },
"upload_options": { "upload_options": {
"oneOf": [ # this should be really 'oneOf', but the minimal required
# properties in AWSEC2 and GCP options overlap.
"anyOf": [
{"$ref": "#/definitions/AWSEC2UploadOptions"}, {"$ref": "#/definitions/AWSEC2UploadOptions"},
{"$ref": "#/definitions/AWSS3UploadOptions"}, {"$ref": "#/definitions/AWSS3UploadOptions"},
{"$ref": "#/definitions/GCPUploadOptions"}, {"$ref": "#/definitions/GCPUploadOptions"},