Add resource count and warning to info display

This commit is contained in:
Alex DeBrie 2018-03-11 01:26:15 +00:00
parent c7ac0bdd68
commit 39b62d96b7
4 changed files with 34 additions and 2 deletions

View File

@ -12,7 +12,15 @@ module.exports = {
message += `${chalk.yellow('service:')} ${info.service}\n`;
message += `${chalk.yellow('stage:')} ${info.stage}\n`;
message += `${chalk.yellow('region:')} ${info.region}\n`;
message += `${chalk.yellow('stack:')} ${info.stack}`;
message += `${chalk.yellow('stack:')} ${info.stack}\n`;
message += `${chalk.yellow('resources:')} ${info.resourceCount}`;
if (info.resourceCount >= 150) {
message += `\n${chalk.red('WARNING:')}\n`;
message += ` You have ${info.resourceCount} resources in your service.\n`;
message += ' CloudFormation has a hard limit of 200 resources in a service.\n';
message += ' For advice on avoiding this limit, check out this link: http://bit.ly/2IiYB38.';
}
this.serverless.cli.consoleLog(message);
return message;

View File

@ -32,6 +32,7 @@ describe('#display()', () => {
endpoint: null,
functions: [],
apiKeys: [],
resourceCount: 10,
},
};
consoleLogStub = sinon.stub(serverless.cli, 'consoleLog').returns();
@ -48,7 +49,8 @@ describe('#display()', () => {
expectedMessage += `${chalk.yellow('service:')} my-first\n`;
expectedMessage += `${chalk.yellow('stage:')} dev\n`;
expectedMessage += `${chalk.yellow('region:')} eu-west-1\n`;
expectedMessage += `${chalk.yellow('stack:')} my-first-dev`;
expectedMessage += `${chalk.yellow('stack:')} my-first-dev\n`;
expectedMessage += `${chalk.yellow('resources:')} 10`;
const message = awsInfo.displayServiceInfo();
expect(consoleLogStub.calledOnce).to.equal(true);

View File

@ -0,0 +1,19 @@
'use strict';
const BbPromise = require('bluebird');
module.exports = {
getResourceCount() {
const stackName = this.provider.naming.getStackName();
return this.provider.request('CloudFormation',
'listStackResources',
{ StackName: stackName })
.then((result) => {
if (result) {
this.gatheredData.info.resourceCount = result.StackResourceSummaries.length;
}
return BbPromise.resolve();
});
},
};

View File

@ -3,6 +3,7 @@
const BbPromise = require('bluebird');
const validate = require('../lib/validate');
const getStackInfo = require('./getStackInfo');
const getResourceCount = require('./getResourceCount');
const getApiKeyValues = require('./getApiKeyValues');
const display = require('./display');
@ -15,6 +16,7 @@ class AwsInfo {
this,
validate,
getStackInfo,
getResourceCount,
getApiKeyValues,
display
);
@ -54,6 +56,7 @@ class AwsInfo {
'aws:info:gatherData': () => BbPromise.bind(this)
.then(this.getStackInfo)
.then(this.getResourceCount)
.then(this.getApiKeyValues),
'aws:info:displayServiceInfo': () => BbPromise.bind(this)