UNPKG

fog-controller

Version:

Fog Controller project @ iotracks.com

153 lines (124 loc) 5.97 kB
'use strict'; 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 };