From 3eccb05c95f318d55006075a826c293eb912518c Mon Sep 17 00:00:00 2001 From: Jonathan Goldwasser Date: Fri, 29 May 2020 14:34:44 +0200 Subject: [PATCH 1/3] fix(core): termination protection not updated when change set has no changes Move termination protection before early return when change set has no changes --- packages/aws-cdk/lib/api/deploy-stack.ts | 22 +++++++++---------- packages/aws-cdk/test/integ/cli/app/app.js | 2 +- .../aws-cdk/test/integ/cli/cli.integtest.ts | 12 +++++----- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/aws-cdk/lib/api/deploy-stack.ts b/packages/aws-cdk/lib/api/deploy-stack.ts index 99b18c3136b9f..ef5943ce679c6 100644 --- a/packages/aws-cdk/lib/api/deploy-stack.ts +++ b/packages/aws-cdk/lib/api/deploy-stack.ts @@ -235,6 +235,17 @@ export async function deployStack(options: DeployStackOptions): Promise { }); test('Termination protection', async () => { - await cdkDeploy('termination-protection'); + const stackName = 'termination-protection'; + await cdkDeploy(stackName); // Try a destroy that should fail - await expect(cdkDestroy('termination-protection')).rejects.toThrow('exited with error'); + await expect(cdkDestroy(stackName)).rejects.toThrow('exited with error'); - await cloudFormation('updateTerminationProtection', { - EnableTerminationProtection: false, - StackName: fullStackName('termination-protection'), - }); + // Can update termination protection even though the change set doesn't contain changes + await cdkDeploy(stackName, { modEnv: { NO_TERMINATION_PROTECTION: 'TRUE' } }); + await cdkDestroy(stackName); }); test('cdk synth', async () => { From 1c1c69dd5783a8a354b6bef680c37040e1cc16f7 Mon Sep 17 00:00:00 2001 From: Jonathan Goldwasser Date: Fri, 29 May 2020 15:00:30 +0200 Subject: [PATCH 2/3] correct boolean comparison --- packages/aws-cdk/lib/api/deploy-stack.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/aws-cdk/lib/api/deploy-stack.ts b/packages/aws-cdk/lib/api/deploy-stack.ts index ef5943ce679c6..583e6dc3d6ee8 100644 --- a/packages/aws-cdk/lib/api/deploy-stack.ts +++ b/packages/aws-cdk/lib/api/deploy-stack.ts @@ -237,7 +237,7 @@ export async function deployStack(options: DeployStackOptions): Promise Date: Tue, 2 Jun 2020 10:29:59 +0200 Subject: [PATCH 3/3] TERMINATION_PROTECTION --- packages/aws-cdk/test/integ/cli/app/app.js | 2 +- packages/aws-cdk/test/integ/cli/cli.integtest.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/aws-cdk/test/integ/cli/app/app.js b/packages/aws-cdk/test/integ/cli/app/app.js index 1d0e624ad4479..84cd0495be95b 100644 --- a/packages/aws-cdk/test/integ/cli/app/app.js +++ b/packages/aws-cdk/test/integ/cli/app/app.js @@ -280,7 +280,7 @@ new StackWithNestedStack(app, `${stackPrefix}-with-nested-stack`); new StackWithNestedStackUsingParameters(app, `${stackPrefix}-with-nested-stack-using-parameters`); new YourStack(app, `${stackPrefix}-termination-protection`, { - terminationProtection: process.env.NO_TERMINATION_PROTECTION ? false : true, + terminationProtection: process.env.TERMINATION_PROTECTION !== 'FALSE' ? true : false, }); app.synth(); diff --git a/packages/aws-cdk/test/integ/cli/cli.integtest.ts b/packages/aws-cdk/test/integ/cli/cli.integtest.ts index ba0f6694136fa..500bd1441d949 100644 --- a/packages/aws-cdk/test/integ/cli/cli.integtest.ts +++ b/packages/aws-cdk/test/integ/cli/cli.integtest.ts @@ -46,7 +46,7 @@ test('Termination protection', async () => { await expect(cdkDestroy(stackName)).rejects.toThrow('exited with error'); // Can update termination protection even though the change set doesn't contain changes - await cdkDeploy(stackName, { modEnv: { NO_TERMINATION_PROTECTION: 'TRUE' } }); + await cdkDeploy(stackName, { modEnv: { TERMINATION_PROTECTION: 'FALSE' } }); await cdkDestroy(stackName); });