From d15adaf66e383a20461a2eeae49fa5d16dafa84e Mon Sep 17 00:00:00 2001 From: Loys Ollivier Date: Mon, 4 Dec 2017 14:54:43 +0100 Subject: utils/job-prereq.py: New tool to get LAVA job files name Add a new tool that outputs to the stdout the filenames needed by LAVA to run a test job. Required arguments are the machine type and the build type (e.g. CI, snapshots, release). Change-Id: I760fe59c6e04cf1e396c3772426fc8f6042f322c Signed-off-by: Loys Ollivier --- utils/job-prereq.py | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 utils/job-prereq.py (limited to 'utils') diff --git a/utils/job-prereq.py b/utils/job-prereq.py new file mode 100755 index 0000000..cb690b1 --- /dev/null +++ b/utils/job-prereq.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- + +import agljobtemplate +import argparse +import os +import yaml + +FILE_MAP = { + "kernel", + "dtb", + "initrd", + "nbdroot", +} + +# Mapping for qemu between command line QEMU args and LAVA yaml template file names +FILE_MAP_QEMU = { + "kernel": "kernel", + "initrd": "ramdisk", +} + + +def parse_cmdline(machines): + description = "Print to stdout the file names needed to create a LAVA job" + parser = argparse.ArgumentParser(description=description, + formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parser.add_argument('-v', action='version', version='%(prog)s 1.0') + parser.add_argument('--machine', action='store', choices=machines, + help="Machine to output the job prerequisites.", + required=True) + parser.add_argument('--dtb', action='store_true') + parser.add_argument('--kernel', action='store_true') + parser.add_argument('--initrd', action='store_true') + parser.add_argument('--nbdroot', action='store_true') + parser.add_argument('--build-type', action='store', dest='build_type', + nargs=3, + help="The type of build. It defines the URL to upload to.", + required=True) + + args = parser.parse_args() + return args + + +def main(): + templates_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../templates') + ajt = agljobtemplate.Agljobtemplate(templates_dir) + args = parse_cmdline(ajt.machines) + + job = ajt.render_job(url=args.build_type[0], + url_branch=args.build_type[1], + url_version=args.build_type[2], + machine=args.machine) + job_yaml = yaml.load(job) + if args.machine != "qemux86-64": + for key in FILE_MAP: + if getattr(args, key): + print job_yaml["actions"][0]["deploy"][key].get("url").split('/')[-1] + else: + for key in FILE_MAP_QEMU: + if getattr(args, key): + print job_yaml["actions"][0]["deploy"]["images"][FILE_MAP_QEMU[key]].get("url").split('/')[-1] + + +if __name__ == '__main__': + main() -- cgit 1.2.3-korg