mirror of
https://github.com/serverless/serverless.git
synced 2025-12-08 19:46:03 +00:00
59 lines
1.6 KiB
JavaScript
59 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
const BbPromise = require('bluebird');
|
|
|
|
module.exports = {
|
|
getStackInfo() {
|
|
// NOTE: this is the global gatheredData object which will be passed around
|
|
this.gatheredData = {
|
|
info: {
|
|
functions: [],
|
|
endpoint: '',
|
|
service: this.serverless.service.service,
|
|
stage: this.options.stage,
|
|
region: this.options.region,
|
|
},
|
|
outputs: [],
|
|
};
|
|
|
|
const stackName = this.provider.naming.getStackName(this.options.stage);
|
|
|
|
// Get info from CloudFormation Outputs
|
|
return this.provider.request('CloudFormation',
|
|
'describeStacks',
|
|
{ StackName: stackName },
|
|
this.options.stage,
|
|
this.options.region)
|
|
.then((result) => {
|
|
let outputs;
|
|
|
|
if (result) {
|
|
outputs = result.Stacks[0].Outputs;
|
|
|
|
const serviceEndpointOutputRegex = this.provider.naming
|
|
.getServiceEndpointRegex();
|
|
|
|
// Outputs
|
|
this.gatheredData.outputs = outputs;
|
|
|
|
// Functions
|
|
this.serverless.service.getAllFunctions().forEach((func) => {
|
|
const functionInfo = {};
|
|
functionInfo.name = func;
|
|
functionInfo.deployedName = `${
|
|
this.serverless.service.service}-${this.options.stage}-${func}`;
|
|
this.gatheredData.info.functions.push(functionInfo);
|
|
});
|
|
|
|
// Endpoints
|
|
outputs.filter(x => x.OutputKey.match(serviceEndpointOutputRegex))
|
|
.forEach(x => {
|
|
this.gatheredData.info.endpoint = x.OutputValue;
|
|
});
|
|
}
|
|
|
|
return BbPromise.resolve();
|
|
});
|
|
},
|
|
};
|