Skip to content

Commit 48b3474

Browse files
committed
Initialise rnasum
1 parent 8b7628d commit 48b3474

File tree

20 files changed

+1766
-2
lines changed

20 files changed

+1766
-2
lines changed

config/config.ts

+6
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ import {
4343
getUmccriseIcav2PipelineManagerStackProps,
4444
getUmccriseIcav2PipelineTableStackProps,
4545
} from './stacks/umccrisePipelineManager';
46+
import {
47+
getRnasumIcav2PipelineManagerStackProps,
48+
getRnasumIcav2PipelineTableStackProps,
49+
} from './stacks/rnasumPipelineManager';
4650

4751
interface EnvironmentConfig {
4852
name: string;
@@ -75,6 +79,7 @@ export const getEnvironmentConfig = (stage: AppStage): EnvironmentConfig | null
7579
tnIcav2PipelineTableStackProps: getTnIcav2PipelineTableStackProps(),
7680
wtsIcav2PipelineTableStackProps: getWtsIcav2PipelineTableStackProps(),
7781
umccriseIcav2PipelineTableStackProps: getUmccriseIcav2PipelineTableStackProps(),
82+
rnasumIcav2PipelineTableStackProps: getRnasumIcav2PipelineTableStackProps(),
7883
BclConvertTableStackProps: getBclConvertManagerTableStackProps(stage),
7984
stackyStatefulTablesStackProps: getStatefulGlueStackProps(),
8085
},
@@ -91,6 +96,7 @@ export const getEnvironmentConfig = (stage: AppStage): EnvironmentConfig | null
9196
tnIcav2PipelineManagerStackProps: getTnIcav2PipelineManagerStackProps(stage),
9297
wtsIcav2PipelineManagerStackProps: getWtsIcav2PipelineManagerStackProps(stage),
9398
umccriseIcav2PipelineManagerStackProps: getUmccriseIcav2PipelineManagerStackProps(stage),
99+
rnasumIcav2PipelineManagerStackProps: getRnasumIcav2PipelineManagerStackProps(stage),
94100
eventSchemaStackProps: getEventSchemaStackProps(),
95101
dataSchemaStackProps: getDataSchemaStackProps(),
96102
bclConvertManagerStackProps: getBclConvertManagerStackProps(stage),

config/constants.ts

+34
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,39 @@ export const umccriseIcav2EventDetailType = 'WorkflowRunStateChange';
446446
export const umccriseStateMachinePrefix = 'umccriseSfn';
447447
export const umccriseDefaultGenomeVersion = '202303';
448448

449+
/*
450+
Resources generated by the Rnasum Stateful Stack
451+
*/
452+
export const rnasumIcav2PipelineManagerSSMRoot = '/orcabus/rnasum';
453+
454+
/*
455+
Rnasum Stateful stack
456+
*/
457+
export const rnasumIcav2PipelineManagerDynamodbTableName = 'rnasumICAv2AnalysesDynamoDBTable';
458+
export const rnasumDynamoDbTableSSMName = path.join(
459+
rnasumIcav2PipelineManagerSSMRoot,
460+
'dynamodb_table_name'
461+
);
462+
export const rnasumDynamoDbTableSSMArn = path.join(
463+
rnasumIcav2PipelineManagerSSMRoot,
464+
'dynamodb_table_arn'
465+
);
466+
467+
/*
468+
UMCCRise Stateless stack
469+
*/
470+
471+
// Deployed in dev/stg/prod
472+
export const rnasumIcav2PipelineIdSSMParameterPath = '/icav2/umccr-prod/rnasum_1.0.0_pipeline_id'; // bd6e5690-3ccf-4ac4-997d-59462f852f65
473+
export const rnasumIcav2PipelineWorkflowType = 'rnasum';
474+
export const rnasumIcav2PipelineWorkflowTypeVersion = '2.3.1';
475+
export const rnasumIcav2ServiceVersion = '2024.07.01';
476+
export const rnasumIcav2ReadyEventSource = 'orcabus.workflowmanager';
477+
export const rnasumIcav2EventSource = 'orcabus.rnasum';
478+
export const rnasumIcav2EventDetailType = 'WorkflowRunStateChange';
479+
export const rnasumStateMachinePrefix = 'rnasumSfn';
480+
export const rnasumDefaultDatasetVersion = 'PANCAN';
481+
449482
// Mock Stack
450483
export const mockEventBusName = eventBusName;
451484
export const mockInstrumentRunTableName = 'stacky-instrument-run-table';
@@ -455,6 +488,7 @@ export const mockWgtsQcGlueTableName = 'stacky-wgts-qc-glue-table';
455488
export const mockTnGlueTableName = 'stacky-tn-glue-table';
456489
export const mockWtsGlueTableName = 'stacky-wts-glue-table';
457490
export const mockUmccriseGlueTableName = 'stacky-umccrise-glue-table';
491+
export const mockRnasumGlueTableName = 'stacky-rnasum-glue-table';
458492
export const mockWorkflowManagerTableName = 'stacky-workflow-manager-table';
459493

