[PATCH 1/2] Add CLI for runroot plugin.
Mike McLean
mikem at redhat.com
Sat Jun 6 20:33:24 UTC 2015
On 06/06/2015 03:36 PM, Ralph Bean wrote:
> From: Daniel Mach <dmach at redhat.com>
ack, both added
> ---
> cli/koji | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 65 insertions(+)
>
> diff --git a/cli/koji b/cli/koji
> index 8e0f7b2..6cdecaa 100755
> --- a/cli/koji
> +++ b/cli/koji
> @@ -6442,6 +6442,71 @@ def handle_moshimoshi(options, session, args):
> if u.get("krb_principal", None) is not None:
> print "Authenticated via Kerberos principal %s" % (u["krb_principal"])
>
> +
> +def handle_runroot(options, session, args):
> + "[admin] Run a command in a buildroot"
> + usage = _("usage: %prog runroot [options] <tag> <arch> <command>")
> + usage += _("\n(Specify the --help global option for a list of other help options)")
> + parser = OptionParser(usage=usage)
> + parser.disable_interspersed_args()
> + parser.add_option("-p", "--package", action="append", default=[], help=_("make sure this package is in the chroot"))
> + parser.add_option("-m", "--mount", action="append", default=[], help=_("mount this directory read-write in the chroot"))
> + parser.add_option("--skip-setarch", action="store_true", default=False,
> + help=_("bypass normal setarch in the chroot"))
> + parser.add_option("-w", "--weight", type='int', help=_("set task weight"))
> + parser.add_option("--channel-override", help=_("use a non-standard channel"))
> + parser.add_option("--task-id", action="store_true", default=False,
> + help=_("Print the ID of the runroot task"))
> + parser.add_option("--use-shell", action="store_true", default=False,
> + help=_("Run command through a shell, otherwise uses exec"))
> + parser.add_option("--repo-id", type="int", help=_("ID of the repo to use"))
> +
> + (opts, args) = parser.parse_args(args)
> +
> + if len(args) < 3:
> + parser.error(_("Incorrect number of arguments"))
> + activate_session(session)
> + tag = args[0]
> + arch = args[1]
> + if opts.use_shell:
> + # everything must be correctly quoted
> + command = ' '.join(args[2:])
> + else:
> + command = args[2:]
> + task_id = session.runroot(tag, arch, command,
> + channel=opts.channel_override,
> + packages=opts.package, mounts=opts.mount,
> + repo_id=opts.repo_id,
> + skip_setarch=opts.skip_setarch,
> + weight=opts.weight)
> + if opts.task_id:
> + print task_id
> +
> + try:
> + while True:
> + # wait for the task to finish
> + if session.taskFinished(task_id):
> + break
> + time.sleep(options.poll_interval)
> + except KeyboardInterrupt:
> + # this is probably the right thing to do here
> + print "User interrupt: canceling runroot task"
> + session.cancelTask(task_id)
> + return
> + output = None
> + if "runroot.log" in session.listTaskOutput(task_id):
> + output = session.downloadTaskOutput(task_id, "runroot.log")
> + if output:
> + sys.stdout.write(output)
> + info = session.getTaskInfo(task_id)
> + if info is None:
> + sys.exit(1)
> + state = koji.TASK_STATES[info['state']]
> + if state in ('FAILED', 'CANCELED'):
> + sys.exit(1)
> + return
> +
> +
> def handle_help(options, session, args):
> "List available commands"
> usage = _("usage: %prog help [options]")
>
More information about the buildsys
mailing list