blob: ddf349c72a65378388ec6bcf2a6d73b7a7da8e56 [file] [log] [blame]
Dean Bircha6ede7e2020-03-13 14:00:33 +00001#!/usr/bin/env python3
2
3from __future__ import print_function
4
5"""
6Script for submitting multiple LAVA definitions
7"""
8
9__copyright__ = """
10/*
Xinyu Zhangc918b6e2022-10-08 17:13:17 +080011 * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
Dean Bircha6ede7e2020-03-13 14:00:33 +000012 *
13 * SPDX-License-Identifier: BSD-3-Clause
14 *
15 */
16 """
17
Dean Bircha6ede7e2020-03-13 14:00:33 +000018import glob
Dean Bircha6ede7e2020-03-13 14:00:33 +000019import argparse
Xinyu Zhang7fefe5b2023-02-08 11:35:49 +080020import logging
Xinyu Zhangc918b6e2022-10-08 17:13:17 +080021from lava_helper import test_lava_dispatch_credentials
Dean Bircha6ede7e2020-03-13 14:00:33 +000022
Dean Bircha6ede7e2020-03-13 14:00:33 +000023
Xinyu Zhang7fefe5b2023-02-08 11:35:49 +080024_log = logging.getLogger("lavaci")
25
26
Xinyu Zhangf2b7cbf2021-05-18 20:17:34 +080027def list_files_from_dir(user_args, job_dir=""):
28 if job_dir == "":
29 job_dir = user_args.job_dir
Dean Bircha6ede7e2020-03-13 14:00:33 +000030 file_list = []
Xinyu Zhang7fefe5b2023-02-08 11:35:49 +080031 resubmit_log = ""
32 if job_dir == "failed_jobs":
33 resubmit_log = "Resubmit for double check."
Xinyu Zhangf2b7cbf2021-05-18 20:17:34 +080034 for filename in glob.iglob(job_dir + '**/*.yaml', recursive=True):
Dean Bircha6ede7e2020-03-13 14:00:33 +000035 file_list.append(filename)
Xinyu Zhang7fefe5b2023-02-08 11:35:49 +080036 _log.info("Found job {file}. {extra_log}".format(file=filename, extra_log=resubmit_log))
Dean Bircha6ede7e2020-03-13 14:00:33 +000037 return file_list
38
Xinyu Zhangc918b6e2022-10-08 17:13:17 +080039
40def submit_lava_jobs(user_args, job_dir=""):
Nicola Mazzucato935f9cb2025-05-16 17:21:07 +010041 """ Submit a job to LAVA backend, block until it is completed, and
Dean Bircha6ede7e2020-03-13 14:00:33 +000042 fetch the results files if successful. If not, calls sys exit with 1
43 return code """
44
Xinyu Zhangf2b7cbf2021-05-18 20:17:34 +080045 if job_dir == "":
46 job_dir = user_args.job_dir
47
Dean Bircha6ede7e2020-03-13 14:00:33 +000048 lava = test_lava_dispatch_credentials(user_args)
Xinyu Zhangf2b7cbf2021-05-18 20:17:34 +080049 file_list = list_files_from_dir(user_args, job_dir)
Dean Bircha6ede7e2020-03-13 14:00:33 +000050 job_id_list = []
51 for job_file in file_list:
52 job_id, job_url = lava.submit_job(job_file)
53
54 # The reason of failure will be reported to user by LAVA_RPC_connector
55 if job_id is None and job_url is None:
Xinyu Zhang7fefe5b2023-02-08 11:35:49 +080056 _log.info("Job failed")
Dean Bircha6ede7e2020-03-13 14:00:33 +000057 else:
Xinyu Zhang7fefe5b2023-02-08 11:35:49 +080058 _log.info("Job submitted at: " + job_url)
Dean Bircha6ede7e2020-03-13 14:00:33 +000059 job_id_list.append(job_id)
60
Xinyu Zhangf2b7cbf2021-05-18 20:17:34 +080061 return job_id_list
Dean Bircha6ede7e2020-03-13 14:00:33 +000062
Xinyu Zhangc918b6e2022-10-08 17:13:17 +080063
Dean Bircha6ede7e2020-03-13 14:00:33 +000064def main(user_args):
Xinyu Zhangc918b6e2022-10-08 17:13:17 +080065 job_id_list = submit_lava_jobs(user_args)
Xinyu Zhangf2b7cbf2021-05-18 20:17:34 +080066 print("JOBS: {}".format(",".join(str(x) for x in job_id_list)))
Dean Bircha6ede7e2020-03-13 14:00:33 +000067
68
69def get_cmd_args():
70 """ Parse command line arguments """
71
72 # Parse command line arguments to override config
73 parser = argparse.ArgumentParser(description="Lava Create Jobs")
74 cmdargs = parser.add_argument_group("Create LAVA Jobs")
75
76 # Configuration control
77 cmdargs.add_argument(
78 "--lava-url", dest="lava_url", action="store", help="LAVA lab URL (without RPC2)"
79 )
80 cmdargs.add_argument(
81 "--job-dir", dest="job_dir", action="store", help="LAVA jobs directory"
82 )
83 cmdargs.add_argument(
84 "--lava-token", dest="lava_token", action="store", help="LAVA auth token"
85 )
86 cmdargs.add_argument(
87 "--lava-user", dest="lava_user", action="store", help="LAVA username"
88 )
89 cmdargs.add_argument(
90 "--use-env", dest="token_from_env", action="store_true", default=False, help="LAVA username"
91 )
92 cmdargs.add_argument(
93 "--lava-timeout", dest="dispatch_timeout", action="store", default=3600, help="LAVA username"
94 )
95 return parser.parse_args()
96
97
98if __name__ == "__main__":
99 main(get_cmd_args())