aboutsummaryrefslogtreecommitdiff
path: root/openembedded-lkft
diff options
context:
space:
mode:
authorMilosz Wasilewski <milosz.wasilewski@linaro.org>2017-05-24 22:20:11 +0100
committerFathi Boudra <fathi.boudra@linaro.org>2017-05-25 10:02:20 +0300
commit81f66626a2564c4d32aa342c5e2e1cbc279e0733 (patch)
tree0c88d21e4e91fcac920847ba2fa9f43be040bda5 /openembedded-lkft
parent42062dee03e80feb8e40be61ea11f1f941d80e57 (diff)
openembedded-lkft-*: route LAVA submissions via qa-reports
Test job submissions will also be routed via qa-reports for report generation and tracking. Change-Id: Id2ca052114572f28b1e6b87f13196dec7deb09d3 Signed-off-by: Milosz Wasilewski <milosz.wasilewski@linaro.org>
Diffstat (limited to 'openembedded-lkft')
-rw-r--r--openembedded-lkft/submit_for_testing.py117
1 files changed, 117 insertions, 0 deletions
diff --git a/openembedded-lkft/submit_for_testing.py b/openembedded-lkft/submit_for_testing.py
new file mode 100644
index 0000000000..93718598e5
--- /dev/null
+++ b/openembedded-lkft/submit_for_testing.py
@@ -0,0 +1,117 @@
+import argparse
+import os
+import requests
+import sys
+from string import Template
+
+try:
+ from urllib.parse import urlsplit
+except ImportError:
+ from urlparse import urlsplit
+
+
+# Templates base path
+template_base_path = 'configs/openembedded-lkft/lava-job-definitions'
+# Snapshots base URL
+snapshots_url = 'https://snapshots.linaro.org/openembedded/lkft'
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--device-type",
+ help="Device type in LAVA",
+ dest="device_type",
+ required=True)
+ parser.add_argument("--build-number",
+ help="Build number",
+ dest="build_number",
+ required=True)
+ parser.add_argument("--qa-server-team",
+ help="Team in QA Reports service",
+ dest="qa_server_team",
+ required=True)
+ parser.add_argument("--qa-server-project",
+ help="Project in QA Reports service",
+ dest="qa_server_project",
+ required=True)
+ parser.add_argument("--qa-server",
+ help="QA Reports server",
+ dest="qa_server",
+ default="https://qa-reports.linaro.org")
+ parser.add_argument("--qa-token",
+ help="QA Reports token",
+ dest="qa_token",
+ default=os.environ.get('QA_REPORTS_TOKEN'))
+ parser.add_argument("--lava-server",
+ help="LAVA server URL",
+ dest="lava_server",
+ required=True)
+ parser.add_argument("--git-commit",
+ help="git commit ID",
+ dest="git_commit",
+ required=True)
+ parser.add_argument("--template-names",
+ help="list of the templates to submit for testing",
+ dest="template_names",
+ nargs="+",
+ default=["template.yaml"])
+
+ args = parser.parse_args()
+
+
+ print(os.environ)
+ qa_server_base = args.qa_server
+ if not (qa_server_base.startswith("http://") or qa_server_base.startswith("https://")):
+ qa_server_base = "https://" + qa_server_base
+ qa_server_team = args.qa_server_team
+ qa_server_project = args.qa_server_project
+ qa_server_build = args.git_commit
+ qa_server_env = args.device_type
+ qa_server_api = "%s/api/submitjob/%s/%s/%s/%s" % (
+ qa_server_base,
+ qa_server_team,
+ qa_server_project,
+ qa_server_build,
+ qa_server_env)
+ lava_server = args.lava_server
+ if not (lava_server.startswith("http://") or lava_server.startswith("https://")):
+ lava_server = "https://" + lava_server
+ lava_url_base = "%s://%s/" % (urlsplit(lava_server).scheme, urlsplit(lava_server).netloc)
+
+ headers = {
+ "Auth-Token": args.qa_token
+ }
+ for test in args.template_names:
+ template_file_name = "%s/%s/%s" % (template_base_path, args.device_type, test)
+ test_template = None
+ if os.path.exists(template_file_name):
+ test_template_file = open(template_file_name, "r")
+ test_template = test_template_file.read()
+ test_template_file.close()
+ else:
+ sys.exit(1)
+
+ template = Template(test_template)
+ lava_job = template.substitute(os.environ)
+ print(lava_job)
+ try:
+ data = {
+ "definition": lava_job,
+ "backend": urlsplit(lava_url_base).netloc # qa-reports backends are named as lava instances
+ }
+ results = requests.post(qa_server_api, data=data, headers=headers)
+ if results.status_code < 300:
+ print("%s/testjob/%s" % (qa_server_base, results.text))
+ else:
+ print(results.status_code)
+ print(results.text)
+ except xmlrpclib.ProtocolError as err:
+ print("QA Reports submission failed")
+ print("offending job definition:")
+ print(lava_job)
+ print("Error code: %d" % err.errcode)
+ print("Error message: %s" % err.errmsg)
+
+
+if __name__ == "__main__":
+ main()