From 29d7c02139c2c51fe97010c223a9fc1a241240a9 Mon Sep 17 00:00:00 2001 From: Piotr Grzesik Date: Wed, 16 Sep 2020 21:12:19 +0200 Subject: [PATCH] Add removal of "dangling" ENIs from MSK event integration --- test/integration/msk/cloudformation.yml | 4 ++++ test/integration/msk/index.test.js | 23 ++++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/test/integration/msk/cloudformation.yml b/test/integration/msk/cloudformation.yml index 789fea3667f3..812e2d75bcff 100644 --- a/test/integration/msk/cloudformation.yml +++ b/test/integration/msk/cloudformation.yml @@ -138,6 +138,10 @@ Resources: Revision: !Ref ClusterConfigurationRevision Outputs: + VPC: + Description: VPC ID + Value: !Ref VPC + PrivateSubnetA: Description: Private Subnet A ID Value: !Ref PrivateSubnetA diff --git a/test/integration/msk/index.test.js b/test/integration/msk/index.test.js index 1f29565d2b3a..d5df3ef5690b 100644 --- a/test/integration/msk/index.test.js +++ b/test/integration/msk/index.test.js @@ -16,6 +16,7 @@ describe('AWS - MSK Integration Test', function() { let stackName; let servicePath; let clusterConfigurationArn; + let outputMap; const stage = 'dev'; const suffix = crypto.randomBytes(8).toString('hex'); @@ -56,7 +57,7 @@ describe('AWS - MSK Integration Test', function() { StackName: resourcesStackName, }); - const outputMap = waitForResult.Stacks[0].Outputs.reduce((map, output) => { + outputMap = waitForResult.Stacks[0].Outputs.reduce((map, output) => { map[output.OutputKey] = output.OutputValue; return map; }, {}); @@ -105,6 +106,26 @@ describe('AWS - MSK Integration Test', function() { after(async () => { log.notice('Removing service...'); await removeService(servicePath); + log.notice('Removing leftover ENI...'); + const describeResponse = await awsRequest('EC2', 'describeNetworkInterfaces', { + Filters: [ + { + Name: 'vpc-id', + Values: [outputMap.VPC], + }, + { + Name: 'status', + Values: ['available'], + }, + ], + }); + await Promise.all( + describeResponse.NetworkInterfaces.map(networkInterface => + awsRequest('EC2', 'deleteNetworkInterface', { + NetworkInterfaceId: networkInterface.NetworkInterfaceId, + }) + ) + ); log.notice('Removing CloudFormation stack with required resources...'); await awsRequest('CloudFormation', 'deleteStack', { StackName: resourcesStackName }); await awsRequest('CloudFormation', 'waitFor', 'stackDeleteComplete', {