Coverage for src/container_collection/batch/submit_batch_job.py: 100%
12 statements
« prev ^ index » next coverage.py v7.1.0, created at 2024-09-25 18:23 +0000
« prev ^ index » next coverage.py v7.1.0, created at 2024-09-25 18:23 +0000
1from __future__ import annotations
3import boto3
6def submit_batch_job(
7 name: str,
8 job_definition_arn: str,
9 user: str,
10 queue: str,
11 size: int,
12 **kwargs: list | str | int | bool | dict,
13) -> list[str]:
14 """
15 Submit AWS Batch job.
17 Parameters
18 ----------
19 name
20 Job name.
21 job_definition_arn
22 Job definition ARN.
23 user
24 User name prefix for job name.
25 queue
26 Job queue.
27 size
28 Number of jobs in array.
29 **kwargs
30 Additional parameters for job submission. The keyword arguments are
31 passed to `boto3` Batch client method `submit_job`.
34 Returns
35 -------
36 :
37 List of job ARNs.
38 """
40 default_job_submission = {
41 "jobName": f"{user}_{name}",
42 "jobQueue": queue,
43 "jobDefinition": job_definition_arn,
44 }
46 if size > 1:
47 default_job_submission["arrayProperties"] = {"size": size} # type: ignore[assignment]
49 client = boto3.client("batch")
50 job_submission = default_job_submission | kwargs
51 response = client.submit_job(**job_submission)
53 if size > 1:
54 return [f"{response['jobArn']}:{i}" for i in range(size)]
56 return [response["jobArn"]]