UNPKG

fog-controller

Version:

Fog Controller project @ iotracks.com

421 lines (337 loc) 16.9 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _async = require('async'); var _async2 = _interopRequireDefault(_async); var _changeTrackingService = require('../../services/changeTrackingService'); var _changeTrackingService2 = _interopRequireDefault(_changeTrackingService); var _comsatService = require('../../services/comsatService'); var _comsatService2 = _interopRequireDefault(_comsatService); var _dataTracksService = require('../../services/dataTracksService'); var _dataTracksService2 = _interopRequireDefault(_dataTracksService); var _elementInstanceConnectionsService = require('../../services/elementInstanceConnectionsService'); var _elementInstanceConnectionsService2 = _interopRequireDefault(_elementInstanceConnectionsService); var _elementInstancePortService = require('../../services/elementInstancePortService'); var _elementInstancePortService2 = _interopRequireDefault(_elementInstancePortService); var _elementInstanceService = require('../../services/elementInstanceService'); var _elementInstanceService2 = _interopRequireDefault(_elementInstanceService); var _fogService = require('../../services/fogService'); var _fogService2 = _interopRequireDefault(_fogService); var _networkPairingService = require('../../services/networkPairingService'); var _networkPairingService2 = _interopRequireDefault(_networkPairingService); var _routingService = require('../../services/routingService'); var _routingService2 = _interopRequireDefault(_routingService); var _satellitePortService = require('../../services/satellitePortService'); var _satellitePortService2 = _interopRequireDefault(_satellitePortService); var _userService = require('../../services/userService'); var _userService2 = _interopRequireDefault(_userService); var _appUtils = require('../../utils/appUtils'); var _appUtils2 = _interopRequireDefault(_appUtils); var _winstonLogs = require('../../utils/winstonLogs'); var _winstonLogs2 = _interopRequireDefault(_winstonLogs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /********************************************* EndPoints ******************************************************/ /***************** Create Track User EndPoint (Post: /api/v2/authoring/user/track/create) **************/ /** * @file trackController.js * @author Zishan Iqbal * @description This file includes the implementation of the status end-point */ var userTrackCreateEndPoint = function userTrackCreateEndPoint(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, userProps = { userId: 'bodyParams.t', setProperty: 'user' }; params.bodyParams = req.body; _winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams)); _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), validateFogInstance, createDataTrack], function (err, result) { var trackId = void 0; if (params.dataTrack) { trackId = params.dataTrack.id; } _appUtils2.default.sendResponse(res, err, 'trackId', trackId, result); }); }; var validateFogInstance = function validateFogInstance(params, callback) { var fogProps = { fogId: 'bodyParams.fogInstanceId', setProperty: 'fogData' }; if (params.bodyParams.fogInstanceId == 'NONE') { callback(null, params); } else { _fogService2.default.getFogInstance(fogProps, params, callback); } }; /***************** Fog Track List EndPoint (Get: /api/v2/authoring/fabric/track/list/:instanceId) **************/ var fogTrackListEndPoint = function fogTrackListEndPoint(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, userProps = { userId: 'bodyParams.t', setProperty: 'user' }, fogInstanceProps = { fogId: 'bodyParams.instanceId', setProperty: 'fogData' }, dataTrackProps = { instanceId: 'bodyParams.instanceId', setProperty: 'dataTracks' }; params.bodyParams = req.params; params.bodyParams.t = req.query.t; _winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams)); _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_fogService2.default.getFogInstance, fogInstanceProps), _async2.default.apply(_dataTracksService2.default.getDataTrackByInstanceId, dataTrackProps)], function (err, result) { _appUtils2.default.sendResponse(res, err, 'tracks', params.dataTracks, result); }); }; /***************** Fog Track Delete EndPoint (Post: /api/v2/authoring/fabric/track/delete) **************/ var fogTrackDeleteEndPoint = function fogTrackDeleteEndPoint(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, userProps = { userId: 'bodyParams.t', setProperty: 'user' }, dataTrackProps = { trackId: 'bodyParams.trackId', setProperty: 'dataTrack' }, elementInstanceProps = { trackId: 'bodyParams.trackId', setProperty: 'trackElementInstances' }; params.bodyParams = req.body; _winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams)); _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_dataTracksService2.default.getDataTrackById, dataTrackProps), _async2.default.apply(_elementInstanceService2.default.getElementInstancesByTrackId, elementInstanceProps), deleteElementInstances, _async2.default.apply(_dataTracksService2.default.deleteTrackById, dataTrackProps)], function (err, result) { var errMsg = 'Internal error: There was a problem deleting the track : ' + result; _appUtils2.default.sendResponse(res, err, 'trackId', params.bodyParams.trackId, errMsg); }); }; /********** Get Track Data for User EndPoint (Get: /api/v2/authoring/user/track/list/:userId) *******/ var getTracksForUser = function getTracksForUser(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, userProps = { userId: 'bodyParams.t', setProperty: 'user' }, trackProps = { userId: 'user.id', setProperty: 'dataTracks' }; params.bodyParams = req.params; _winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams)); _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_dataTracksService2.default.getTracksByUserId, trackProps)], function (err, result) { _appUtils2.default.sendResponse(res, err, 'dataTracks', params.dataTracks, result); }); }; /***************** Fog Track Update EndPoint (Post: /api/v2/authoring/fabric/track/update) **************/ var fogTrackUpdateEndPoint = function fogTrackUpdateEndPoint(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, userProps = { userId: 'bodyParams.t', setProperty: 'user' }, dataTrackProps = { trackId: 'bodyParams.trackId', setProperty: 'dataTrack' }; params.bodyParams = req.body; _winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams)); _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_dataTracksService2.default.getDataTrackById, dataTrackProps), updateSelectedTrack, updateDataTrackById], function (err, result) { var trackId = void 0; if (params.bodyParams) { trackId = params.bodyParams.trackId; } _appUtils2.default.sendResponse(res, err, 'trackId', params.bodyParams.trackId, result); }); }; /***************** User Track Update EndPoint (Post: /api/v2/authoring/user/track/update) **************/ var userTrackUpdateEndPoint = function userTrackUpdateEndPoint(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, userProps = { userId: 'bodyParams.t', setProperty: 'user' }, dataTrackProps = { trackId: 'bodyParams.trackId', setProperty: 'dataTrack' }; params.bodyParams = req.body; _winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams)); _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_dataTracksService2.default.getDataTrackById, dataTrackProps), resetSelectedActivatedAndName, findElementInstanceByTrackId, updateChangeTracking, updateSelectedTrack, updateDataTrackById], function (err, result) { _appUtils2.default.sendResponse(res, err, 'trackId', params.bodyParams.trackId, result); }); }; var updateSelectedTrack = function updateSelectedTrack(params, callback) { try { if (params.bodyParams.isSelected > 0) { var updateProps = { userId: 'user.id', updatedObj: { isSelected: 0 } }; _dataTracksService2.default.updateDataTrackByUserId(updateProps, params, callback); } else { callback(null, params); } } catch (e) { _winstonLogs2.default.error(e); } }; /***************** User Track Delete EndPoint (Post: /api/v2/authoring/user/track/delete) **************/ var userTrackDeleteEndPoint = function userTrackDeleteEndPoint(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, userProps = { userId: 'bodyParams.t', setProperty: 'user' }, dataTrackProps = { trackId: 'bodyParams.trackId' }, elementInstanceProps = { trackId: 'bodyParams.trackId', setProperty: 'elementInstances' }, elementInstanceDataProps = { elementInstanceData: 'elementInstances', field: 'uuid' }, networkPairingProps = { elementInstanceData: 'elementInstances', field: 'uuid', setProperty: 'networkPairingData' }, satellitePortProps = { satellitePortIds: 'networkPairingData', field: 'satellitePortId' }, deleteNetworkElementInstanceProps = { elementInstanceData: 'networkPairingData', field1: 'networkElementId1', field2: 'networkElementId2' }, elementInstanceConnectionProps = { elementInstanceData: 'elementInstances', field: 'uuid' }; params.bodyParams = req.body; _winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams)); _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_dataTracksService2.default.getDataTrackById, dataTrackProps), _async2.default.apply(_dataTracksService2.default.deleteTrackById, dataTrackProps), _async2.default.apply(_elementInstanceService2.default.findElementInstancesByTrackId, elementInstanceProps), _async2.default.apply(_elementInstancePortService2.default.deleteElementInstancePortsByElementIds, elementInstanceDataProps), _async2.default.apply(_networkPairingService2.default.findByElementInstanceIds, networkPairingProps), _async2.default.apply(_satellitePortService2.default.deleteSatellitePortByIds, satellitePortProps), _async2.default.apply(_elementInstanceService2.default.deleteNetworkElementInstances, deleteNetworkElementInstanceProps), _async2.default.apply(_networkPairingService2.default.deleteNetworkPairingByElementId1, networkPairingProps), _async2.default.apply(_elementInstanceConnectionsService2.default.deleteElementInstanceConnection, elementInstanceDataProps), _async2.default.apply(_routingService2.default.deleteByPublishingOrDestinationElementId, elementInstanceDataProps), updateFogChangeTracking, _async2.default.apply(_elementInstanceService2.default.deleteElementInstances, elementInstanceDataProps)], function (err, result) { var successLabelArr = ['trackId', 'elementInstances'], successValueArr = [params.bodyParams.trackId, params.elementInstances]; _appUtils2.default.sendMultipleResponse(res, err, successLabelArr, successValueArr, result); }); }; /************************************* Extra Functions ********************************************/ var updateFogChangeTracking = function updateFogChangeTracking(params, callback) { var changeTrackingProps = { elementInstanceData: 'elementInstances', field: 'iofog_uuid', changeObject: { containerList: new Date().getTime() } }; _changeTrackingService2.default.updateChangeTrackingData(changeTrackingProps, params, callback); }; var deleteElement = function deleteElement(params, callback) { var deleteElementProps = { elementId: 'bodyParams.elementId' }, portPasscodeProps = { elementId: 'bodyParams.elementId', setProperty: 'portPasscode' }; _async2.default.waterfall([_async2.default.apply(_elementInstancePortService2.default.deleteElementInstancePort, deleteElementProps, params), _async2.default.apply(_routingService2.default.deleteElementInstanceRouting, deleteElementProps), _async2.default.apply(_routingService2.default.deleteNetworkElementRouting, deleteElementProps), _async2.default.apply(_elementInstanceService2.default.deleteNetworkElementInstance, deleteElementProps), _async2.default.apply(_satellitePortService2.default.getPasscodeForNetworkElements, portPasscodeProps), _comsatService2.default.closePortsOnComsat, _async2.default.apply(_networkPairingService2.default.deleteNetworkPairing, deleteElementProps), _async2.default.apply(_satellitePortService2.default.deletePortsForNetworkElements, deleteElementProps), _async2.default.apply(_elementInstanceService2.default.deleteElementInstance, deleteElementProps)], function (err, result) { console.log(err); callback(); }); }; var createDataTrack = function createDataTrack(params, callback) { var dataTrackProps = { dataTrackObj: { name: params.bodyParams.trackName, instanceId: params.bodyParams.fogInstanceId, updatedBy: params.user.id, isSelected: 0, isActivated: 0, user_id: params.user.id }, setProperty: 'dataTrack' }; _dataTracksService2.default.createDataTrack(dataTrackProps, params, callback); }; var resetSelectedActivatedAndName = function resetSelectedActivatedAndName(params, callback) { if (params.bodyParams.isSelected == -1 || params.bodyParams.isSelected == '') params.bodyParams.isSelected = params.dataTrack.isSelected; if (params.bodyParams.isActivated == -1 || params.bodyParams.isActivated == '') params.bodyParams.isActivated = params.dataTrack.isActivated; if (!params.bodyParams.trackName) params.bodyParams.trackName = params.dataTrack.name; callback(null, params); }; var findElementInstanceByTrackId = function findElementInstanceByTrackId(params, callback) { var elementInstanceProps = { trackId: 'bodyParams.trackId', setProperty: 'elementInstances' }; if (params.bodyParams.isActivated != params.dataTrack.isActivated) { _elementInstanceService2.default.findElementInstancesByTrackId(elementInstanceProps, params, callback); } else { callback(null, params); } }; var updateChangeTracking = function updateChangeTracking(params, callback) { var changeTrackingProps = { elementInstanceData: 'elementInstances', field: 'iofog_uuid', changeObject: { containerConfig: new Date().getTime(), containerList: new Date().getTime() } }; _changeTrackingService2.default.updateChangeTrackingData(changeTrackingProps, params, callback); }; var updateDataTrackById = function updateDataTrackById(params, callback) { var isSelected = params.bodyParams.isSelected > 0 ? 1 : 0; var updateDataTrackProps = { trackId: 'bodyParams.trackId', updatedObj: { name: params.bodyParams.trackName, description: params.bodyParams.description, lastUpdated: new Date(), isSelected: isSelected, isActivated: params.bodyParams.isActivated, updatedBy: params.user.id } }; _dataTracksService2.default.updateDataTrackById(updateDataTrackProps, params, callback); }; var deleteElementInstances = function deleteElementInstances(params, callback) { if (params.trackElementInstances && params.trackElementInstances.length > 0) { _async2.default.eachSeries(params.trackElementInstances, function (elementInstance, callback) { params.bodyParams.elementId = elementInstance.uuid; deleteElement(params, callback); }, function (err) { params.errormessage = JSON.stringify(err); callback(null, params); }); } else { callback(null, params); } }; exports.default = { fogTrackListEndPoint: fogTrackListEndPoint, fogTrackUpdateEndPoint: fogTrackUpdateEndPoint, fogTrackDeleteEndPoint: fogTrackDeleteEndPoint, getTracksForUser: getTracksForUser, userTrackCreateEndPoint: userTrackCreateEndPoint, userTrackUpdateEndPoint: userTrackUpdateEndPoint, userTrackDeleteEndPoint: userTrackDeleteEndPoint };