briareus
Version:
Briareus assists with Feature Branch deploys to ECS
65 lines (54 loc) • 1.93 kB
JavaScript
const express = require('express');
const async = require('async');
const _ = require('lodash');
const taskDefinitionValidator = require('../../taskDefinitionValidator');
const mw = require('../middleware');
const Variant = require('../variant');
const persistance = require('../persistance');
const errors = require('../errors');
module.exports = function (service) {
let controller = express.Router();
controller.use(mw.auth(service));
function findDeployment(req, res, next) {
persistance.getDeployment(req.params.deploymentId, (err, data) => {
if (err) return next(err);
if (!data) return next(new errors.NotFound());
req.deployment = data;
next();
});
}
/************************
* List Deployments ( Feature Branchs )
*************************/
controller.get('/', (req, res, next) => {
res.status(200).json({
data: req.variant.deployments
});
});
/************************
* Create Deployment
*************************/
controller.post('/', [
mw.validate(service, 'deployment'),
mw.validateDeploymentScopes(service),
mw.validateTaskDefinition(service)
], (req, res, next) => {
let ctx = req.context;
let variant = new Variant(ctx, req.variant);
// Acknowledge receipt of request. And do the deployment in the background
res.status(200).json({});
variant.deploy(req.body, (err) => {
// If error just log it. Because we have already sent a response to the client
if (err) return ctx.log.error({ err }, 'Deployment failed');
ctx.log.info(`Deployment of Task Definition "${variant.data.activeDeployment.taskDefinition.arn}" complete`);
});
});
/************************
* Get Deployment
*************************/
controller.get('/:deploymentId', findDeployment, (req, res, next) => {
res.status(200).json({ data: req.deployment });
});
return controller;
};