@squiz/job-runner-lib 2.2.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/lib/domains/component/errors/JobError.spec.d.ts +1 -0
- package/lib/domains/job/ParsePartitionKey/ParsePartitionKey.d.ts +2 -2
- package/lib/domains/job/ParsePartitionKey/ParsePartitionKey.types.d.ts +5 -0
- package/lib/domains/job/S3Repository/JobDetailsRepository.d.ts +1 -2
- package/lib/domains/job/S3Repository/JobDetailsRepository.spec.d.ts +1 -1
- package/lib/domains/job/S3Repository/JobUploadsRepository.d.ts +16 -0
- package/lib/domains/job/{services/JobQueueService/JobQueueService.spec.d.ts → S3Repository/JobUploadsRepository.spec.d.ts} +1 -1
- package/lib/domains/job/S3Repository/S3RepositoryBase.d.ts +12 -5
- package/lib/domains/job/S3Repository/index.d.ts +2 -1
- package/lib/domains/job/constants/InjectTokens.d.ts +8 -0
- package/lib/domains/job/constants/JobExecutionStatus.constants.d.ts +2 -1
- package/lib/domains/job/constants/Repository.constants.d.ts +3 -3
- package/lib/domains/job/constants/RetryConfig.constants.d.ts +21 -0
- package/lib/domains/job/index.d.ts +6 -4
- package/lib/domains/job/manifest/JobManifestTypes.d.ts +7 -6
- package/lib/domains/job/model/Base/Base.d.ts +10 -5
- package/lib/domains/job/model/Job/Job.d.ts +9 -6
- package/lib/domains/job/model/JobContext/JobContext.d.ts +6 -5
- package/lib/domains/job/model/JobExecution/JobExecution.d.ts +64 -9
- package/lib/domains/job/model/LogPayload/LogPayload.d.ts +21 -12
- package/lib/domains/job/model/LogPayload/index.d.ts +1 -0
- package/lib/domains/job/model/LogPayload/mocks/LogPayload.mock.d.ts +6 -0
- package/lib/domains/job/repository/AbstractRepository.d.ts +20 -11
- package/lib/domains/job/repository/JobContextRepository/JobContextRepository.d.ts +6 -7
- package/lib/domains/job/repository/JobExecutionRepository/JobExecutionRepository.d.ts +7 -17
- package/lib/domains/job/repository/JobExecutionRepository/JobExecutionRepository.spec.d.ts +1 -1
- package/lib/domains/job/repository/JobExecutionRepository/utils/convertDynamoDbItemToJobExecution/convertDynamoDbItemToJobExecution.d.ts +2 -0
- package/lib/domains/job/repository/JobExecutionRepository/utils/index.d.ts +1 -0
- package/lib/domains/job/repository/JobManifestRepository/JobManifestRepository.d.ts +5 -6
- package/lib/domains/job/repository/JobRepository/JobRepository.d.ts +6 -7
- package/lib/domains/job/repository/MultiTenantJobExecutionRepository/MultiTenantJobExecutionRepository.d.ts +9 -0
- package/lib/domains/job/repository/MultiTenantJobExecutionRepository/MultiTenantJobExecutionRepository.spec.d.ts +1 -0
- package/lib/domains/job/repository/index.d.ts +1 -0
- package/lib/domains/job/services/JobContextService/JobContextService.d.ts +6 -3
- package/lib/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.d.ts +10 -6
- package/lib/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.defs.d.ts +1 -3
- package/lib/domains/job/services/JobManifestService/JobManifestService.d.ts +0 -1
- package/lib/domains/job/services/JobStartQueueService/JobStartQueueService.d.ts +17 -0
- package/lib/domains/job/services/JobStartQueueService/JobStartQueueService.defs.d.ts +25 -0
- package/lib/domains/job/services/JobUploadService/utils/manifestValidator.d.ts +1 -2
- package/lib/domains/job/services/index.d.ts +2 -1
- package/lib/domains/manifest/services/ManifestServiceForDev.d.ts +0 -3
- package/lib/index.d.ts +1 -0
- package/lib/index.js +13 -13
- package/lib/index.js.map +4 -4
- package/lib/jest-global-setup.d.ts +6 -1
- package/lib/mocks/mockIoc.d.ts +3 -3
- package/lib/utils/buildJobRunnerModule/buildJobRunnerModule.d.ts +2 -0
- package/lib/utils/buildJobRunnerModule/buildJobRunnerModule.types.d.ts +14 -0
- package/lib/utils/index.d.ts +2 -0
- package/package.json +12 -11
- package/src/domains/component/errors/JobError.spec.ts +30 -0
- package/src/domains/component/errors/JobError.ts +8 -1
- package/src/domains/job/ParsePartitionKey/ParsePartitionKey.spec.ts +17 -8
- package/src/domains/job/ParsePartitionKey/ParsePartitionKey.ts +13 -16
- package/src/domains/job/ParsePartitionKey/ParsePartitionKey.types.ts +6 -0
- package/src/domains/job/S3Repository/JobDetailsRepository.spec.ts +47 -31
- package/src/domains/job/S3Repository/JobDetailsRepository.ts +7 -8
- package/src/domains/job/S3Repository/JobUploadsRepository.spec.ts +66 -0
- package/src/domains/job/S3Repository/JobUploadsRepository.ts +35 -0
- package/src/domains/job/S3Repository/S3RepositoryBase.spec.ts +13 -19
- package/src/domains/job/S3Repository/S3RepositoryBase.ts +24 -9
- package/src/domains/job/S3Repository/index.ts +2 -1
- package/src/domains/job/constants/InjectTokens.ts +8 -0
- package/src/domains/job/constants/JobExecutionStatus.constants.ts +1 -0
- package/src/domains/job/constants/Repository.constants.ts +3 -3
- package/src/domains/job/constants/RetryConfig.constants.ts +29 -0
- package/src/domains/job/core/pagination/services/PaginationService.spec.ts +3 -5
- package/src/domains/job/index.ts +6 -4
- package/src/domains/job/manifest/JobManifestTypes.ts +8 -6
- package/src/domains/job/manifest/mocks/JobManifest.mock.ts +2 -2
- package/src/domains/job/manifest/mocks/JobManifestDto.mock.ts +3 -2
- package/src/domains/job/manifest/mocks/JobManifestRecord.mock.ts +4 -3
- package/src/domains/job/model/Base/Base.ts +11 -5
- package/src/domains/job/model/Job/Job.ts +11 -6
- package/src/domains/job/model/Job/mocks/Job.mock.ts +2 -2
- package/src/domains/job/model/Job/mocks/JobDto.mock.ts +3 -2
- package/src/domains/job/model/Job/mocks/JobRecord.mock.ts +3 -2
- package/src/domains/job/model/JobContext/JobContext.ts +7 -5
- package/src/domains/job/model/JobContext/mocks/JobContext.mock.ts +2 -2
- package/src/domains/job/model/JobContext/mocks/JobContextDto.mock.ts +3 -2
- package/src/domains/job/model/JobContext/mocks/JobContextRecord.mock.ts +3 -2
- package/src/domains/job/model/JobExecution/JobExecution.ts +74 -9
- package/src/domains/job/model/JobExecution/mocks/JobExecution.mock.ts +7 -4
- package/src/domains/job/model/JobExecution/mocks/JobExecutionDto.mock.ts +32 -16
- package/src/domains/job/model/JobExecution/mocks/JobExecutionRecord.mock.ts +10 -4
- package/src/domains/job/model/LogPayload/LogPayload.ts +32 -11
- package/src/domains/job/model/LogPayload/index.ts +1 -0
- package/src/domains/job/model/LogPayload/mocks/LogPayload.mock.ts +21 -0
- package/src/domains/job/repository/AbstractRepository.ts +91 -59
- package/src/domains/job/repository/JobContextRepository/JobContextRepository.spec.ts +39 -49
- package/src/domains/job/repository/JobContextRepository/JobContextRepository.ts +33 -21
- package/src/domains/job/repository/JobExecutionRepository/JobExecutionRepository.spec.ts +343 -169
- package/src/domains/job/repository/JobExecutionRepository/JobExecutionRepository.ts +112 -141
- package/src/domains/job/repository/JobExecutionRepository/utils/convertDynamoDbItemToJobExecution/convertDynamoDbItemToJobExecution.ts +22 -0
- package/src/domains/job/repository/JobExecutionRepository/utils/index.ts +1 -0
- package/src/domains/job/repository/JobManifestRepository/JobManifestRepository.spec.ts +23 -38
- package/src/domains/job/repository/JobManifestRepository/JobManifestRepository.ts +29 -36
- package/src/domains/job/repository/JobRepository/JobRepository.spec.ts +72 -80
- package/src/domains/job/repository/JobRepository/JobRepository.ts +66 -70
- package/src/domains/job/repository/MultiTenantJobExecutionRepository/MultiTenantJobExecutionRepository.spec.ts +60 -0
- package/src/domains/job/repository/MultiTenantJobExecutionRepository/MultiTenantJobExecutionRepository.ts +42 -0
- package/src/domains/job/repository/index.ts +1 -0
- package/src/domains/job/services/JobContextService/JobContextService.spec.ts +73 -39
- package/src/domains/job/services/JobContextService/JobContextService.ts +37 -6
- package/src/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.defs.ts +1 -3
- package/src/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.spec.ts +113 -31
- package/src/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.ts +101 -49
- package/src/domains/job/services/JobManifestService/JobManifestService.spec.ts +4 -41
- package/src/domains/job/services/JobManifestService/JobManifestService.ts +2 -8
- package/src/domains/job/services/JobStartQueueService/JobStartQueueService.defs.ts +27 -0
- package/src/domains/job/services/JobStartQueueService/JobStartQueueService.ts +42 -0
- package/src/domains/job/services/JobUploadService/JobUploadService.spec.ts +1 -1
- package/src/domains/job/services/JobUploadService/JobUploadService.ts +1 -1
- package/src/domains/job/services/JobUploadService/utils/manifestValidator.spec.ts +12 -25
- package/src/domains/job/services/JobUploadService/utils/manifestValidator.ts +2 -7
- package/src/domains/job/services/index.ts +2 -1
- package/src/domains/job/utils/SlackClient/SlackClient.spec.ts +0 -2
- package/src/domains/manifest/services/ManifestServiceForDev.spec.ts +1 -2
- package/src/domains/manifest/services/ManifestServiceForDev.ts +0 -4
- package/src/index.ts +1 -0
- package/src/jest-global-setup.ts +8 -4
- package/src/mocks/mockIoc.ts +18 -43
- package/src/utils/buildJobRunnerModule/buildJobRunnerModule.ts +81 -0
- package/src/utils/buildJobRunnerModule/buildJobRunnerModule.types.ts +13 -0
- package/src/utils/index.ts +2 -0
- package/lib/domains/job/S3Repository/S3Repository.d.ts +0 -15
- package/lib/domains/job/S3Repository/S3Repository.spec.d.ts +0 -5
- package/lib/domains/job/services/JobQueueService/JobQueueService.d.ts +0 -9
- package/lib/domains/job/services/JobQueueService/JobQueueService.defs.d.ts +0 -9
- package/src/custom-types.d.ts +0 -7
- package/src/domains/job/S3Repository/S3Repository.spec.ts +0 -50
- package/src/domains/job/S3Repository/S3Repository.ts +0 -27
- package/src/domains/job/services/JobQueueService/JobQueueService.defs.ts +0 -10
- package/src/domains/job/services/JobQueueService/JobQueueService.spec.ts +0 -190
- package/src/domains/job/services/JobQueueService/JobQueueService.ts +0 -60
|
@@ -3,13 +3,11 @@
|
|
|
3
3
|
* Copyright Squiz Australia Pty Ltd. All Rights Reserved.
|
|
4
4
|
*/
|
|
5
5
|
import { AttributeValue, DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
6
|
-
import { PaginationInfo } from '../../core/pagination
|
|
7
|
-
import {
|
|
8
|
-
import { CreateJobExecutionRequest, JobExecution, JobExecutionDto, ListJobExecutionParameters, UpdateJobExecutionParameters } from '../../model/JobExecution/JobExecution';
|
|
6
|
+
import { PaginationInfo, PaginationQueryResponse } from '../../core/pagination';
|
|
7
|
+
import { CreateJobExecutionRequest, JobExecution, JobExecutionDto, JobExecutionSk, ListJobExecutionParameters, UpdateJobExecutionParameters } from '../../model/JobExecution';
|
|
9
8
|
import { Repository } from '../AbstractRepository';
|
|
10
|
-
export declare class JobExecutionRepository extends Repository<JobExecution, JobExecutionDto> {
|
|
11
|
-
|
|
12
|
-
constructor(dynamoDbClient: DynamoDBClient);
|
|
9
|
+
export declare class JobExecutionRepository extends Repository<JobExecution, JobExecutionDto, JobExecutionSk> {
|
|
10
|
+
constructor(dynamoDbClient: DynamoDBClient, tableName: string, tenant?: string);
|
|
13
11
|
begin(createParams: CreateJobExecutionRequest): Promise<JobExecution>;
|
|
14
12
|
/**
|
|
15
13
|
* Get list of records from database.
|
|
@@ -25,28 +23,20 @@ export declare class JobExecutionRepository extends Repository<JobExecution, Job
|
|
|
25
23
|
* @memberof Repository
|
|
26
24
|
*/
|
|
27
25
|
getExecutions(paginationInfo: PaginationInfo, jobName: string): Promise<PaginationQueryResponse<JobExecution>>;
|
|
28
|
-
/**
|
|
29
|
-
* Get one record from database.
|
|
30
|
-
* @abstract
|
|
31
|
-
* @param {string} sk The sort key used to identify the record.
|
|
32
|
-
* @returns {Promise<JobExecution | null>} The retrieved record.
|
|
33
|
-
* @memberof Repository
|
|
34
|
-
*/
|
|
35
|
-
findOne(sk: string, jobName?: string): Promise<JobExecution | null>;
|
|
36
26
|
/**
|
|
37
27
|
* Update record in database.
|
|
38
28
|
* @param {string} sk The sort key used to identify the record.
|
|
39
29
|
* @param {Partial<JobExecution>} input The (partial) record to update.
|
|
40
|
-
* @param {string} jobName The name of the job used to identify the record as part of the pk.
|
|
41
30
|
* @param {UpdateItemCommandInput} options Additional options for the update command.
|
|
42
31
|
* @returns {Promise<JobExecution | null>} The updated record.
|
|
43
32
|
* @memberof JobExecutionRepository
|
|
44
33
|
*/
|
|
45
|
-
update(sk:
|
|
34
|
+
update(sk: JobExecutionSk, input: UpdateJobExecutionParameters, options?: {
|
|
46
35
|
ConditionExpression?: string;
|
|
47
36
|
ExpressionAttributeValues?: Record<string, AttributeValue>;
|
|
48
37
|
ExpressionAttributeNames?: Record<string, string>;
|
|
49
|
-
}): Promise<JobExecution
|
|
38
|
+
}): Promise<JobExecution>;
|
|
39
|
+
buildSk(sk: JobExecutionSk): string;
|
|
50
40
|
convertToDynamoDbItem(item: JobExecution): JobExecutionDto;
|
|
51
41
|
convertToItem(dbItem: JobExecutionDto): JobExecution;
|
|
52
42
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './convertDynamoDbItemToJobExecution/convertDynamoDbItemToJobExecution';
|
|
@@ -4,13 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
6
6
|
import { Repository } from '../AbstractRepository';
|
|
7
|
-
import { JobManifest } from '../../manifest
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
protected dynamoDbClient: DynamoDBClient;
|
|
11
|
-
constructor(dynamoDbClient: DynamoDBClient);
|
|
7
|
+
import { CreateJobManifestRequest, JobManifest, JobManifestDto, JobManifestSk, UpdateJobManifestRequest } from '../../manifest';
|
|
8
|
+
export declare class JobManifestRepository extends Repository<JobManifest, JobManifestDto, JobManifestSk> {
|
|
9
|
+
constructor(dynamoDbClient: DynamoDBClient, tableName: string, tenant: string);
|
|
12
10
|
create(input: CreateJobManifestRequest): Promise<JobManifest>;
|
|
13
|
-
update(sk:
|
|
11
|
+
update(sk: JobManifestSk, input: UpdateJobManifestRequest): Promise<JobManifest>;
|
|
14
12
|
convertToDynamoDbItem(item: JobManifest): JobManifestDto;
|
|
15
13
|
convertToItem(dbItem: JobManifestDto): JobManifest;
|
|
14
|
+
protected buildSk(sk: JobManifestSk): string;
|
|
16
15
|
}
|
|
@@ -3,13 +3,11 @@
|
|
|
3
3
|
* Copyright Squiz Australia Pty Ltd. All Rights Reserved.
|
|
4
4
|
*/
|
|
5
5
|
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
6
|
-
import { Repository } from '
|
|
7
|
-
import { CreateJobRequest, Job, JobDto, ListJobParameters } from '../../model/Job
|
|
8
|
-
import { PaginationInfo } from '../../core/pagination
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
protected dynamoDbClient: DynamoDBClient;
|
|
12
|
-
constructor(dynamoDbClient: DynamoDBClient);
|
|
6
|
+
import { Repository } from '../AbstractRepository';
|
|
7
|
+
import { CreateJobRequest, Job, JobDto, JobSk, ListJobParameters } from '../../model/Job';
|
|
8
|
+
import { PaginationInfo, PaginationQueryResponse } from '../../core/pagination';
|
|
9
|
+
export declare class JobRepository extends Repository<Job, JobDto, JobSk> {
|
|
10
|
+
constructor(dynamoDbClient: DynamoDBClient, tableName: string, tenant: string);
|
|
13
11
|
create(input: CreateJobRequest): Promise<Job>;
|
|
14
12
|
/**
|
|
15
13
|
* Get list of records from database.
|
|
@@ -27,4 +25,5 @@ export declare class JobRepository extends Repository<Job, JobDto> {
|
|
|
27
25
|
getJobs(paginationInfo: PaginationInfo): Promise<PaginationQueryResponse<Job>>;
|
|
28
26
|
convertToDynamoDbItem(item: Job): JobDto;
|
|
29
27
|
convertToItem(dbItem: JobDto): Job;
|
|
28
|
+
protected buildSk(sk: JobSk): string;
|
|
30
29
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import { JobExecutionStatus } from '../../constants/JobExecutionStatus.constants';
|
|
3
|
+
import { JobExecutionsByTenant } from '../../model/JobExecution';
|
|
4
|
+
export declare class MultiTenantJobExecutionRepository {
|
|
5
|
+
private readonly dynamoDbClient;
|
|
6
|
+
private readonly tableName;
|
|
7
|
+
constructor(dynamoDbClient: DynamoDBClient, tableName: string);
|
|
8
|
+
findByStatus(status: JobExecutionStatus): Promise<JobExecutionsByTenant>;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'aws-sdk-client-mock-jest';
|
|
@@ -2,4 +2,5 @@ export * from './JobContextRepository/JobContextRepository';
|
|
|
2
2
|
export * from './JobExecutionRepository/JobExecutionRepository';
|
|
3
3
|
export * from './JobManifestRepository/JobManifestRepository';
|
|
4
4
|
export * from './JobRepository/JobRepository';
|
|
5
|
+
export * from './MultiTenantJobExecutionRepository/MultiTenantJobExecutionRepository';
|
|
5
6
|
export * from './AbstractRepository';
|
|
@@ -5,15 +5,18 @@
|
|
|
5
5
|
import { JobContextRepository } from '../../repository';
|
|
6
6
|
import { PaginationFormattedResponse, PaginationInfo, PaginationService } from '../../core/pagination';
|
|
7
7
|
import { CreateJobContextRequest, JobContext, UpdateJobContextRequest } from '../../model/JobContext';
|
|
8
|
+
import { Logger } from '@squiz/optimization-logger';
|
|
8
9
|
export declare class JobContextService {
|
|
9
10
|
protected jobContextRepository: JobContextRepository;
|
|
10
11
|
protected paginationService: PaginationService<JobContext>;
|
|
11
|
-
|
|
12
|
+
protected logger: Logger;
|
|
13
|
+
constructor(jobContextRepository: JobContextRepository, paginationService: PaginationService<JobContext>, logger: Logger);
|
|
12
14
|
createJobContext(input: CreateJobContextRequest): Promise<JobContext>;
|
|
13
|
-
updateJobContext(
|
|
15
|
+
updateJobContext(contextName: string, input: UpdateJobContextRequest): Promise<JobContext | null>;
|
|
14
16
|
listAllJobContexts(): Promise<Array<JobContext>>;
|
|
15
17
|
listJobContexts(paginationInfo: PaginationInfo): Promise<PaginationFormattedResponse<JobContext>>;
|
|
16
18
|
private listContextsUpToLimit;
|
|
17
19
|
findJobContext(contextName: string): Promise<JobContext | null>;
|
|
18
|
-
deleteJobContext(
|
|
20
|
+
deleteJobContext(context: JobContext): Promise<void>;
|
|
21
|
+
private logContextAction;
|
|
19
22
|
}
|
|
@@ -3,19 +3,23 @@
|
|
|
3
3
|
* Copyright Squiz Australia Pty Ltd. All Rights Reserved.
|
|
4
4
|
*/
|
|
5
5
|
import { ECSClient } from '@aws-sdk/client-ecs';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { JobDetailsRepository, JobUploadsRepository } from '../../S3Repository';
|
|
7
|
+
import { JobExecution } from '../../model/JobExecution';
|
|
8
|
+
import { JobExecutionRepository } from '../../repository';
|
|
9
9
|
import { JobContextService } from '../JobContextService/JobContextService';
|
|
10
|
+
import { JobManifestService } from '../JobManifestService/JobManifestService';
|
|
11
|
+
import { HasReachedMaxTenantConcurrencyParams, RunJobTaskParams } from './JobExecutionTaskService.defs';
|
|
10
12
|
export declare class JobExecutionTaskService {
|
|
11
13
|
private readonly ecsClient;
|
|
12
14
|
private readonly jobManifestService;
|
|
13
15
|
private readonly jobContextService;
|
|
16
|
+
private readonly jobExecutionRepository;
|
|
14
17
|
private readonly jobDetailsRepository;
|
|
15
18
|
private readonly jobUploadRepository;
|
|
16
|
-
constructor(ecsClient: ECSClient, jobManifestService: JobManifestService, jobContextService: JobContextService, jobDetailsRepository: JobDetailsRepository, jobUploadRepository:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
constructor(ecsClient: ECSClient, jobManifestService: JobManifestService, jobContextService: JobContextService, jobExecutionRepository: JobExecutionRepository, jobDetailsRepository: JobDetailsRepository, jobUploadRepository: JobUploadsRepository);
|
|
20
|
+
hasReachedMaxTenantConcurrency(params: HasReachedMaxTenantConcurrencyParams): Promise<boolean>;
|
|
21
|
+
hasReachedMaxJobConcurrency(jobExecution: JobExecution): Promise<boolean>;
|
|
19
22
|
runJobExecutionTask(params: RunJobTaskParams): Promise<string | undefined>;
|
|
23
|
+
private computeJobExecutionClientToken;
|
|
20
24
|
private createJobDetailsFile;
|
|
21
25
|
}
|
|
@@ -2,9 +2,7 @@ import { JobExecution } from '../../model/JobExecution';
|
|
|
2
2
|
/**
|
|
3
3
|
* The required parameters for retrieving the number of running ECS tasks
|
|
4
4
|
*/
|
|
5
|
-
export interface
|
|
6
|
-
clusterArn: string;
|
|
7
|
-
runtimeTaskFamily: string;
|
|
5
|
+
export interface HasReachedMaxTenantConcurrencyParams {
|
|
8
6
|
maxTenantConcurrentTasks: number;
|
|
9
7
|
}
|
|
10
8
|
/**
|
|
@@ -11,5 +11,4 @@ export declare class JobManifestService {
|
|
|
11
11
|
updateJobManifest(name: string, version: string, input: UpdateJobManifestRequest): Promise<JobManifest | null>;
|
|
12
12
|
listAllJobManifests(): Promise<Array<JobManifest>>;
|
|
13
13
|
findJobManifest(name: string, version: string): Promise<JobManifest | null>;
|
|
14
|
-
deleteJobManifest(name: string): Promise<void>;
|
|
15
14
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Squiz Australia Pty Ltd. All Rights Reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { SQSClient } from '@aws-sdk/client-sqs';
|
|
6
|
+
import { SendJobStartMessageParams } from './JobStartQueueService.defs';
|
|
7
|
+
export declare class JobStartQueueService {
|
|
8
|
+
private readonly sqsClient;
|
|
9
|
+
private readonly queueUrl;
|
|
10
|
+
constructor(sqsClient: SQSClient, queueUrl: string);
|
|
11
|
+
/**
|
|
12
|
+
* Sends a job start message to the SQS queue.
|
|
13
|
+
* Uses a standard queue (not FIFO) to support DelaySeconds for retry backoff.
|
|
14
|
+
* Duplicate job starts are prevented by ECS RunTask clientToken.
|
|
15
|
+
*/
|
|
16
|
+
sendJobStartMessage(params: SendJobStartMessageParams): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Squiz Australia Pty Ltd. All Rights Reserved.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Message body for the job start queue.
|
|
7
|
+
*/
|
|
8
|
+
export interface JobStartMessage {
|
|
9
|
+
/** The tenant ID */
|
|
10
|
+
tenantId: string;
|
|
11
|
+
/** The job execution ID to start */
|
|
12
|
+
executionId: string;
|
|
13
|
+
/** The job name */
|
|
14
|
+
jobName: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parameters for sending a job start message.
|
|
18
|
+
*/
|
|
19
|
+
export interface SendJobStartMessageParams {
|
|
20
|
+
tenantId: string;
|
|
21
|
+
executionId: string;
|
|
22
|
+
jobName: string;
|
|
23
|
+
/** Delay in seconds before the message becomes visible (0-900, max 15 minutes) */
|
|
24
|
+
delaySeconds?: number;
|
|
25
|
+
}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* @license
|
|
3
3
|
* Copyright Squiz Australia Pty Ltd. All Rights Reserved.
|
|
4
4
|
*/
|
|
5
|
-
import { Logger } from '@squiz/dx-logger-lib';
|
|
6
5
|
import { AxiosInstance } from 'axios';
|
|
7
6
|
import { JobManifestV1 } from '../../../../manifest';
|
|
8
7
|
/**
|
|
@@ -12,4 +11,4 @@ import { JobManifestV1 } from '../../../../manifest';
|
|
|
12
11
|
* @param logger - Logger instance
|
|
13
12
|
* @returns The validated manifest
|
|
14
13
|
*/
|
|
15
|
-
export declare function getAndValidateManifest(apiClient: AxiosInstance, folderPath: string
|
|
14
|
+
export declare function getAndValidateManifest(apiClient: AxiosInstance, folderPath: string): Promise<JobManifestV1>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './JobContextService/JobContextService';
|
|
2
2
|
export * from './JobExecutionTaskService/JobExecutionTaskService';
|
|
3
3
|
export * from './JobManifestService/JobManifestService';
|
|
4
|
-
export * from './
|
|
4
|
+
export * from './JobStartQueueService/JobStartQueueService';
|
|
5
|
+
export * from './JobStartQueueService/JobStartQueueService.defs';
|
|
5
6
|
export * from './JobUploadService/JobUploadService';
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { JobManifestModel } from '../ManifestModel';
|
|
2
2
|
import { JobManifestV1 } from '../../job/manifest/JobManifestV1';
|
|
3
3
|
import { JsonValidationService } from '@squiz/dx-json-schema-lib';
|
|
4
|
-
import { Logger } from '@squiz/dx-logger-lib';
|
|
5
4
|
export declare class ManifestServiceForDev {
|
|
6
|
-
protected logger: Logger;
|
|
7
5
|
protected jobValidationService: JsonValidationService;
|
|
8
|
-
constructor(logger: Logger);
|
|
9
6
|
protected getJobManifest(manifestModel: JobManifestModel, manifestPath: string): JobManifestV1;
|
|
10
7
|
readJobManifest(manifestPath: string): Promise<JobManifestV1>;
|
|
11
8
|
protected assertJobManifestMeetsSchemaVersion(manifest: JobManifestModel, schemaVersionRegex: RegExp): Promise<void>;
|
package/lib/index.d.ts
CHANGED