fog-controller
Version:
Fog Controller project @ iotracks.com
153 lines (124 loc) • 5.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _async = require('async');
var _async2 = _interopRequireDefault(_async);
var _baseApiController = require('./baseApiController');
var _baseApiController2 = _interopRequireDefault(_baseApiController);
var _dataTracksService = require('../../services/dataTracksService');
var _dataTracksService2 = _interopRequireDefault(_dataTracksService);
var _elementService = require('../../services/elementService');
var _elementService2 = _interopRequireDefault(_elementService);
var _elementInstancePortService = require('../../services/elementInstancePortService');
var _elementInstancePortService2 = _interopRequireDefault(_elementInstancePortService);
var _elementInstanceService = require('../../services/elementInstanceService');
var _elementInstanceService2 = _interopRequireDefault(_elementInstanceService);
var _appUtils = require('../../utils/appUtils');
var _appUtils2 = _interopRequireDefault(_appUtils);
var _winstonLogs = require('../../utils/winstonLogs');
var _winstonLogs2 = _interopRequireDefault(_winstonLogs);
var _elementInstanceToCleanUpService = require('../../services/elementInstanceToCleanUpService');
var _elementInstanceToCleanUpService2 = _interopRequireDefault(_elementInstanceToCleanUpService);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/********************************************* EndPoints ******************************************************/
var containerListEndPoint = function containerListEndPoint(req, res) {
_winstonLogs2.default.info("Endpoint hit: " + req.originalUrl);
var params = {},
dataTrackProps = {
instanceId: 'bodyParams.ID',
setProperty: 'elementInstances'
},
fogParam = {
uuid: 'bodyParams.ID',
setProperty: 'cleanUpElements'
},
data = {
elementInstanceData: 'elementIds',
setProperty: 'elementIds'
};
params.bodyParams = req.params;
_winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams));
_async2.default.waterfall([_async2.default.apply(_baseApiController2.default.checkUserExistance, req, res), _async2.default.apply(_dataTracksService2.default.findContainerListByInstanceId, dataTrackProps, params), processContainerList, _async2.default.apply(_elementInstanceToCleanUpService2.default.listByFogUUID, fogParam, params), _async2.default.apply(_elementInstanceToCleanUpService2.default.deleteByFogUUID, fogParam, params), _async2.default.apply(_elementInstanceService2.default.deleteElementInstancesByUUID, data, params)], function (err, result) {
var containerList = [];
for (var i = 0, len = params.containerList.length; i < len; i++) {
if (!params.elementToCleanUpIds.includes(params.containerList[i].id)) {
containerList.push(params.containerList[i]);
}
}
var successLabelArr = ['containerlist', 'elementToCleanUpIds'],
successValueArr = [containerList, params.elementToCleanUpIds];
_appUtils2.default.sendMultipleResponse(res, err, successLabelArr, successValueArr, result);
});
};
/************************************* Extra Functions **************************************************/
/**
* @file instanceContainerListController.js
* @author Zishan Iqbal
* @description This file includes the implementation of the instance-containerList end-point
*/
var processContainerList = function processContainerList(params, callback) {
var elementInstances = params.elementInstances;
params.containerList = [];
_async2.default.forEachLimit(elementInstances, 1, function (elementInstance, next) {
params.container = elementInstance;
params.container.ports = [];
var updateElementInstanceProps = {
elementId: 'container.UUID',
updatedData: {
rebuild: 0
}
},
elementProps = {
elementId: 'container.element_key',
instanceId: 'bodyParams.ID',
setProperty: 'elementData'
},
elementPortProps = {
elementPortId: 'container.UUID',
setProperty: 'elementInstancePort'
};
_async2.default.waterfall([_async2.default.apply(_elementInstanceService2.default.updateElemInstance, updateElementInstanceProps, params), _async2.default.apply(_elementService2.default.findElementImageAndRegistryByIdForFogInstance, elementProps), processContainerData, _async2.default.apply(_elementInstancePortService2.default.getPortsByElementId, elementPortProps), processContainerPorts], function (err, result) {
if (err) {
callback(err, result);
} else {
next(null, params);
}
});
}, function (err, result) {
callback(null, params);
});
};
var processContainerData = function processContainerData(params, callback) {
var newContainerItem = {
id: params.container.UUID,
lastmodified: Date.parse(params.container.updated_at),
rebuild: params.container.rebuild > 0,
roothostaccess: params.container.root_host_access > 0,
logsize: parseFloat(params.container.log_size),
imageid: params.elementData.containerImage,
registryurl: params.elementData.registryUrl,
volumemappings: params.container.volume_mappings
};
params.newContainerItem = newContainerItem;
callback(null, params);
};
var processContainerPorts = function processContainerPorts(params, callback) {
try {
for (var j = 0; j < params.elementInstancePort.length; j++) {
var outputPortItem = {
outsidecontainer: params.elementInstancePort[j].portexternal.toString(),
insidecontainer: params.elementInstancePort[j].portinternal.toString()
};
params.container.ports.push(outputPortItem);
}
params.newContainerItem.portmappings = params.container.ports;
params.containerList.push(params.newContainerItem);
callback(null, params);
} catch (e) {
_winstonLogs2.default.error(e);
}
};
exports.default = {
containerListEndPoint: containerListEndPoint
};