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..b3bb2d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "serverless-create-global-dynamodb-table", - "version": "3.1.1", + "name": "serverless-create-global-dynamodb-table-tags", + "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 44b57aa..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) { + if (!globalTablesOptions || Object.keys(globalTablesOptions).length === 0 || globalTablesOptions.enable !== 'true') { cli.consoleLog(`CreateGlobalTable: ${chalk.yellow('Global Table configuration missing, skipping creation...')}`) return } @@ -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); } diff --git a/test/unittest/index.js b/test/unittest/index.js index 5387512..6b97fa7 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);