mirror of
https://github.com/serverless/serverless.git
synced 2026-01-25 15:07:39 +00:00
commit
22b21069ad
@ -171,7 +171,8 @@ class ServerlessFunction {
|
||||
|
||||
while( !_this._S.classes.Component.isComponentDir( p ) ) {
|
||||
if( SUtils.fileExistsSync(path.join(p, 's-templates.json'))) {
|
||||
templates.unshift( require(path.join(p, 's-templates.json')) );
|
||||
let template = JSON.parse(fs.readFileSync(path.join(p, 's-templates.json'), 'utf8'));
|
||||
templates.unshift(template);
|
||||
}
|
||||
p = path.join( p, '..' );
|
||||
}
|
||||
@ -266,10 +267,7 @@ class ServerlessFunction {
|
||||
// Populate
|
||||
let clone = _this.get();
|
||||
clone = SUtils.populate(_this._S.state.getMeta(), _this.getTemplates(), clone, options.stage, options.region);
|
||||
clone.endpoints = [];
|
||||
for (let i = 0; i < _this.endpoints.length; i++) {
|
||||
clone.endpoints[i] = _this.endpoints[i].getPopulated(options);
|
||||
}
|
||||
clone.endpoints = _this.endpoints.map( endpoint => endpoint.getPopulated(options) );
|
||||
return clone;
|
||||
}
|
||||
|
||||
|
||||
@ -299,7 +299,7 @@ class ServerlessProject extends VarContainer {
|
||||
resources = SUtils.readAndParseJsonSync(_this._S.getProject().getFilePath('s-resources-cf.json'));
|
||||
}
|
||||
|
||||
return _.flatten( _.map( _.values( _this.components ), c => c.getCFSnippets() ) );
|
||||
return _.flattenDeep( _.map( _.values( _this.components ), c => c.getCFSnippets() ) );
|
||||
})
|
||||
.then(function (cfSnippets) {
|
||||
|
||||
@ -477,7 +477,7 @@ class ServerlessProject extends VarContainer {
|
||||
|
||||
getAllComponents(options){
|
||||
if( _.get( options, 'paths' ) ){
|
||||
options.paths = _.map( options.paths, p => p.split(path.sep)[0] );
|
||||
options.paths = _.map( options.paths, p => p && p.split(path.sep)[0] );
|
||||
}
|
||||
return SUtils.filterSPaths( _.values( this.components ), options );
|
||||
}
|
||||
@ -535,7 +535,7 @@ class ServerlessProject extends VarContainer {
|
||||
}
|
||||
|
||||
getRegion( stageName, regionName ){
|
||||
if( this.hasStage( stageName ) ){
|
||||
if( this.validateStageExists( stageName ) ){
|
||||
let stage = this.getStage( stageName );
|
||||
|
||||
if( stage.hasRegion( regionName ) ){
|
||||
|
||||
@ -65,22 +65,24 @@ class ServerlessProviderAws {
|
||||
let req = awsService[method](params);
|
||||
|
||||
// Add listeners...
|
||||
//req.on('validate', function(r) {});
|
||||
req.on('validate', function(r) {});
|
||||
|
||||
let performRequest = function() {
|
||||
return new BbPromise(function(resolve, reject) {
|
||||
return new BbPromise(function(resolve, reject) {
|
||||
let performRequest = function() {
|
||||
req.send(function(err, data) {
|
||||
if (err && err.statusCode == 429) {
|
||||
SUtils.sDebug("'Too many requests' received, sleeping 5 seconds, then retrying...");
|
||||
setTimeout( performRequest, 5000 );
|
||||
return setTimeout( performRequest, 5000 );
|
||||
} else if (err) {
|
||||
reject( err );
|
||||
return reject(err);
|
||||
}
|
||||
resolve(data);
|
||||
|
||||
return resolve(data);
|
||||
});
|
||||
});
|
||||
};
|
||||
return performRequest();
|
||||
};
|
||||
|
||||
performRequest();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@ -143,6 +145,14 @@ class ServerlessProviderAws {
|
||||
sessionToken: process.env['AWS_SESSION_TOKEN'],
|
||||
region: region
|
||||
};
|
||||
} else if (this._S.config.awsAdminKeyId) {
|
||||
|
||||
// Access Keys from the config
|
||||
credentials = {
|
||||
accessKeyId: this._S.config.awsAdminKeyId,
|
||||
secretAccessKey: this._S.config.awsAdminSecretKey,
|
||||
region: region
|
||||
};
|
||||
}
|
||||
|
||||
if (!credentials) {
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
BbPromise = require('bluebird'),
|
||||
Zip = require('node-zip'),
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
BbPromise = require('bluebird'),
|
||||
fs = require('fs'),
|
||||
@ -181,7 +181,9 @@ module.exports = function(SPlugin, serverlessPath) {
|
||||
SUtils.sDebug(`Getting ENV Vars: ${_this.meta.variables.projectBucket} - ${key}`);
|
||||
|
||||
// Get ENV file from S3
|
||||
let NoSuchKey = {code: 'NoSuchKey'};
|
||||
return _this.aws.request('S3', 'getObject', params, _this.evt.options.stage, _this.evt.options.region)
|
||||
.catch(NoSuchKey => ({Body: ''}))
|
||||
.then(function(s3ObjData) {
|
||||
|
||||
fs.writeFileSync(
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils')),
|
||||
BbPromise = require('bluebird'),
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
BbPromise = require('bluebird'),
|
||||
async = require('async'),
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
BbPromise = require('bluebird'),
|
||||
fs = require('fs');
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
chalk = require('chalk'),
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
chalk = require('chalk'),
|
||||
BbPromise = require('bluebird'),
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
SUtils = require(path.join(serverlessPath, 'utils'));
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
SUtils = require(path.join(serverlessPath, 'utils'));
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
BbPromise = require('bluebird');
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
BbPromise = require('bluebird');
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
module.exports = function (SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
BbPromise = require('bluebird');
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
BbPromise = require('bluebird');
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
SUtils = require(path.join(serverlessPath, 'utils'));
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
@ -156,6 +156,7 @@ module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
return this.S.getProvider('aws')
|
||||
.request('Lambda', 'getAlias', params, this.evt.options.stage, this.evt.options.region)
|
||||
.bind(this)
|
||||
.then(reply => this.evt.data.version = reply.FunctionVersion)
|
||||
.then(this._getLogStreams)
|
||||
.then( logStreams => {
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
BbPromise = require('bluebird'),
|
||||
chalk = require('chalk'),
|
||||
SCli = require( path.join( serverlessPath, 'utils', 'cli'));
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SUtils = require(path.join(serverlessPath, 'utils')),
|
||||
spawnSync = require('child_process').spawnSync,
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
URL = require('url'),
|
||||
Download = require('download'),
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
SUtils = require(path.join(serverlessPath, 'utils')),
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require( path.join( serverlessPath, 'ServerlessError' ) ),
|
||||
SError = require( path.join( serverlessPath, 'Error' ) ),
|
||||
SCli = require( path.join( serverlessPath, 'utils/cli' ) ),
|
||||
SUtils = require( path.join( serverlessPath, 'utils' ) ),
|
||||
BbPromise = require('bluebird'),
|
||||
@ -281,10 +281,8 @@ module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
_validateAndPrepare() {
|
||||
|
||||
this.S.getProvider('aws').getProfile(this.evt.options.profile);
|
||||
|
||||
// If Profile, extract API Keys
|
||||
if (this.evt.options.profile) {
|
||||
if (this.evt.options.profile && this.S.getProvider('aws').getProfile(this.evt.options.profile)) {
|
||||
this.S.config.awsAdminKeyId = this.S.getProvider('aws').getProfile(this.evt.options.profile).aws_access_key_id;
|
||||
this.S.config.awsAdminSecretKey = this.S.getProvider('aws').getProfile(this.evt.options.profile).aws_secret_access_key;
|
||||
}
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require( path.join( serverlessPath, 'ServerlessError' ) ),
|
||||
SError = require( path.join( serverlessPath, 'Error' ) ),
|
||||
SCli = require( path.join( serverlessPath, 'utils/cli' ) ),
|
||||
SUtils = require( path.join( serverlessPath, 'utils' ) ),
|
||||
BbPromise = require('bluebird'),
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
fs = require('fs'),
|
||||
BbPromise = require('bluebird'),
|
||||
@ -85,7 +85,7 @@ usage: serverless project remove`,
|
||||
*/
|
||||
|
||||
_removeAllStages() {
|
||||
§ let stages = this.S.getProject().getStages()
|
||||
let stages = this.S.getProject().getStages()
|
||||
|
||||
return BbPromise.each(stages, (stage) => {
|
||||
let evt = {
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
SUtils = require(path.join(serverlessPath, 'utils'));
|
||||
@ -142,16 +142,15 @@ usage: serverless region create`,
|
||||
return BbPromise.reject(new SError('Region "' + _this.evt.options.region + '" already exists in stage "' + _this.evt.options.stage + '"'));
|
||||
}
|
||||
|
||||
// Update and save Meta
|
||||
_this.meta = _this.S.state.getMeta();
|
||||
// Update and save Project
|
||||
const project = _this.S.getProject()
|
||||
const stage = project.getStage(_this.evt.options.stage);
|
||||
const region = new _this.S.classes.Region(_this.S, stage, _this.evt.options.region)
|
||||
|
||||
_this.meta.stages[_this.evt.options.stage].regions[_this.evt.options.region] = {
|
||||
variables: {
|
||||
region: _this.evt.options.region
|
||||
}
|
||||
};
|
||||
stage.addRegion(region);
|
||||
|
||||
return project.save();
|
||||
|
||||
return _this.meta.save();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -173,8 +172,9 @@ usage: serverless region create`,
|
||||
// Create bucket, or skip if already exists
|
||||
|
||||
const stage = this.evt.options.stage,
|
||||
region = this.evt.options.region,
|
||||
bucketName = this.S.state.getMeta().variables.projectBucket;
|
||||
bucketName = this.S.state.getMeta().variables.projectBucket,
|
||||
region = this.evt.options.region;
|
||||
// region = bucketName.split('.')[1];
|
||||
|
||||
return this.S.getProvider('aws')
|
||||
.request('S3', 'getBucketAcl', { Bucket: bucketName }, stage, region)
|
||||
@ -224,7 +224,7 @@ SERVERLESS_PROJECT_NAME=${projectName}`;
|
||||
|
||||
let params = {
|
||||
Bucket: this.S.state.getMeta().variables.projectBucket,
|
||||
Key: key,
|
||||
Key: "/" + key,
|
||||
ACL: 'private',
|
||||
ContentType: 'text/plain',
|
||||
Body: envFileContents
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
fs = BbPromise.promisifyAll(require('fs')),
|
||||
@ -149,13 +149,13 @@ usage: serverless region remove`,
|
||||
_listS3Objects() {
|
||||
SUtils.sDebug("List related S3 objects");
|
||||
|
||||
let prefix = ['serverless', this.S.getProject().name, this.evt.options.stage, this.evt.options.region].join('/'),
|
||||
let prefix = ['serverless', this.S.getProject().getName(), this.evt.options.stage, this.evt.options.region].join('/'),
|
||||
params = {
|
||||
Bucket: this.S.state.getMeta().variables.projectBucket,
|
||||
Prefix: prefix
|
||||
};
|
||||
return this.S.getProvider('aws').request('S3', 'listObjects', params, stage, region)
|
||||
.then(reply => {return _.map(reply.Contents, (item) => ({Key: item.Key}) )});
|
||||
return this.S.getProvider('aws').request('S3', 'listObjects', params, this.evt.options.stage, this.evt.options.region)
|
||||
.then(reply => _.map(reply.Contents, (item) => ({Key: item.Key})));
|
||||
}
|
||||
|
||||
_removeS3Objects(objects) {
|
||||
@ -168,7 +168,7 @@ usage: serverless region remove`,
|
||||
Objects: objects
|
||||
}
|
||||
};
|
||||
return this.S.getProvider('aws').request('S3', 'deleteObjects', params, stage, region);
|
||||
return this.S.getProvider('aws').request('S3', 'deleteObjects', params, this.evt.options.stage, this.evt.options.region);
|
||||
} else {
|
||||
SUtils.sDebug("S3 objects are not found. Skipping.");
|
||||
return BbPromise.resolve();
|
||||
@ -177,9 +177,8 @@ usage: serverless region remove`,
|
||||
|
||||
_removeMeta() {
|
||||
// Update and save Meta
|
||||
let meta = this.S.state.getMeta();
|
||||
delete meta.stages[this.evt.options.stage].regions[this.evt.options.region]
|
||||
return meta.save();
|
||||
this.S.getProject().getStage(this.evt.options.stage).removeRegion(this.evt.options.region);
|
||||
return this.S.getProject().save();
|
||||
}
|
||||
|
||||
_removeVariables() {
|
||||
|
||||
@ -9,7 +9,7 @@ module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
replaceall = require('replaceall'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
_ = require('lodash'),
|
||||
@ -156,7 +156,7 @@ usage: serverless resources deploy`,
|
||||
_deployResources() {
|
||||
|
||||
let _this = this;
|
||||
let regionVars = _this.S.state.getMeta().stages[_this.evt.options.stage].regions[_this.evt.options.region].variables;
|
||||
let regionVars = _this.S.getProject().getRegion(_this.evt.options.stage, _this.evt.options.region)._variables
|
||||
let resourceVars = [ 'iamRoleArnLambda' ].concat( _this.S.getProject().resourceVars);
|
||||
|
||||
return _this.S.getProject().getResources({
|
||||
@ -262,7 +262,7 @@ usage: serverless resources deploy`,
|
||||
stage = this.evt.options.stage,
|
||||
region = this.evt.options.region,
|
||||
aws = this.S.getProvider('aws'),
|
||||
stackName = this.S.state.getMeta().stages[stage].regions[region].variables.resourcesStackName || aws.getLambdasStackName(stage, projectName);
|
||||
stackName = this.S.getProject().getRegion(stage, region)._variables.resourcesStackName || aws.getLambdasStackName(stage, projectName);
|
||||
|
||||
// CF Params
|
||||
let params = {
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
fs = BbPromise.promisifyAll(require('fs')),
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
BbPromise = require('bluebird'),
|
||||
SUtils = require(path.join(serverlessPath, 'utils/index')),
|
||||
@ -157,7 +157,7 @@ usage: serverless resources remove`,
|
||||
let _this = this,
|
||||
stage = _this.evt.options.stage,
|
||||
region = _this.evt.options.region,
|
||||
regionVars = _this.S.state.getMeta().stages[stage].regions[region].variables,
|
||||
regionVars = _this.S.getProject().getRegion(stage, region)._variables,
|
||||
projectBucket = _this.S.state.getMeta().variables.projectBucket,
|
||||
projectName = _this.S.getProject().getName(),
|
||||
aws = _this.S.getProvider('aws');
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
os = require('os'),
|
||||
fs = require('fs'),
|
||||
@ -182,21 +182,25 @@ usage: serverless stage create`,
|
||||
*/
|
||||
|
||||
_createStage() {
|
||||
const project = this.S.getProject();
|
||||
const stage = new this.S.classes.Stage(this.S, project, this.evt.options.stage);
|
||||
|
||||
let _this = this;
|
||||
project.addStage(stage);
|
||||
|
||||
// Update Meta
|
||||
_this.meta = _this.S.state.getMeta();
|
||||
return project.save();
|
||||
|
||||
_this.meta.stages[_this.evt.options.stage] = {
|
||||
regions: {},
|
||||
variables: {
|
||||
stage: _this.evt.options.stage
|
||||
}
|
||||
};
|
||||
// // Update Meta
|
||||
// _this.meta = _this.S.state.getMeta();
|
||||
|
||||
// _this.meta.stages[_this.evt.options.stage] = {
|
||||
// regions: {},
|
||||
// variables: {
|
||||
// stage: _this.evt.options.stage
|
||||
// }
|
||||
// };
|
||||
|
||||
// Save Meta before adding region
|
||||
return _this.meta.save();
|
||||
// return _this.meta.save();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
module.exports = function(SPlugin, serverlessPath) {
|
||||
|
||||
const path = require('path'),
|
||||
SError = require(path.join(serverlessPath, 'ServerlessError')),
|
||||
SError = require(path.join(serverlessPath, 'Error')),
|
||||
SCli = require(path.join(serverlessPath, 'utils/cli')),
|
||||
fs = require('fs'),
|
||||
BbPromise = require('bluebird'),
|
||||
|
||||
@ -299,14 +299,16 @@ exports.doesFunctionExist = function(functionName, componentName, projectRootPat
|
||||
|
||||
exports.populate = function(meta, templates, data, stage, region) {
|
||||
|
||||
const project = meta._S.getProject()
|
||||
|
||||
// Validate required params
|
||||
if (!meta || !templates || !data || !stage || !region) throw new SError(`Missing required params: Serverless, project, stage, region`);
|
||||
|
||||
// Validate: Check stage exists
|
||||
if (typeof stage != 'undefined' && !meta.stages[stage]) throw new SError(`Stage doesn't exist`);
|
||||
if (typeof stage != 'undefined' && !project.validateStageExists(stage)) throw new SError(`Stage doesn't exist`);
|
||||
|
||||
// Validate: Check region exists in stage
|
||||
if (typeof region != 'undefined' && !meta.stages[stage].regions[region]) throw new SError(`Region doesn't exist in provided stage`);
|
||||
if (typeof region != 'undefined' && !project.validateRegionExists(stage, region)) throw new SError(`Region doesn't exist in provided stage`);
|
||||
|
||||
// Sanitize: Remove nested properties. DO NOT populate these. Rely on calling those classes getPopulated methods instead.
|
||||
if (data.components) delete data.components;
|
||||
@ -316,12 +318,12 @@ exports.populate = function(meta, templates, data, stage, region) {
|
||||
let varTemplateSyntax = /\${([\s\S]+?)}/g,
|
||||
templateTemplateSyntax = /\$\${([\s\S]+?)}/g;
|
||||
|
||||
if (meta._S.getProject().variableSyntax) {
|
||||
varTemplateSyntax = RegExp(meta._S.getProject().variableSyntax,'g');
|
||||
if (project.variableSyntax) {
|
||||
varTemplateSyntax = RegExp(project.variableSyntax,'g');
|
||||
}
|
||||
|
||||
if (meta._S.getProject().templateSyntax) {
|
||||
templateTemplateSyntax = RegExp(meta._S.getProject().templateSyntax,'g');
|
||||
if (project.templateSyntax) {
|
||||
templateTemplateSyntax = RegExp(project.templateSyntax,'g');
|
||||
}
|
||||
|
||||
// Populate templates
|
||||
@ -362,10 +364,10 @@ exports.populate = function(meta, templates, data, stage, region) {
|
||||
let variableName = variableSyntax.replace(varTemplateSyntax, (match, varName) => varName.trim());
|
||||
let value;
|
||||
|
||||
if (meta.stages[stage].regions[region].variables[variableName]) {
|
||||
value = meta.stages[stage].regions[region].variables[variableName]
|
||||
} else if (meta.stages[stage].variables[variableName]) {
|
||||
value = meta.stages[stage].variables[variableName];
|
||||
if (project.getRegion(stage, region)._variables[variableName]) {
|
||||
value = project.getRegion(stage, region)._variables[variableName]
|
||||
} else if (project.getStage(stage)._variables[variableName]) {
|
||||
value = project.getStage(stage)._variables[variableName];
|
||||
} else if (meta.variables[variableName]) {
|
||||
value = meta.variables[variableName];
|
||||
}
|
||||
|
||||
@ -88,7 +88,7 @@ let cleanup = function(Meta, cb, evt) {
|
||||
// Delete CloudFormation Resources Stack
|
||||
let cloudformation = new AWS.CloudFormation();
|
||||
cloudformation.deleteStack({
|
||||
StackName: Meta.stages[config.stage].regions[config.region].variables.resourcesStackName
|
||||
StackName: serverless.getProject().getRegion(config.stage, config.region)._variables.resourcesStackName
|
||||
}, function (err, data) {
|
||||
if (err) console.log(err, err.stack); // an error occurred
|
||||
|
||||
@ -140,14 +140,17 @@ describe('Test action: Project Init', function() {
|
||||
|
||||
// Validate Meta
|
||||
let Meta = serverless.state.getMeta();
|
||||
let stage = serverless.getProject().getStage(config.stage);
|
||||
let region = serverless.getProject().getRegion(config.stage, config.region);
|
||||
|
||||
assert.equal(true, typeof Meta.variables.project != 'undefined');
|
||||
assert.equal(true, typeof Meta.variables.domain != 'undefined');
|
||||
assert.equal(true, typeof Meta.variables.projectBucket != 'undefined');
|
||||
assert.equal(true, typeof Meta.stages[config.stage].variables.stage != 'undefined');
|
||||
assert.equal(true, typeof Meta.stages[config.stage].regions[config.region].variables.region != 'undefined');
|
||||
assert.equal(true, typeof stage._variables.stage != 'undefined');
|
||||
assert.equal(true, typeof region._variables.region != 'undefined');
|
||||
if (!config.noExecuteCf) {
|
||||
assert.equal(true, typeof Meta.stages[config.stage].regions[config.region].variables.iamRoleArnLambda != 'undefined');
|
||||
assert.equal(true, typeof Meta.stages[config.stage].regions[config.region].variables.resourcesStackName != 'undefined');
|
||||
assert.equal(true, typeof region._variables.iamRoleArnLambda != 'undefined');
|
||||
assert.equal(true, typeof region._variables.resourcesStackName != 'undefined');
|
||||
}
|
||||
|
||||
// Validate Event
|
||||
|
||||
@ -140,15 +140,18 @@ describe('Test action: Project Install', function() {
|
||||
|
||||
// Validate Meta
|
||||
let Meta = serverless.state.getMeta();
|
||||
let stage = serverless.getProject().getStage(config.stage);
|
||||
let region = serverless.getProject().getRegion(config.stage, config.region);
|
||||
|
||||
|
||||
assert.equal(true, typeof Meta.variables.project != 'undefined');
|
||||
assert.equal(true, typeof Meta.variables.domain != 'undefined');
|
||||
assert.equal(true, typeof Meta.variables.projectBucket != 'undefined');
|
||||
assert.equal(true, typeof Meta.stages[config.stage].variables.stage != 'undefined');
|
||||
assert.equal(true, typeof Meta.stages[config.stage].regions[config.region].variables.region != 'undefined');
|
||||
assert.equal(true, typeof stage._variables.stage != 'undefined');
|
||||
assert.equal(true, typeof region._variables.region != 'undefined');
|
||||
if (!config.noExecuteCf) {
|
||||
assert.equal(true, typeof Meta.stages[config.stage].regions[config.region].variables.iamRoleArnLambda != 'undefined');
|
||||
assert.equal(true, typeof Meta.stages[config.stage].regions[config.region].variables.resourcesStackName != 'undefined');
|
||||
assert.equal(true, typeof region._variables.iamRoleArnLambda != 'undefined');
|
||||
assert.equal(true, typeof region._variables.resourcesStackName != 'undefined');
|
||||
}
|
||||
|
||||
// Validate Event
|
||||
|
||||
@ -105,7 +105,8 @@ describe('Test Action: Region Create', function() {
|
||||
|
||||
let Meta = serverless.state.meta;
|
||||
//console.log(serverless.state.meta.stages)
|
||||
assert.equal(true, typeof Meta.stages[config.stage].regions[config.region2].variables.region != 'undefined');
|
||||
|
||||
assert.equal(true, typeof serverless.getProject().getRegion(config.stage, config.region2)._variables.region != 'undefined');
|
||||
|
||||
// Validate Event
|
||||
validateEvent(evt);
|
||||
|
||||
@ -97,8 +97,9 @@ describe('Test Action: Stage Create', function() {
|
||||
.then(function(evt) {
|
||||
|
||||
let Meta = serverless.state.meta;
|
||||
assert.equal(true, typeof Meta.stages[config.stage2].variables.stage != 'undefined');
|
||||
assert.equal(true, typeof Meta.stages[config.stage2].regions[config.region].variables.region != 'undefined');
|
||||
let project = serverless.getProject();
|
||||
assert.equal(true, typeof project.getStage(config.stage2)._variables.stage != 'undefined');
|
||||
assert.equal(true, typeof project.getRegion(config.stage2, config.region)._variables.region != 'undefined');
|
||||
|
||||
// Validate EVT
|
||||
validateEvent(evt);
|
||||
|
||||
@ -116,14 +116,18 @@ describe('Test: Project Live Cycle', function() {
|
||||
|
||||
// Validate Meta
|
||||
let Meta = serverless.state.getMeta();
|
||||
let stage = serverless.getProject().getStage(config.stage);
|
||||
let region = serverless.getProject().getRegion(config.stage, config.region);
|
||||
|
||||
|
||||
assert.equal(true, typeof Meta.variables.project != 'undefined');
|
||||
assert.equal(true, typeof Meta.variables.domain != 'undefined');
|
||||
assert.equal(true, typeof Meta.variables.projectBucket != 'undefined');
|
||||
assert.equal(true, typeof Meta.stages[config.stage].variables.stage != 'undefined');
|
||||
assert.equal(true, typeof Meta.stages[config.stage].regions[config.region].variables.region != 'undefined');
|
||||
assert.equal(true, typeof stage._variables.stage != 'undefined');
|
||||
assert.equal(true, typeof region._variables.region != 'undefined');
|
||||
if (!config.noExecuteCf) {
|
||||
assert.equal(true, typeof Meta.stages[config.stage].regions[config.region].variables.iamRoleArnLambda != 'undefined');
|
||||
assert.equal(true, typeof Meta.stages[config.stage].regions[config.region].variables.resourcesStackName != 'undefined');
|
||||
assert.equal(true, typeof region._variables.iamRoleArnLambda != 'undefined');
|
||||
assert.equal(true, typeof region._variables.resourcesStackName != 'undefined');
|
||||
}
|
||||
|
||||
// Validate Event
|
||||
@ -156,8 +160,11 @@ describe('Test: Project Live Cycle', function() {
|
||||
.then(function(evt) {
|
||||
|
||||
let Meta = serverless.state.meta;
|
||||
assert.equal(true, typeof Meta.stages[config.stage2].variables.stage != 'undefined');
|
||||
assert.equal(true, typeof Meta.stages[config.stage2].regions[config.region].variables.region != 'undefined');
|
||||
let stage = serverless.getProject().getStage(config.stage2);
|
||||
let region = serverless.getProject().getRegion(config.stage2, config.region);
|
||||
|
||||
assert.equal(true, typeof stage._variables.stage != 'undefined');
|
||||
assert.equal(true, typeof region._variables.region != 'undefined');
|
||||
|
||||
// Validate EVT
|
||||
validateEvent(evt);
|
||||
@ -188,8 +195,7 @@ describe('Test: Project Live Cycle', function() {
|
||||
|
||||
return serverless.actions.regionCreate(evt)
|
||||
.then(function(evt) {
|
||||
let Meta = serverless.state.meta;
|
||||
assert.equal(true, typeof Meta.stages[config.stage2].regions[config.region2].variables.region != 'undefined');
|
||||
assert.equal(true, typeof serverless.getProject().getRegion(config.stage2, config.region2)._variables.region != 'undefined');
|
||||
|
||||
// Validate Event
|
||||
validateEvent(evt);
|
||||
|
||||
@ -31,7 +31,6 @@ describe('Test Serverless Project Class', function() {
|
||||
|
||||
return serverless.init()
|
||||
.then(function() {
|
||||
|
||||
// Instantiate Class
|
||||
instance = serverless.getProject();
|
||||
|
||||
@ -78,7 +77,7 @@ describe('Test Serverless Project Class', function() {
|
||||
// These functions have their own s-templates.json files which give them the same template, with one different property
|
||||
|
||||
// Function1 template
|
||||
assert.equal(true, data.components.nodejscomponent.functions['nodejscomponent/group1/function1'].endpoints[0].requestTemplates['application/json'].pathParams === "$input.path('$.id1')");
|
||||
assert.equal(data.components.nodejscomponent.functions['nodejscomponent/group1/function1'].endpoints[0].requestTemplates['application/json'].pathParams, "$input.path('$.id1')");
|
||||
// Function2 template
|
||||
assert.equal(true, data.components.nodejscomponent.functions['nodejscomponent/group1/function2'].endpoints[0].requestTemplates['application/json'].pathParams === "$input.path('$.id2')");
|
||||
// Function3 template - s-templates.json left undefined
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user