Add a new command line option `--skip-tag` that will skip tagging after a successful build. The help text is copied from the same option of other sub-commands in the koji client. The hub plugin's jsonschema was updated accordingly, and the builder plugin will skip the tag if the option was requested. Tests were added or augmented for all three plugins to test the new option.
93 lines
2.5 KiB
Python
93 lines
2.5 KiB
Python
"""Koji osbuild integration for Koji Hub"""
|
|
import sys
|
|
import jsonschema
|
|
|
|
import koji
|
|
from koji.context import context
|
|
|
|
sys.path.insert(0, "/usr/share/koji-hub/")
|
|
import kojihub # pylint: disable=import-error, wrong-import-position
|
|
|
|
|
|
OSBUILD_IMAGE_SCHEMA = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "osbuildImage arguments",
|
|
"type": "array",
|
|
"minItems": 7,
|
|
"items": [
|
|
{
|
|
"type": "string",
|
|
"description": "Name"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Version"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Distribution"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"description": "Image Types",
|
|
"minItems": 1
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Target"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"description": "Architectures",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"$ref": "#/definitions/options"
|
|
}],
|
|
"definitions": {
|
|
"options":{
|
|
"title": "Optional arguments",
|
|
"type": "object",
|
|
"additionalProperties": False,
|
|
"properties": {
|
|
"repo": {
|
|
"type": "array",
|
|
"description": "Repositories",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"release": {
|
|
"type": "string",
|
|
"description": "Release override"
|
|
},
|
|
"skip_tag": {
|
|
"type": "boolean",
|
|
"description": "Omit tagging the result"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@koji.plugin.export
|
|
def osbuildImage(name, version, distro, image_types, target, arches, opts=None, priority=None):
|
|
"""Create an image via osbuild"""
|
|
context.session.assertPerm("image")
|
|
args = [name, version, distro, image_types, target, arches, opts]
|
|
task = {"channel": "image"}
|
|
|
|
try:
|
|
jsonschema.validate(args, OSBUILD_IMAGE_SCHEMA)
|
|
except jsonschema.exceptions.ValidationError as err:
|
|
raise koji.ParameterError(str(err)) from None
|
|
|
|
if priority and priority < 0 and not context.session.hasPerm('admin'):
|
|
raise koji.ActionNotAllowed('only admins may create high-priority tasks')
|
|
|
|
return kojihub.make_task('osbuildImage', args, **task)
|