Skip to content

Commit

Permalink
Merge branch 'release/0.2.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
kmcgrath committed Apr 3, 2016
2 parents 1b7dd49 + bd407bd commit 35b505c
Show file tree
Hide file tree
Showing 14 changed files with 102 additions and 184 deletions.
5 changes: 1 addition & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# spotinst-lambda

AWS Lambda functions to Create, Update and Cancel [Spotinst](http://spotinst.com) resources
A [lambda-formation](https://github.com/SungardAS/lambda-formation) project that will Create, Update and Cancel [Spotinst](http://spotinst.com) resources for AWS Lambda and CloudFormation.


[![Build
Expand Down Expand Up @@ -52,9 +52,6 @@ In addition to one of the credential parameter groups:

## CloudFormation

When called by CloudFormation [cfn-response](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-cfnresponsemodule)
will be used to return the correct physicalResourceId to the stack.

ResourceType must be set to `elasticgroup`


Expand Down
24 changes: 3 additions & 21 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,5 @@
var _ = require('lodash'),
_s = require('underscore.string'),
util = require('./lib/util');
var projectHandler = require('lambda-formation').project.handler;


exports.handler = function(event,context) {
var resourceType = event.resourceType || event.ResourceType;

if (!resourceType)
return util.done("resourceType must be set",event,context);

if (_s.startsWith(resourceType,'Custom',event,context))
resourceType = _s.strRight(resourceType,'Custom::');

if (!_.includes(['elasticgroup'],resourceType))
return util.done("Invalid resourceType:" + resourceType,event,context);

require('./lib/'+resourceType).handler(event,context);
};

exports.elastigroup = function(event,context) {
require('./lib/elastigroup').handler(event,context);
module.exports.handler = function () {
projectHandler.apply(this, arguments);
};
15 changes: 0 additions & 15 deletions lib/elasticgroup/index.js

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
var util = require('../util'),
request = require('request');
var handler = require('lambda-formation').resource.create;
var util = require('lambda-formation').util;
var request = require('request');
var spotUtil = require('../../util');

module.exports.handler = function(event,context) {
util.getTokenAndConfig(event, function(err,tc) {
/*
Here is a skelton of what the create function might look like.
Change to fit your needs.
*/
var create = function (err, event, context) {
if (err) {
return util.done(err);
}

spotUtil.getTokenAndConfig(event, function(err,tc) {
if (err) return util.done(err,event,context);

var createOptions = {
Expand All @@ -23,5 +33,11 @@ module.exports.handler = function(event,context) {
util.done(err,event,context,body,body.response.items[0].id);
});
});

};

/* Do not change this function */
module.exports.handler = function (event, context) {
handler.apply(this, [event, context, create]);
};

Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
var _ = require('lodash'),
util = require('../util'),
request = require('request');
var _ = require('lodash');
var handler = require('lambda-formation').resource.create;
var util = require('lambda-formation').util;
var request = require('request');
var spotUtil = require('../../util');

module.exports.handler = function(event,context) {
util.getToken(event, function(err,token) {
/*
Here is a skelton of what the delete function might look like.
Change to fit your needs.
*/
var destroy = function (err, event, context) {
if (err) {
return util.done(err);
}

spotUtil.getToken(event, function(err,token) {
if (err) return util.done(err,event,context);

var groupId = event.groupId || event.PhysicalResourceId;
Expand Down Expand Up @@ -31,3 +41,9 @@ module.exports.handler = function(event,context) {
});
});
};

/* Do not change this function */
module.exports.handler = function (event, context) {
handler.apply(this, [event, context, destroy]);
};

5 changes: 5 additions & 0 deletions lib/resources/elasticgroup/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
var resourceHandler = require('lambda-formation').resource.handler;

module.exports.handler = function () {
resourceHandler.apply(this, arguments);
};
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
var util = require('../util'),
request = require('request');
var handler = require('lambda-formation').resource.create;
var util = require('lambda-formation').util;
var request = require('request');
var spotUtil = require('../../util');

module.exports.handler = function(event,context) {
util.getTokenAndConfig(event, function(err,tc) {
/*
Here is a skelton of what the update function might look like.
Change to fit your needs.
*/
var update = function (err, event, context) {
if (err) {
return util.done(err);
}

spotUtil.getTokenAndConfig(event, function(err,tc) {
if (err) return util.done(err,event,context);

delete tc.config.compute.product;
Expand All @@ -28,3 +38,7 @@ module.exports.handler = function(event,context) {
});
};

/* Do not change this function */
module.exports.handler = function (event, context) {
handler.apply(this, [event, context, update]);
};
23 changes: 2 additions & 21 deletions lib/util.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var response = require('cfn-response'),
request = require('request');
var util = require('lambda-formation').util;
var request = require('request');

var getToken = module.exports.getToken = function(event,cb) {
var config = event.ResourceProperties || event;
Expand Down Expand Up @@ -74,23 +74,4 @@ var getTokenAndConfig = module.exports.getTokenAndConfig = function(event,cb) {
getToken(event, function(err,t) {
done(err,'token',t);
});
}



var done = module.exports.done = function(err,event,context,obj,physicalResourceId) {
if (event.StackId) {
var responseStatus = response.SUCCESS;
if (err) {
responseStatus = response.FAILED;
obj = err;
}
response.send(event, context, responseStatus, obj, physicalResourceId);
}
else {
context.done(err,obj);
}
};



10 changes: 4 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "spotinst-lambda",
"version": "0.1.0",
"version": "0.2.0",
"description": "AWS Lambda scripts to interface with Spotinst",
"main": "index.js",
"scripts": {
Expand All @@ -19,10 +19,8 @@
"nock": "^6.0.1"
},
"dependencies": {
"async": "^1.5.2",
"cfn-response": "SungardAS/cfn-response#develop",
"lodash": "^4.0.1",
"request": "^2.67.0",
"underscore.string": "^3.2.3"
"lambda-formation": "^0.1.1",
"lodash": "^4.6.1",
"request": "^2.67.0"
}
}
4 changes: 2 additions & 2 deletions test/elasticgroup/create.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
var _ = require('lodash'),
assert = require('assert'),
create = require('../../lib/elasticgroup/create'),
elasticgroup = require('../../lib/elasticgroup'),
create = require('../../lib/resources/elasticgroup/create'),
elasticgroup = require('../../lib/resources/elasticgroup'),
lambda = require('../../'),
nock = require('nock');

Expand Down
4 changes: 2 additions & 2 deletions test/elasticgroup/delete.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var assert = require('assert'),
deleteGroup = require('../../lib/elasticgroup/delete'),
elasticgroup = require('../../lib/elasticgroup'),
deleteGroup = require('../../lib/resources/elasticgroup/delete'),
elasticgroup = require('../../lib/resources/elasticgroup'),
lambda = require('../../'),
nock = require('nock');

Expand Down
42 changes: 22 additions & 20 deletions test/elasticgroup/handler.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,29 @@
var assert = require('assert'),
lambda = require('../../lib/elasticgroup');
lambda = require('../../lib/resources/elasticgroup');

describe('handler', function() {
it('should require requestType', function(done) {
var context = {
done: function(err,obj) {
assert(err);
done();
}
};
describe('elasticgroup', function() {
describe('handler', function() {
it('should require requestType', function(done) {
var context = {
done: function(err,obj) {
assert(err);
done();
}
};

lambda.handler({}, context);
});
lambda.handler({}, context);
});

it('should verify requestType', function(done) {
var context = {
done: function(err,obj) {
assert(err);
done();
}
};
it('should verify requestType', function(done) {
var context = {
done: function(err,obj) {
assert(err);
done();
}
};

lambda.handler({requestType: 'badType'}, context);
});
lambda.handler({requestType: 'badType'}, context);
});

});
});
4 changes: 2 additions & 2 deletions test/elasticgroup/update.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
var _ = require('lodash'),
assert = require('assert'),
update = require('../../lib/elasticgroup/update'),
elasticgroup = require('../../lib/elasticgroup'),
update = require('../../lib/resources/elasticgroup/update'),
elasticgroup = require('../../lib/resources/elasticgroup'),
lambda = require('../../'),
nock = require('nock');

Expand Down
78 changes: 0 additions & 78 deletions test/util_done.js

This file was deleted.

0 comments on commit 35b505c

Please sign in to comment.