aboutsummaryrefslogtreecommitdiff
path: root/lava-v2-callback.py
diff options
context:
space:
mode:
authorGuillaume Tucker <guillaume.tucker@collabora.com>2017-12-13 10:35:37 +0000
committerGuillaume Tucker <guillaume.tucker@collabora.com>2018-02-23 09:46:08 +0000
commita8bb51ba4a21097641a3d8eb3006b0a42988483f (patch)
tree250ed3383e92b991df9eaa074857f5c499cb1701 /lava-v2-callback.py
parent456874ca2ac6b7ea8fec7659fadef9b6af56678d (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-xlava-v2-callback.py67
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)