fog-controller
Version:
Fog Controller project @ iotracks.com
213 lines (172 loc) • 8.83 kB
JavaScript
;
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
};