From c73dfdac62a3befac33dea3319e9239d3ec46ff6 Mon Sep 17 00:00:00 2001 From: Joey Zhao Date: Thu, 9 Dec 2021 21:16:36 +1100 Subject: [PATCH 1/7] add stack tags on creating stack function --- src/helper.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/helper.js b/src/helper.js index 44b57aa..0f3c2af 100644 --- a/src/helper.js +++ b/src/helper.js @@ -443,10 +443,16 @@ const createGlobalDynamodbTable = async function createGlobalDynamodbTable(serve } } else { const cfnTemplate = serverless.service.provider.compiledCloudFormationTemplate; + let stackTags; + if (serverless.service.provider.stackTags) { + const providerTags = serverless.service.provider.stackTags; + stackTags = Object.keys(providerTags).map(tag => ({Key: tag, Value: providerTags[tag]})) + } for (let newRegion of globalTablesOptions.regions) { let cfn = new AWS.CloudFormation({ region: newRegion, - credentials: awsCredentials.credentials + credentials: awsCredentials.credentials, + params: { Tags: stackTags }, }) await module.exports.createUpdateCfnStack(cfn, cfnTemplate, stackName, newRegion, cli); } From 1944f75b224af0934f407c4de108c535f011b944 Mon Sep 17 00:00:00 2001 From: Joey Zhao Date: Thu, 9 Dec 2021 21:17:09 +1100 Subject: [PATCH 2/7] bump version --- package-lock.json | 2 +- package.json | 2 +- test/unittest/index.js | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7510920..61ae4b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "serverless-create-global-dynamodb-table", - "version": "3.1.0", + "version": "3.1.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e16dbb9..a2c67ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "serverless-create-global-dynamodb-table", - "version": "3.1.1", + "version": "3.1.2", "description": "serverless plugin that would create global dynamodb tables for specified tables", "main": "src/index.js", "scripts": { diff --git a/test/unittest/index.js b/test/unittest/index.js index 5387512..08f5e5e 100644 --- a/test/unittest/index.js +++ b/test/unittest/index.js @@ -16,7 +16,8 @@ const provider = { }, getStage: () => { return 'dev' - } + }, + stackTags: { tag1: 'value1', tag2: 'value2' } } const serverless = { getProvider: () => { From b4da3cd38ebb55865c5ac2ba595942a96c139aff Mon Sep 17 00:00:00 2001 From: Joey Zhao Date: Thu, 9 Dec 2021 21:18:10 +1100 Subject: [PATCH 3/7] bump version --- test/unittest/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/unittest/index.js b/test/unittest/index.js index 08f5e5e..5387512 100644 --- a/test/unittest/index.js +++ b/test/unittest/index.js @@ -16,8 +16,7 @@ const provider = { }, getStage: () => { return 'dev' - }, - stackTags: { tag1: 'value1', tag2: 'value2' } + } } const serverless = { getProvider: () => { From 96a2a2e2d16b5e683cedea801498f7d7ac45defb Mon Sep 17 00:00:00 2001 From: Joey Zhao Date: Fri, 17 Dec 2021 08:28:19 +1100 Subject: [PATCH 4/7] add enabled flag --- package.json | 4 ++-- src/helper.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index a2c67ca..163a8fa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "serverless-create-global-dynamodb-table", - "version": "3.1.2", + "name": "serverless-create-global-dynamodb-table-tags", + "version": "1.0.1", "description": "serverless plugin that would create global dynamodb tables for specified tables", "main": "src/index.js", "scripts": { diff --git a/src/helper.js b/src/helper.js index 0f3c2af..f13ea6d 100644 --- a/src/helper.js +++ b/src/helper.js @@ -401,7 +401,7 @@ const createGlobalDynamodbTable = async function createGlobalDynamodbTable(serve const cli = serverless.cli; const globalTablesOptions = get(serverless, 'service.custom.globalTables'); - if (!globalTablesOptions || Object.keys(globalTablesOptions).length === 0) { + if (!globalTablesOptions || Object.keys(globalTablesOptions).length === 0 || !globalTablesOptions.enabled) { cli.consoleLog(`CreateGlobalTable: ${chalk.yellow('Global Table configuration missing, skipping creation...')}`) return } From 366c423633bdb363ee1498a9ee2050caf8bac365 Mon Sep 17 00:00:00 2001 From: Joey Zhao Date: Fri, 17 Dec 2021 08:30:52 +1100 Subject: [PATCH 5/7] fix unit test --- src/helper.js | 2 +- test/unittest/index.js | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/helper.js b/src/helper.js index f13ea6d..a28573d 100644 --- a/src/helper.js +++ b/src/helper.js @@ -401,7 +401,7 @@ const createGlobalDynamodbTable = async function createGlobalDynamodbTable(serve const cli = serverless.cli; const globalTablesOptions = get(serverless, 'service.custom.globalTables'); - if (!globalTablesOptions || Object.keys(globalTablesOptions).length === 0 || !globalTablesOptions.enabled) { + if (!globalTablesOptions || Object.keys(globalTablesOptions).length === 0 || !globalTablesOptions.enable) { cli.consoleLog(`CreateGlobalTable: ${chalk.yellow('Global Table configuration missing, skipping creation...')}`) return } diff --git a/test/unittest/index.js b/test/unittest/index.js index 5387512..8587440 100644 --- a/test/unittest/index.js +++ b/test/unittest/index.js @@ -60,7 +60,8 @@ describe('test createGlobalDynamodbTable function', () => { it ('should return since no table are present in the stack', async ()=> { serverless.service.custom.globalTables = { - regions: ['us-east-2'] + regions: ['us-east-2'], + enable: true, }; plugin.getTableNamesFromStack.restore(); sandbox.stub(plugin, 'getTableNamesFromStack').returns(Promise.resolve([])); @@ -72,7 +73,8 @@ describe('test createGlobalDynamodbTable function', () => { it ('should create the tables without cfn', async ()=> { serverless.service.custom.globalTables = { regions: ['us-east-2'], - createStack: false + createStack: false, + enable: true, }; await plugin.createGlobalDynamodbTable(serverless); sandbox.assert.calledOnce(plugin.createGlobalTable); @@ -82,7 +84,8 @@ describe('test createGlobalDynamodbTable function', () => { it ('should create the tables with cfn', async ()=> { serverless.service.custom.globalTables = { - regions: ['us-east-2'] + regions: ['us-east-2'], + enable: true, }; await plugin.createGlobalDynamodbTable(serverless); sandbox.assert.calledOnce(plugin.createGlobalTable); From f31a4baa2d4e812d22eeb6918a856277f806648c Mon Sep 17 00:00:00 2001 From: Joey Zhao Date: Fri, 17 Dec 2021 09:34:11 +1100 Subject: [PATCH 6/7] update enable flag --- package.json | 2 +- src/helper.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 163a8fa..b3bb2d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "serverless-create-global-dynamodb-table-tags", - "version": "1.0.1", + "version": "1.0.2", "description": "serverless plugin that would create global dynamodb tables for specified tables", "main": "src/index.js", "scripts": { diff --git a/src/helper.js b/src/helper.js index a28573d..df1f4a0 100644 --- a/src/helper.js +++ b/src/helper.js @@ -401,7 +401,7 @@ const createGlobalDynamodbTable = async function createGlobalDynamodbTable(serve const cli = serverless.cli; const globalTablesOptions = get(serverless, 'service.custom.globalTables'); - if (!globalTablesOptions || Object.keys(globalTablesOptions).length === 0 || !globalTablesOptions.enable) { + if (!globalTablesOptions || Object.keys(globalTablesOptions).length === 0 || globalTablesOptions.enable !== 'true') { cli.consoleLog(`CreateGlobalTable: ${chalk.yellow('Global Table configuration missing, skipping creation...')}`) return } From 9b55ceb8f1855543277719a246738b1cdcf503c4 Mon Sep 17 00:00:00 2001 From: Joey Zhao Date: Fri, 17 Dec 2021 09:36:02 +1100 Subject: [PATCH 7/7] update enable flag --- test/unittest/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/unittest/index.js b/test/unittest/index.js index 8587440..6b97fa7 100644 --- a/test/unittest/index.js +++ b/test/unittest/index.js @@ -61,7 +61,7 @@ describe('test createGlobalDynamodbTable function', () => { it ('should return since no table are present in the stack', async ()=> { serverless.service.custom.globalTables = { regions: ['us-east-2'], - enable: true, + enable: 'true', }; plugin.getTableNamesFromStack.restore(); sandbox.stub(plugin, 'getTableNamesFromStack').returns(Promise.resolve([])); @@ -74,7 +74,7 @@ describe('test createGlobalDynamodbTable function', () => { serverless.service.custom.globalTables = { regions: ['us-east-2'], createStack: false, - enable: true, + enable: 'true', }; await plugin.createGlobalDynamodbTable(serverless); sandbox.assert.calledOnce(plugin.createGlobalTable); @@ -85,7 +85,7 @@ describe('test createGlobalDynamodbTable function', () => { it ('should create the tables with cfn', async ()=> { serverless.service.custom.globalTables = { regions: ['us-east-2'], - enable: true, + enable: 'true', }; await plugin.createGlobalDynamodbTable(serverless); sandbox.assert.calledOnce(plugin.createGlobalTable);