diff --git a/compose.py b/compose.py new file mode 100755 index 0000000..642488d --- /dev/null +++ b/compose.py @@ -0,0 +1,56 @@ +#!/usr/bin/python3 +import argparse +import koji +import os + +from pprint import pprint + + +def main(): + parser = argparse.ArgumentParser(description="osbuild koji client") + parser.add_argument("--url", metavar="URL", type=str, + default="https://localhost/kojihub", + help="The URL koji hub API endpoint") + parser.add_argument("--repo", metavar="REPO", help='The repository to use', + type=str, action="append", default=[]) + parser.add_argument("--user", metavar="USER", default="kojiadmin") + parser.add_argument("--password", metavar="PASSWORD", default="kojipass") + parser.add_argument("--principal", metavar="USER", default="osbuild-krb@LOCAL") + parser.add_argument("--keytab", metavar="FILE", help="kerberos keytab", + default="/tmp/osbuild-composer-koji-test/client.keytab") + parser.add_argument("--serverca", metavar="FILE", help="Server CA", + default="/tmp/osbuild-composer-koji-test/ca-crt.pem") + parser.add_argument("--plain", help="use plain text login", + default=False, action="store_true") + parser.add_argument("name", metavar="NAME", help='The distribution name') + parser.add_argument("version", metavar="VERSION", help='The distribution version') + parser.add_argument("target", metavar="TARGET", help='The build target') + parser.add_argument("arch", metavar="ARCHITECTURE", help='Request the architecture', + type=str, nargs="+") + args = parser.parse_args() + + opts = {"user": args.user, "password": args.password, "serverca": args.serverca} + session = koji.ClientSession(args.url, opts) + if args.plain: + session.login() + else: + session.gssapi_login(principal=args.principal, keytab=args.keytab) + + name, version, arch, target = args.name, args.version, args.arch, args.target + + opts = {} + if args.repo: + opts["repo"] = ",".join(args.repo) + + print("name:", name) + print("version:", version) + print("arches:", ", ".join(arch)) + print("target:", target) + if opts: + pprint(opts) + + session.osbuildImageTest(name, version, arch, target, opts=opts) + + +if __name__ == "__main__": + main()