UNPKG

fog-controller

Version:

Fog Controller project @ iotracks.com

213 lines (172 loc) 8.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _async = require("async"); var _async2 = _interopRequireDefault(_async); var _winstonLogs = require("../../utils/winstonLogs"); var _winstonLogs2 = _interopRequireDefault(_winstonLogs); var _baseApiController = require("./baseApiController"); var _baseApiController2 = _interopRequireDefault(_baseApiController); var _appUtils = require("../../utils/appUtils"); var _appUtils2 = _interopRequireDefault(_appUtils); var _changeTrackingService = require("../../services/changeTrackingService"); var _changeTrackingService2 = _interopRequireDefault(_changeTrackingService); var _userService = require("../../services/userService"); var _userService2 = _interopRequireDefault(_userService); var _straceDiagnosticsService = require("../../services/straceDiagnosticsService"); var _straceDiagnosticsService2 = _interopRequireDefault(_straceDiagnosticsService); var _elementInstanceService = require("../../services/elementInstanceService"); var _elementInstanceService2 = _interopRequireDefault(_elementInstanceService); var _fileUtils = require("../../utils/fileUtils"); var _fileUtils2 = _interopRequireDefault(_fileUtils); var _ftpUtils = require("../../utils/ftpUtils"); var _ftpUtils2 = _interopRequireDefault(_ftpUtils); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /********************************************* EndPoints ******************************************************/ /************* Switch Strace For Element EndPoint (Get/Post: /api/v2/authoring/element/diagnostics/strace) ******************/ var switchElementStrace = function switchElementStrace(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, currentTime = new Date().getTime(), userProps = { userId: 'bodyParams.t', setProperty: 'user' }, elementInstanceProps = { elementInstanceId: 'bodyParams.elementInstanceId', setProperty: 'elementInstance' }, straceProps = { instanceId: 'bodyParams.elementInstanceId', strace: 'bodyParams.strace', fogId: 'elementInstance.iofog_uuid', setProperty: 'newStrace' }, pubChangeDiagnosticsProps = { fogInstanceId: 'elementInstance.iofog_uuid', changeObject: { diagnostics: currentTime } }; params.bodyParams = req.body; _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_elementInstanceService2.default.getElementInstance, elementInstanceProps), _async2.default.apply(_straceDiagnosticsService2.default.switchStraceForElement, straceProps), _async2.default.apply(_changeTrackingService2.default.updateChangeTracking, pubChangeDiagnosticsProps)], function (err, result) { _appUtils2.default.sendResponse(res, err, 'newStrace', params.newStrace, result); }); }; /************* Get Diagnostic Info From Fog Agent (Get/Post:/api/v2/instance/diagnostics/id/:instanceId/token/:Token) ******************/ var getDiagnosticsInfo = function getDiagnosticsInfo(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, straceProps = { fogId: 'bodyParams.instanceId', setProperty: 'straceValues' }; params.bodyParams = req.params; _async2.default.waterfall([_async2.default.apply(_baseApiController2.default.checkfogExistance, req, res), _async2.default.apply(_straceDiagnosticsService2.default.getStraceValuesForFog, straceProps, params)], function (err, result) { _appUtils2.default.sendMultipleResponse(res, err, ['straceValues'], [params.straceValues], result); }); }; /************* Push Strace From Fog Agent(Get/Post: /api/v2/instance/strace/push/id/:instanceId/token/:Token) ******************/ var pushStraceData = function pushStraceData(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, straceProps = { straceData: 'bodyParams.straceData' }; params.bodyParams = req.params; params.bodyParams.straceData = req.body; _async2.default.waterfall([_async2.default.apply(_baseApiController2.default.checkfogExistance, req, res), _async2.default.apply(_straceDiagnosticsService2.default.pushBufferForElements, straceProps, params)], function (err, result) { _appUtils2.default.sendResponse(res, err, 'pushed', 'ok', result); }); }; /************* Pop Strace Data for Element Instance As String(Get/Post: /api/v2/authoring/element/diagnostics/strace/pop/json/) ******************/ var popStraceDataAsJson = function popStraceDataAsJson(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, userProps = { userId: 'bodyParams.t', setProperty: 'user' }, straceProps = { instanceId: 'bodyParams.elementInstanceId', setProperty: 'straceData' }; params.bodyParams = req.body; _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_straceDiagnosticsService2.default.popBufferByElementId, straceProps)], function (err, result) { _appUtils2.default.sendResponse(res, err, 'straceData', params.straceData, result); }); }; /************* Pop Strace Data for Element Instance As File(Get/Post: /api/v2/authoring/element/diagnostics/strace/pop/file/) ******************/ var popStraceDataAsFile = function popStraceDataAsFile(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, userProps = { userId: 'bodyParams.t', setProperty: 'user' }, fileConversionProps = { file: 'straceFile', setProperty: 'convertedFile' }, deleteFileProps = { file: 'straceFile' }; params.bodyParams = req.body; _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(popBufferToFile), _async2.default.apply(_fileUtils2.default.fileToBase64, fileConversionProps), _async2.default.apply(_fileUtils2.default.deleteFile, deleteFileProps)], function (err, result) { _appUtils2.default.sendResponse(res, err, 'convertedFile', params.convertedFile, result); }); }; /************* Pop Strace Data for Element Instance To FTP Server(Get/Post: /api/v2/authoring/element/diagnostics/strace/pop/ftp/) ******************/ var popStraceDataToFtp = function popStraceDataToFtp(req, res) { _winstonLogs2.default.info("Endpoint hit: " + req.originalUrl); var params = {}, userProps = { userId: 'bodyParams.t', setProperty: 'user' }, ftpProps = { host: 'bodyParams.ftpHost', port: 'bodyParams.ftpPort', user: 'bodyParams.ftpUser', pass: 'bodyParams.ftpPass', destDir: 'bodyParams.ftpDestDir', file: 'straceFile' }, deleteFileProps = { file: 'straceFile' }; params.bodyParams = req.body; _async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(popBufferToFile), _async2.default.apply(_ftpUtils2.default.sendToFtp, ftpProps), _async2.default.apply(_fileUtils2.default.deleteFile, deleteFileProps)], function (err, result) { _appUtils2.default.sendResponse(res, err, 'sent', 'ok', result); }); }; /********************************* Extra Functions *****************************************/ var popBufferToFile = function popBufferToFile(params, callback) { var straceProps = { instanceId: 'bodyParams.elementInstanceId', setProperty: 'straceData' }, dataFileProps = { fileName: 'bodyParams.elementInstanceId', distDir: STRACE_DIST_DIR, data: 'straceData.buffer', setProperty: 'straceFile' }; _async2.default.waterfall([_async2.default.apply(_straceDiagnosticsService2.default.popBufferByElementId, straceProps, params), _async2.default.apply(_fileUtils2.default.createDirIfNotExists, dataFileProps), _async2.default.apply(_fileUtils2.default.createFile, dataFileProps)], function (err, result) { if (err) { callback("error", result); } else { callback(null, params); } }); }; var STRACE_DIST_DIR = 'straceDiagnosticsFiles'; exports.default = { switchElementStrace: switchElementStrace, pushStraceData: pushStraceData, popStraceDataAsJson: popStraceDataAsJson, popStraceDataAsFile: popStraceDataAsFile, getDiagnosticsInfo: getDiagnosticsInfo, popStraceDataToFtp: popStraceDataToFtp };