460494
// {
+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import {
2+
AppStage,
3+
eventBusName,
4+
icaEventPipeStackName,
5+
icav2AccessTokenSecretName,
6+
dragenIcav2ReferenceUriMappingSSMParameterPath,
7+
rnasumIcav2PipelineIdSSMParameterPath,
8+
rnasumIcav2PipelineManagerDynamodbTableName,
9+
rnasumIcav2PipelineWorkflowType,
10+
rnasumIcav2PipelineWorkflowTypeVersion,
11+
rnasumIcav2ServiceVersion,
12+
rnasumIcav2ReadyEventSource,
13+
rnasumIcav2EventSource,
14+
rnasumIcav2EventDetailType,
15+
rnasumStateMachinePrefix,
16+
rnasumDynamoDbTableSSMArn,
17+
rnasumDynamoDbTableSSMName,
18+
rnasumDefaultDatasetVersion,
19+
} from '../constants';
20+
import { RnasumIcav2PipelineManagerConfig } from '../../lib/workload/stateless/stacks/rnasum-pipeline-manager/deploy';
21+
import { RnasumIcav2PipelineTableConfig } from '../../lib/workload/stateful/stacks/rnasum-pipeline-dynamo-db/deploy/stack';
22+
23+
// Stateful
24+
export const getRnasumIcav2PipelineTableStackProps = (): RnasumIcav2PipelineTableConfig => {
25+
return {
26+
rnasumIcav2DynamodbTableArnSsmParameterPath: rnasumDynamoDbTableSSMArn,
27+
rnasumIcav2DynamodbTableNameSsmParameterPath: rnasumDynamoDbTableSSMName,
28+
dynamodbTableName: rnasumIcav2PipelineManagerDynamodbTableName,
29+
};
30+
};
31+
32+
// Stateless
33+
export const getRnasumIcav2PipelineManagerStackProps = (
34+
stage: AppStage
35+
): RnasumIcav2PipelineManagerConfig => {
36+
return {
37+
/* ICAv2 Pipeline analysis essentials */
38+
icav2TokenSecretId: icav2AccessTokenSecretName[stage], // "/icav2/umccr-prod/service-production-jwt-token-secret-arn"
39+
pipelineIdSsmPath: rnasumIcav2PipelineIdSSMParameterPath, // List of parameters the workflow session state machine will need access to
40+
/* Table to store analyis metadata */
41+
dynamodbTableName: rnasumIcav2PipelineManagerDynamodbTableName,
42+
/* Internal and external buses */
43+
eventBusName: eventBusName,
44+
icaEventPipeName: `${icaEventPipeStackName}Pipe`,
45+
/* Event handling */
46+
workflowType: rnasumIcav2PipelineWorkflowType,
47+
workflowVersion: rnasumIcav2PipelineWorkflowTypeVersion,
48+
serviceVersion: rnasumIcav2ServiceVersion,
49+
triggerLaunchSource: rnasumIcav2ReadyEventSource,
50+
internalEventSource: rnasumIcav2EventSource,
51+
detailType: rnasumIcav2EventDetailType,
52+
/* Names for statemachines */
53+
stateMachinePrefix: rnasumStateMachinePrefix,
54+
/* Standard Parameters */
55+
defaultDatasetVersion: rnasumDefaultDatasetVersion,
56+
};
57+
};

config/stacks/stackyMcStackFace.ts

+3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
mockTnGlueTableName,
1616
mockWtsGlueTableName,
1717
mockUmccriseGlueTableName,
18+
mockRnasumGlueTableName,
1819
} from '../constants';
1920
import { GlueStackConfig } from '../../lib/workload/stateless/stacks/stacky-mcstackface/glue-constructs';
2021
import { StackyStatefulTablesConfig } from '../../lib/workload/stateful/stacks/stacky-mcstackface-dynamodb';
@@ -38,6 +39,7 @@ export const getGlueStackProps = (stage: AppStage): GlueStackConfig => {
3839
tnGlueTableName: mockTnGlueTableName,
3940
wtsGlueTableName: mockWtsGlueTableName,
4041
umccriseGlueTableName: mockUmccriseGlueTableName,
42+
rnasumGlueTableName: mockRnasumGlueTableName,
4143
/* Secrets */
4244
icav2AccessTokenSecretName: icav2AccessTokenSecretName[stage],
4345
};
@@ -53,5 +55,6 @@ export const getStatefulGlueStackProps = (): StackyStatefulTablesConfig => {
5355
dynamodbTnGlueTableName: mockTnGlueTableName,
5456
dynamodbWtsGlueTableName: mockWtsGlueTableName,
5557
dynamodbUmccriseGlueTableName: mockUmccriseGlueTableName,
58+
dynamodbRnasumGlueTableName: mockRnasumGlueTableName,
5659
};
5760
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import * as cdk from 'aws-cdk-lib';
2+
import { Construct } from 'constructs';
3+
import * as ssm from 'aws-cdk-lib/aws-ssm';
4+
import { DynamodbPartitionedPipelineConstruct } from '../../../../components/dynamodb-partitioned-table';
5+
6+
export interface RnasumIcav2PipelineTableConfig {
7+
dynamodbTableName: string;
8+
rnasumIcav2DynamodbTableArnSsmParameterPath: string;
9+
rnasumIcav2DynamodbTableNameSsmParameterPath: string;
10+
}
11+
12+
export type RnasumIcav2PipelineTableStackProps = RnasumIcav2PipelineTableConfig & cdk.StackProps;
13+
14+
export class RnasumIcav2PipelineTable extends cdk.Stack {
15+
public readonly rnasumIcav2DynamodbTableArnSsmParameterPath: string;
16+
public readonly rnasumIcav2DynamodbTableNameSsmParameterPath: string;
17+
18+
constructor(scope: Construct, id: string, props: RnasumIcav2PipelineTableStackProps) {
19+
super(scope, id, props);
20+
21+
/*
22+
Initialise dynamodb table, where portal_run_id is the primary sort key
23+
*/
24+
const dynamodb_table = new DynamodbPartitionedPipelineConstruct(
25+
this,
26+
'rnasum_icav2_pipeline_table',
27+
{
28+
tableName: props.dynamodbTableName,
29+
}
30+
);
31+
32+
/*
33+
Generate a ssm parameter to store the table arn so it can be referred to be other stacks
34+
*/
35+
this.rnasumIcav2DynamodbTableArnSsmParameterPath = new ssm.StringParameter(
36+
this,
37+
'rnasum_icav2_pipeline_table_arn_ssm_path',
38+
{
39+
parameterName: props.rnasumIcav2DynamodbTableArnSsmParameterPath,
40+
stringValue: dynamodb_table.tableNameArn,
41+
}
42+
).parameterName;
43+
44+
this.rnasumIcav2DynamodbTableNameSsmParameterPath = new ssm.StringParameter(
45+
this,
46+
'rnasum_icav2_pipeline_table_name_ssm_path',
47+
{
48+
parameterName: props.rnasumIcav2DynamodbTableNameSsmParameterPath,
49+
stringValue: props.dynamodbTableName,
50+
}
51+
).parameterName;
52+
}
53+
}

lib/workload/stateful/stacks/stacky-mcstackface-dynamodb/index.ts

+10
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export interface StackyStatefulTablesConfig {
1313
dynamodbTnGlueTableName: string;
1414
dynamodbWtsGlueTableName: string;
1515
dynamodbUmccriseGlueTableName: string;
16+
dynamodbRnasumGlueTableName: string;
1617
removalPolicy?: RemovalPolicy;
1718
}
1819

@@ -27,6 +28,7 @@ export class StackyStatefulTablesStack extends Stack {
2728
public readonly tnGlueTable: dynamodb.ITableV2;
2829
public readonly wtsGlueTable: dynamodb.ITableV2;
2930
public readonly umccriseGlueTable: dynamodb.ITableV2;
31+
public readonly rnasumGlueTable: dynamodb.ITableV2;
3032
constructor(scope: Construct, id: string, props: StackProps & StackyStatefulTablesStackProps) {
3133
super(scope, id, props);
3234

@@ -105,5 +107,13 @@ export class StackyStatefulTablesStack extends Stack {
105107
tableName: props.dynamodbUmccriseGlueTableName,
106108
removalPolicy: props.removalPolicy,
107109
}).tableObj;
110+
111+
/*
112+
Initialise dynamodb table for the rnasum glue service
113+
*/
114+
this.rnasumGlueTable = new DynamodbPartitionedPipelineConstruct(this, 'rnasumGlueTable', {
115+
tableName: props.dynamodbRnasumGlueTableName,
116+
removalPolicy: props.removalPolicy,
117+
}).tableObj;
108118
}
109119
}

lib/workload/stateful/statefulStackCollectionClass.ts

+15
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ import {
4141
UmccriseIcav2PipelineTable,
4242
UmccriseIcav2PipelineTableStackProps,
4343
} from './stacks/umccrise-pipeline-dynamo-db/deploy/stack';
44+
import {
45+
RnasumIcav2PipelineTable,
46+
RnasumIcav2PipelineTableStackProps,
47+
} from './stacks/rnasum-pipeline-dynamo-db/deploy/stack';
4448

4549
export interface StatefulStackCollectionProps {
4650
dataBucketStackProps: DataBucketStackProps;
@@ -54,6 +58,7 @@ export interface StatefulStackCollectionProps {
5458
tnIcav2PipelineTableStackProps: TnIcav2PipelineTableStackProps;
5559
wtsIcav2PipelineTableStackProps: WtsIcav2PipelineTableStackProps;
5660
umccriseIcav2PipelineTableStackProps: UmccriseIcav2PipelineTableStackProps;
61+
rnasumIcav2PipelineTableStackProps: RnasumIcav2PipelineTableStackProps;
5762
BclConvertTableStackProps: BclConvertTableStackProps;
5863
stackyStatefulTablesStackProps: StackyStatefulTablesStackProps;
5964
}
@@ -72,6 +77,7 @@ export class StatefulStackCollection {
7277
readonly tnIcav2PipelineTableStack: Stack;
7378
readonly wtsIcav2PipelineTableStack: Stack;
7479
readonly umccriseIcav2PipelineTableStack: Stack;
80+
readonly rnasumIcav2PipelineTableStack: Stack;
7581
readonly BclConvertTableStack: Stack;
7682
readonly stackyStatefulTablesStack: Stack;
7783

@@ -159,6 +165,15 @@ export class StatefulStackCollection {
159165
}
160166
);
161167

168+
this.rnasumIcav2PipelineTableStack = new RnasumIcav2PipelineTable(
169+
scope,
170+
'RnasumIcav2PipelineTableStack',
171+
{
172+
...this.createTemplateProps(env, 'RnasumIcav2PipelineTableStack'),
173+
...statefulConfiguration.rnasumIcav2PipelineTableStackProps,
174+
}
175+
);
176+
162177
this.BclConvertTableStack = new BclConvertTable(scope, 'BclConvertTableStack', {
163178
...this.createTemplateProps(env, 'BclConvertTableStack'),
164179
...statefulConfiguration.BclConvertTableStackProps,

0 commit comments

Comments
 (0)