diff options
author | Guillaume Tucker <guillaume.tucker@collabora.com> | 2017-12-13 10:35:37 +0000 |
---|---|---|
committer | Guillaume Tucker <guillaume.tucker@collabora.com> | 2018-02-23 09:46:08 +0000 |
commit | a8bb51ba4a21097641a3d8eb3006b0a42988483f (patch) | |
tree | 250ed3383e92b991df9eaa074857f5c499cb1701 /lava-v2-callback.py | |
parent | 456874ca2ac6b7ea8fec7659fadef9b6af56678d (diff) |
add lava-v2-callback.py to parse LAVA v2 callback data
Add lava-v2-callback.py to parse the JSON data sent in LAVA v2
callback. This is to be used primarily with automated bisection to
determine whether a LAVA job passed or failed.
This is intended to replace lava-v2-get-boot-results.py to stop
polling the backend for boot results and stop cluttering the database
with single boot results from bisection jobs.
Signed-off-by: Guillaume Tucker <guillaume.tucker@collabora.com>
Diffstat (limited to 'lava-v2-callback.py')
-rwxr-xr-x | lava-v2-callback.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/lava-v2-callback.py b/lava-v2-callback.py new file mode 100755 index 0000000..91ef27d --- /dev/null +++ b/lava-v2-callback.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2018 Collabora Limited +# Author: Guillaume Tucker <guillaume.tucker@collabora.com> +# +# This module is free software; you can redistribute it and/or modify it under +# the terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# This library is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +import argparse +import json +import sys + +# copied from lava-server/lava_scheduler_app/models.py +SUBMITTED = 0 +RUNNING = 1 +COMPLETE = 2 +INCOMPLETE = 3 +CANCELED = 4 +CANCELING = 5 + + +def main(args): + with open(args.json) as json_file: + cb = json.load(json_file) + + if args.token and cb['token'] != args.token: + print("Token mismatch") + sys.exit(1) + + job_status = cb['status'] + + lava_job_result = { + COMPLETE: "PASS", + INCOMPLETE: "FAIL", + CANCELED: "UNKNOWN", + CANCELING: "UNKNOWN", + } + + print("Status: {}".format(lava_job_result[job_status])) + + status_map = { + COMPLETE: 0, + INCOMPLETE: 2, + } + + sys.exit(status_map.get(job_status, 1)) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser("Parse LAVA v2 callback data") + parser.add_argument("json", + help="Path to the JSON data file") + parser.add_argument("--token", + help="Secret authorization token") + args = parser.parse_args() + main(args) |