diff --git a/cli/koji b/cli/koji index 4b5a23d2..f4ca8e01 100755 --- a/cli/koji +++ b/cli/koji @@ -559,6 +559,45 @@ def handle_add_group(options, session, args): session.groupListAdd(tag, group) +def handle_assign_task(options, session, args): + "[admin] Assign a task to a host" + usage = _('usage: %prog assign-task task_id hostname') + usage += _('\n(Specify the --help global option for a list of other help options)') + parser = OptionParser(usage=usage) + parser.add_option('-f', '--force', action='store_true', default=False, + help=_('force to assign a non-free task')) + (options, args) = parser.parse_args(args) + + if len(args) != 2: + parser.error(_('please specify a task id and a hostname')) + else: + task_id = int(args[0]) + hostname = args[1] + + taskinfo = session.getTaskInfo(task_id, request=False) + if taskinfo is None: + raise koji.GenericError, "No such task: %s" % task_id + + hostinfo = session.getHost(hostname) + if hostinfo is None: + raise koji.GenericError, "No such host: %s" % hostname + + force = False + if options.force: + force = True + + activate_session(session) + if not session.hasPerm('admin'): + print "This action requires admin privileges" + return 1 + + ret = session.assignTask(task_id, hostname, force) + if ret: + print 'assigned task %d to host %s' % (task_id, hostname) + else: + print 'failed to assign task %d to host %s' %s (task_id, hostname) + + def handle_add_host(options, session, args): "[admin] Add a host" usage = _("usage: %prog add-host [options] hostname arch [arch2 ...]")