plugin/builder: ability to use as executable
Turn the plugin into an executable.
This commit is contained in:
parent
025d3b1902
commit
6cdc3e7177
1 changed files with 97 additions and 0 deletions
|
|
@ -211,3 +211,100 @@ class OSBuildImage(BaseTaskHandler):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# #####
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
RESET = "\033[0m"
|
||||||
|
GREEN = "\033[32m"
|
||||||
|
BOLD = "\033[1m"
|
||||||
|
RED = "\033[31m"
|
||||||
|
|
||||||
|
|
||||||
|
def show_compose(cs):
|
||||||
|
print(f"status: {BOLD}{cs.status}{RESET}")
|
||||||
|
print("koji task: " + str(cs.koji_task_id))
|
||||||
|
print("images: ")
|
||||||
|
for image in cs.images:
|
||||||
|
print(" " + str(image))
|
||||||
|
|
||||||
|
|
||||||
|
def compose_cmd(client: Client, args):
|
||||||
|
images = []
|
||||||
|
formats = args.format or ["qcow2"]
|
||||||
|
repos = [Repository(url) for url in args.repo]
|
||||||
|
for fmt in formats:
|
||||||
|
for arch in args.arch:
|
||||||
|
ireq = ImageRequest(arch, fmt, repos)
|
||||||
|
images.append(ireq)
|
||||||
|
cid = client.compose_create(args.distro, images, args.koji)
|
||||||
|
|
||||||
|
print(f"Compose: {cid}")
|
||||||
|
while True:
|
||||||
|
status = client.compose_status(cid)
|
||||||
|
print(f"status: {status.status: <10}\r", end="")
|
||||||
|
if status.is_finished:
|
||||||
|
break
|
||||||
|
|
||||||
|
time.sleep(2)
|
||||||
|
show_compose(status)
|
||||||
|
|
||||||
|
|
||||||
|
def status_cmd(client: Client, args):
|
||||||
|
cs = client.compose_status(args.id)
|
||||||
|
show_compose(cs)
|
||||||
|
|
||||||
|
|
||||||
|
def wait_cmd(client: Client, args):
|
||||||
|
cs = client.wait_for_compose(args.id)
|
||||||
|
show_compose(cs)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description="osbuild composer koji API client")
|
||||||
|
parser.add_argument("--url", metavar="URL", type=str,
|
||||||
|
default="http://localhost:8701/",
|
||||||
|
help="The URL of the osbuild composer koji API endpoint")
|
||||||
|
parser.set_defaults(cmd=None)
|
||||||
|
sp = parser.add_subparsers(help='commands')
|
||||||
|
|
||||||
|
subpar = sp.add_parser("compose", help='create a new compose')
|
||||||
|
subpar.add_argument("distro", metavar="NAME", help='The distribution')
|
||||||
|
subpar.add_argument("repo", metavar="REPO", help='The repository to use',
|
||||||
|
type=str, action="append", default=[])
|
||||||
|
subpar.add_argument("arch", metavar="ARCHITECTURE", help='Request the architecture',
|
||||||
|
type=str, nargs="+")
|
||||||
|
subpar.add_argument("--koji", metavar="URL", help='The koji url',
|
||||||
|
default="https://localhost/kojihub")
|
||||||
|
subpar.add_argument("--format", metavar="FORMAT", help='Request the image format [qcow2]',
|
||||||
|
action="append", type=str, default=[])
|
||||||
|
subpar.set_defaults(cmd='compose')
|
||||||
|
|
||||||
|
subpar = sp.add_parser("status", help='status of a compose')
|
||||||
|
subpar.add_argument("id", metavar="COMPOSE_ID", help='compose id')
|
||||||
|
subpar.set_defaults(cmd='status')
|
||||||
|
|
||||||
|
subpar = sp.add_parser("wait", help='wait for a compose')
|
||||||
|
subpar.add_argument("id", metavar="COMPOSE_ID", help='compose id')
|
||||||
|
subpar.set_defaults(cmd='wait')
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if not args.cmd:
|
||||||
|
print(f"{RED}Error{RESET}: Need command\n")
|
||||||
|
parser.print_help(sys.stderr)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
client = Client(args.url)
|
||||||
|
|
||||||
|
if args.cmd == "compose":
|
||||||
|
return compose_cmd(client, args)
|
||||||
|
if args.cmd == "status":
|
||||||
|
return status_cmd(client, args)
|
||||||
|
if args.cmd == "wait":
|
||||||
|
return wait_cmd(client, args)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
sys.exit(main())
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue