Skip to content

Commit 49a4963

Browse files
author
EC2 Default User
committed
Adding additional inheritence
1 parent 4dcaf26 commit 49a4963

File tree

4 files changed

+45
-24
lines changed

4 files changed

+45
-24
lines changed

lib/data-set-enrollment.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ export class DataSetEnrollment extends cdk.Construct {
7070

7171

7272
let connectionArray = [];
73+
74+
7375
if(props.SourceConnectionInput){
7476
this.SourceConnection = new glue.CfnConnection(this, `${props.dataSetName}-src-connection`, {
7577
catalogId: this.Dataset_Source.catalogId,
@@ -105,15 +107,14 @@ export class DataSetEnrollment extends cdk.Construct {
105107
glueScript.grantRead(this.DataSetGlueRole);
106108

107109

108-
const etl_job = new glue.CfnJob(this, `${props.dataSetName}-EtlJob`, {
110+
111+
/// The spread operator below (...) makes the connections property conditional. Its only used for JDBC sources at the moment.
112+
const jobParams = {
109113
executionProperty: {
110114
maxConcurrentRuns: 1
111115
},
112116
name: `${props.dataSetName}_src_to_dl_etl`,
113117
timeout: 2880,
114-
connections: {
115-
connections: connectionArray
116-
},
117118
glueVersion: "1.0",
118119
maxCapacity: 10.0,
119120
command: {
@@ -123,8 +124,14 @@ export class DataSetEnrollment extends cdk.Construct {
123124
},
124125
role: this.DataSetGlueRole.roleArn,
125126
maxRetries: 0,
126-
defaultArguments: props.GlueScriptArguments
127-
});
127+
defaultArguments: props.GlueScriptArguments,
128+
...(typeof props.SourceConnectionInput !== "undefined" && {
129+
connections: {
130+
connections: connectionArray
131+
}
132+
})
133+
}
134+
const etl_job = new glue.CfnJob(this, `${props.dataSetName}-EtlJob`, jobParams );
128135

129136

130137

lib/datalake-stack.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import rds = require('@aws-cdk/aws-rds');
55
import glue = require('@aws-cdk/aws-glue');
66
import s3 = require('@aws-cdk/aws-s3');
77
import s3assets = require('@aws-cdk/aws-s3-assets');
8-
import { DataSetEnrollmentProps } from './data-set-enrollment';
8+
import { DataSetEnrollmentProps, DataSetEnrollment } from './data-set-enrollment';
99

1010
export interface DatalakeStackProps extends cdk.StackProps {
1111
// chemblDB: rds.DatabaseInstance;
@@ -28,3 +28,24 @@ export class DatalakeStack extends cdk.Stack {
2828

2929

3030

31+
32+
export interface DataLakeEnrollmentProps extends cdk.StackProps {
33+
dataLakeBucket: s3.Bucket;
34+
GlueScriptPath: string;
35+
GlueScriptArguments: any;
36+
DataSetName: string;
37+
}
38+
39+
export class DataLakeEnrollment extends cdk.Construct {
40+
41+
public DataEnrollment: DataSetEnrollment;
42+
43+
constructor(scope: cdk.Construct, id: string, props: DataLakeEnrollmentProps) {
44+
super(scope, id);
45+
}
46+
}
47+
48+
49+
50+
51+

lib/rds-data-set-enrollment.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,20 @@ import s3 = require('@aws-cdk/aws-s3');
66
import s3assets = require('@aws-cdk/aws-s3-assets')
77
import rds = require('@aws-cdk/aws-rds');
88
import { DataSetEnrollmentProps, DataSetEnrollment } from './data-set-enrollment';
9+
import { DataLakeEnrollment, DataLakeEnrollmentProps } from './datalake-stack'
910

1011

11-
12-
export interface RDSdataSetSetEnrollmentProps extends cdk.StackProps {
12+
export interface RDSdataSetSetEnrollmentProps extends DataLakeEnrollmentProps {
1313
databaseSecret: rds.DatabaseSecret;
1414
database: rds.DatabaseInstance;
1515
accessSecurityGroup: ec2.SecurityGroup;
16-
dataLakeBucket: s3.Bucket;
17-
DataSetName: string;
1816
JdbcTargetIncludePaths: string[];
19-
GlueScriptPath: string;
20-
GlueScriptArguments: any;
2117
}
2218

2319

24-
export class RDSPostgresDataSetEnrollment extends cdk.Construct{
20+
export class RDSPostgresDataSetEnrollment extends DataLakeEnrollment {
2521
constructor(scope: cdk.Construct, id: string, props: RDSdataSetSetEnrollmentProps) {
26-
super(scope, id);
22+
super(scope, id, props);
2723

2824
const dataSetName = props.DataSetName;
2925
const dataSetSourceConnectionName = `${dataSetName}-src`
@@ -39,7 +35,7 @@ export class RDSPostgresDataSetEnrollment extends cdk.Construct{
3935

4036
}
4137

42-
const enrollment = new DataSetEnrollment(this, 'rdsDatasetEnrollment', {
38+
this.DataEnrollment = new DataSetEnrollment(this, 'rdsDatasetEnrollment', {
4339
dataLakeBucket: props.dataLakeBucket,
4440
dataSetName: dataSetName,
4541
SourceConnectionInput: {

lib/s3-data-set-enrollment.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,19 @@ import glue = require('@aws-cdk/aws-glue');
55
import s3 = require('@aws-cdk/aws-s3');
66
import s3assets = require('@aws-cdk/aws-s3-assets');
77
import { DataSetEnrollmentProps, DataSetEnrollment } from './data-set-enrollment';
8+
import { DataLakeEnrollment, DataLakeEnrollmentProps } from './datalake-stack'
89

910

10-
export interface S3dataSetEnrollmentProps extends cdk.StackProps {
11+
export interface S3dataSetEnrollmentProps extends DataLakeEnrollmentProps {
1112
sourceBucket: s3.IBucket;
1213
sourceBucketDataPrefixes: string[];
13-
dataLakeBucket: s3.Bucket;
14-
GlueScriptPath: string;
15-
GlueScriptArguments: any;
16-
DataSetName: string;
1714
}
1815

1916

2017

21-
export class S3dataSetEnrollment extends cdk.Construct{
18+
export class S3dataSetEnrollment extends DataLakeEnrollment{
2219
constructor(scope: cdk.Construct, id: string, props: S3dataSetEnrollmentProps) {
23-
super(scope, id);
20+
super(scope, id, props);
2421

2522
const dataSetName = props.DataSetName;
2623

@@ -50,7 +47,7 @@ export class S3dataSetEnrollment extends cdk.Construct{
5047

5148
}
5249

53-
const enrollment = new DataSetEnrollment(this, 'openTargetsEnrollment', {
50+
this.DataEnrollment = new DataSetEnrollment(this, 'openTargetsEnrollment', {
5451
dataLakeBucket: props.dataLakeBucket,
5552
dataSetName: dataSetName,
5653
SourceAccessPolicy: s3AccessPolicy,

0 commit comments

Comments
 (0)