diff options
author | Milosz Wasilewski <milosz.wasilewski@linaro.org> | 2017-05-24 22:20:11 +0100 |
---|---|---|
committer | Fathi Boudra <fathi.boudra@linaro.org> | 2017-05-25 10:02:20 +0300 |
commit | 81f66626a2564c4d32aa342c5e2e1cbc279e0733 (patch) | |
tree | 0c88d21e4e91fcac920847ba2fa9f43be040bda5 /openembedded-lkft | |
parent | 42062dee03e80feb8e40be61ea11f1f941d80e57 (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.py | 117 |
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() |