From b9a7516943efdd3f9a10a4307969fa65f12f9514 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Mon, 8 May 2023 16:50:35 -0400 Subject: [PATCH] basic scheduler log cli --- cli/koji_cli/commands.py | 50 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/cli/koji_cli/commands.py b/cli/koji_cli/commands.py index 770083bb..a4619270 100644 --- a/cli/koji_cli/commands.py +++ b/cli/koji_cli/commands.py @@ -7955,3 +7955,53 @@ def anon_handle_scheduler_info(goptions, session, args): print(host_data[0]['data']) else: print('-') + + +def handle_scheduler_logs(goptions, session, args): + "[monitor] Query scheduler logs" + usage = "usage: %prog scheduler-logs " + parser = OptionParser(usage=get_usage_str(usage)) + parser.add_option("--task", type="int", action="store", + help="Filter by task ID") + parser.add_option("--host", type="str", action="store", + help="Filter by host (name/ID)") + parser.add_option("--from", type="float", action="store", dest="from_ts", + help="Logs from given timestamp") + parser.add_option("--to", type="float", action="store", dest="to_ts", + help="Logs until given timestamp (included)") + (options, args) = parser.parse_args(args) + if len(args) != 0: + parser.error("There are no arguments for this command") + + kwargs = {} + clauses = [] + if options.task: + clauses.append(['task_id', options.task]) + if options.host: + try: + host_id = int(options.host) + except ValueError: + host_id = session.getHost(options.host)['id'] + clauses.append(['host_id', host_id]) + if options.from_ts: + clauses.append(['msg_ts', '>=', options.from_ts]) + if options.to_ts: + clauses.append(['msg_ts', '<', options.to_ts]) + + logs = session.scheduler.getLogMessages(clauses, fields=('task_id', 'host_id', 'host_name', 'msg_ts', 'msg')) + for log in logs: + log['time'] = time.asctime(time.localtime(log['msg_ts'])) + + mask = ("%(task_id)s\t%(host_name)s\t%(time)s\t%(msg)s") + if not goptions.quiet: + h = mask % { + 'task_id': 'Task', + 'host_name': 'Host', + 'time': 'Time', + 'msg': 'Message', + } + print(h) + print('-' * len(h)) + + for log in logs: + print(mask % log)