Skip to content

Commit

Permalink
Hub: use anyOf for upload_options schema
Browse files Browse the repository at this point in the history
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] osbuild/osbuild-composer#3018

Signed-off-by: Tomáš Hozza <thozza@redhat.com>
  • Loading branch information
thozza authored and ondrejbudai committed Nov 21, 2022
1 parent 7ccd349 commit 3d1c24f
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion plugins/hub/osbuild.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,9 @@
"$ref": "#/definitions/ostree"
},
"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/AWSS3UploadOptions"},
{"$ref": "#/definitions/GCPUploadOptions"},
Expand Down

0 comments on commit 3d1c24f

Please sign in to comment.