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

1from __future__ import annotations 

2 

3import boto3 

4 

5 

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. 

16 

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`. 

32 

33 

34 Returns 

35 ------- 

36 : 

37 List of job ARNs. 

38 """ 

39 

40 default_job_submission = { 

41 "jobName": f"{user}_{name}", 

42 "jobQueue": queue, 

43 "jobDefinition": job_definition_arn, 

44 } 

45 

46 if size > 1: 

47 default_job_submission["arrayProperties"] = {"size": size} # type: ignore[assignment] 

48 

49 client = boto3.client("batch") 

50 job_submission = default_job_submission | kwargs 

51 response = client.submit_job(**job_submission) 

52 

53 if size > 1: 

54 return [f"{response['jobArn']}:{i}" for i in range(size)] 

55 

56 return [response["jobArn"]]