Skip to content

Commit e9d3d93

Browse files
authored
fix(aws-elasticloadbalancingv2): listener dependency (#1146)
Fix taking a listener dependency for Network Load Balancers. Fixes #1139.
1 parent 72f0124 commit e9d3d93

File tree

3 files changed

+42
-1
lines changed

3 files changed

+42
-1
lines changed

packages/@aws-cdk/aws-elasticloadbalancingv2/lib/nlb/network-listener.ts

+1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ export class NetworkListener extends BaseListener implements INetworkListener {
6767
// New default target(s)
6868
for (const targetGroup of targetGroups) {
6969
this._addDefaultTargetGroup(targetGroup);
70+
targetGroup.registerListener(this);
7071
}
7172
}
7273

packages/@aws-cdk/aws-elasticloadbalancingv2/lib/nlb/network-target-group.ts

+10
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,22 @@ export class NetworkTargetGroup extends BaseTargetGroup {
8080
*/
8181
// tslint:disable-next-line:no-empty-interface
8282
export interface INetworkTargetGroup extends ITargetGroup {
83+
/**
84+
* Register a listener that is load balancing to this target group.
85+
*
86+
* Don't call this directly. It will be called by listeners.
87+
*/
88+
registerListener(listener: INetworkListener): void;
8389
}
8490

8591
/**
8692
* An imported network target group
8793
*/
8894
class ImportedNetworkTargetGroup extends BaseImportedTargetGroup implements INetworkTargetGroup {
95+
public registerListener(_listener: INetworkListener) {
96+
// Nothing to do, we know nothing of our members
97+
}
98+
8999
public listenerDependency(): cdk.IDependable {
90100
return new LazyDependable([]);
91101
}

packages/@aws-cdk/aws-elasticloadbalancingv2/test/nlb/test.listener.ts

+31-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { expect, haveResource } from '@aws-cdk/assert';
1+
import { expect, haveResource, MatchStyle } from '@aws-cdk/assert';
22
import ec2 = require('@aws-cdk/aws-ec2');
33
import cdk = require('@aws-cdk/cdk');
44
import { Test } from 'nodeunit';
@@ -112,4 +112,34 @@ export = {
112112

113113
test.done();
114114
},
115+
116+
'Enable taking a dependency on an NLB target group\'s load balancer'(test: Test) {
117+
// GIVEN
118+
const stack = new cdk.Stack();
119+
const vpc = new ec2.VpcNetwork(stack, 'Stack');
120+
const lb = new elbv2.NetworkLoadBalancer(stack, 'LB', { vpc });
121+
const listener = lb.addListener('Listener', { port: 443 });
122+
const group = listener.addTargets('Group', {
123+
port: 80,
124+
targets: [new FakeSelfRegisteringTarget(stack, 'Target', vpc)]
125+
});
126+
127+
// WHEN
128+
const resource = new cdk.Resource(stack, 'MyResource', {
129+
type: 'SomeResource',
130+
});
131+
resource.addDependency(group.listenerDependency());
132+
133+
// THEN
134+
expect(stack).toMatch({
135+
Resources: {
136+
MyResource: {
137+
Type: "SomeResource",
138+
DependsOn: [ "LBListener49E825B4" ]
139+
}
140+
}
141+
}, MatchStyle.SUPERSET);
142+
143+
test.done();
144+
},
115145
};

0 commit comments

Comments
 (0)