ci/lava: Filter log lines from LAVA return

Start to differentiate between the different types of LAVA log message;
the only visible change right now is that we make warnings and errors
bold and red to match bare-metal, but it comes in useful later as we
will use the results markers to watch us step through the different
stages of job execution.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>
This commit is contained in:
Guilherme Gallo 2022-04-14 14:58:55 -03:00 committed by Marge Bot
parent 84a5ea4228
commit 43d8ed840e
1 changed files with 22 additions and 1 deletions

View File

@ -297,6 +297,26 @@ def show_job_data(job):
print("{}\t: {}".format(field, value))
def parse_lava_lines(new_lines) -> list[str]:
parsed_lines: list[str] = []
for line in new_lines:
if line["lvl"] in ["results", "feedback"]:
continue
elif line["lvl"] in ["warning", "error"]:
prefix = "\x1b[1;38;5;197m"
suffix = "\x1b[0m"
elif line["lvl"] == "input":
prefix = "$ "
suffix = ""
else:
prefix = ""
suffix = ""
line = f'{prefix}{line["msg"]}{suffix}'
parsed_lines.append(line)
return parsed_lines
def follow_job_execution(job):
try:
job.submit()
@ -326,8 +346,9 @@ def follow_job_execution(job):
time.sleep(LOG_POLLING_TIME_SEC)
new_lines = job.get_logs()
parsed_lines = parse_lava_lines(new_lines)
for line in new_lines:
for line in parsed_lines:
print(line)
show_job_data(job)