aboutsummaryrefslogtreecommitdiff
path: root/lkft-ssh-testrunner
diff options
context:
space:
mode:
authorMilosz Wasilewski <milosz.wasilewski@linaro.org>2017-08-03 16:10:12 +0100
committerMilosz Wasilewski <milosz.wasilewski@linaro.org>2017-08-03 16:10:12 +0100
commitba470a624ae1e207d25d40fe9e21c8c2af1ac464 (patch)
tree7b7d89d5798092b07ea5425d374c1c9294d180b5 /lkft-ssh-testrunner
parentd776568ae2ba45029d841637e5f4b05b86a51183 (diff)
lkft-ssh-testrunner: use safe_substitute to avoid template errors
Change-Id: Iae2e0ade8b2d7bb894bebc81fc38d8b7fac346b5 Signed-off-by: Milosz Wasilewski <milosz.wasilewski@linaro.org>
Diffstat (limited to 'lkft-ssh-testrunner')
-rw-r--r--lkft-ssh-testrunner/submit_for_testing.py133
1 files changed, 133 insertions, 0 deletions
diff --git a/lkft-ssh-testrunner/submit_for_testing.py b/lkft-ssh-testrunner/submit_for_testing.py
new file mode 100644
index 00000000..09ae0ada
--- /dev/null
+++ b/lkft-ssh-testrunner/submit_for_testing.py
@@ -0,0 +1,133 @@
+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("--env-prefix",
+ help="Prefix for the environment name",
+ dest="env_prefix",
+ default="")
+ 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-path",
+ help="Path to LAVA job templates",
+ dest="template_path",
+ default=template_base_path)
+ parser.add_argument("--template-names",
+ help="list of the templates to submit for testing",
+ dest="template_names",
+ nargs="+",
+ default=["template.yaml"])
+ parser.add_argument("--quiet",
+ help="Only output the final qa-reports URL",
+ action='store_true',
+ dest="quiet")
+
+ args, _ = parser.parse_known_args()
+
+ if args.qa_token is None:
+ print "QA_REPORTS_TOKEN is missing"
+ sys.exit(1)
+
+ 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.env_prefix + 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" % (args.template_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)
+ print("using template: %s" % template_file_name)
+ lava_job = template.safe_substitute(os.environ)
+ if not args.quiet:
+ print(lava_job)
+ try:
+ data = {
+ "definition": lava_job,
+ "backend": urlsplit(lava_url_base).netloc # qa-reports backends are named as lava instances
+ }
+ print("Submit to: %s" % qa_server_api)
+ 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 requests.exceptions.RequestException as err:
+ print("QA Reports submission failed")
+ if not args.quiet:
+ print("offending job definition:")
+ print(lava_job)
+
+
+if __name__ == "__main__":
+ main()