taskSchema.statics.listTasks = function(jsonData, callback) { if (jsonData && jsonData.pageSize) { jsonData['searchColumns'] = ['name', 'orgName', 'bgName', 'projectName', 'envName']; ApiUtils.databaseUtil(jsonData, function(err, databaseCall) { if (err) { var err = new Error('Internal server error'); err.status = 500; return callback(err); } else { Tasks.paginate(databaseCall.queryObj, databaseCall.options, function(err, tasks) { if (err) { var err = new Error('Internal server error'); err.status = 500; return callback(err); } else { return callback(null, tasks); } }); } }); } else { this.find(function(err, tasks) { if (err) { logger.error(err); callback(err, null); return; } callback(null, tasks); }); } };
taskHistorySchema.statics.listHistoryWithPagination = function(jsonData, callback) { if (jsonData && jsonData.pageSize) { jsonData['searchColumns'] = ['taskName', 'status', 'orgName', 'bgName', 'projectName', 'envName']; apiUtils.databaseUtil(jsonData, function(err, databaseCall) { if (err) { var err = new Error('Internal server error'); err.status = 500; return callback(err); } else { TaskHistory.paginate(databaseCall.queryObj, databaseCall.options, function(err, taskActions) { if (err) { logger.error(err); var err = new Error('Internal server error'); err.status = 500; return callback(err); } return callback(null, taskActions); }); } }); } else { TaskHistory.find(function(err, data) { if (err) { logger.error("Failed to task actions :: ", err); callback(err, null); return; } return callback(null, data); }); } };
request.post(options, function (err, res, body) { if (res.statusCode === 200) { var auditQueueDetails = { userName: userName, botId: botDetail.id, bot_id: botDetail._id, logRefId: logsReferenceIds, auditId: actionId, instanceLog: '', instanceIP: '', auditTrailId: auditTrail._id, remoteAuditId: res.body.ref, link: res.body.link, status: "pending", serverUrl: serverUrl, env: "local", retryCount: 0 } auditQueue.setAudit(auditQueueDetails); if (reqData.attributes !== null) { apiUtil.removeFile(desPath); } return; } else { logger.error(err); var logData = { botId: botDetail._id, botRefId: actionId, err: true, log: "Error in BOT Engine executor:", timestamp: new Date().getTime(), } logsDao.insertLog(logData); noticeService.updater(actionId, 'log', logData); var resultTaskExecution = { "actionStatus": 'failed', "status": 'failed', "endedOn": new Date().getTime(), "actionLogId": actionId }; auditTrailService.updateAuditTrail('BOT', auditTrail._id, resultTaskExecution, function (err, data) { if (err) { logger.error("Failed to create or update bots Log: ", err); } noticeService.notice(userName, { title: "Chef BOT Execution", body: res.statusCode === 502 ? "Bot Enginge is not running" : "Error in Chef executor" }, "error", function (err, data) { if (err) { logger.error("Error in Notification Service, ", err); } if (reqData.attributes !== null) { apiUtil.removeFile(desPath); } return; }); }); } })
}, "error", function (err, data) { if (err) { logger.error("Error in Notification Service, ", err); } if (reqData.attributes !== null) { apiUtil.removeFile(desPath); } return; });
function(paginationRequest, next) { // @TODO Relook at pagination to allow validation of query parameters // @TODO Whether databaseUtil should be renamed if(category === 'managed') { paginationRequest['searchColumns'] = ['instanceIP', 'instanceState']; }else if(category === 'assigned'){ paginationRequest['searchColumns'] = ['ip', 'state']; }else{ paginationRequest['searchColumns'] = ['ip', 'state']; } apiUtil.databaseUtil(paginationRequest, next); },
function(paginationRequest, next) { // @TODO Relook at pagination to allow validation of query parameters // @TODO Whether databaseUtil should be renamed if(category === 'managed') { paginationRequest['searchColumns'] = ['instanceIP', 'instanceState','platformId','hardware.os','projectName','environmentName'];; }else if(category === 'assigned'){ paginationRequest['searchColumns'] = ['ip', 'platformId','os','state','projectName','environmentName','providerData.region']; }else{ paginationRequest['searchColumns'] = ['ip', 'platformId','os','state','providerData.region']; } apiUtil.databaseUtil(paginationRequest, next); },
CloudFormationSchema.statics.findByOrgBgProjectAndEnvId = function(jsonData, callback) { if(jsonData.pageSize) { jsonData['searchColumns'] = ['stackName', 'status']; ApiUtils.databaseUtil(jsonData, function (err, databaseCall) { if (err) { var err = new Error('Internal server error'); err.status = 500; return callback(err); } else{ CloudFormation.paginate(databaseCall.queryObj, databaseCall.options, function (err, cftData) { if (err) { var err = new Error('Internal server error'); err.status = 500; return callback(err); } else if (!cftData) { var err = new Error('Cloud Formation is not found'); err.status = 404; return callback(err); } else return callback(null, cftData); }); } }); } else{ var queryObj = { orgId: jsonData.orgId, bgId: jsonData.bgId, projectId: jsonData.projectId, envId: jsonData.envId } this.find(queryObj, function(err, data) { if (err) { logger.error(err); callback(err, null); return; } callback(null, data); }); } };
UnmanagedInstanceSchema.statics.getByProviderId = function(jsonData, callback) { jsonData['searchColumns']=['ip','platformId']; ApiUtils.databaseUtil(jsonData,function(err,databaseCall){ if(err){ process.nextTick(function() { callback(null, []); }); return; } else { UnmanagedInstance.paginate(databaseCall.queryObj, databaseCall.options, function (err, instances) { if (err) { logger.error("Failed getByOrgProviderId (%s)", err); callback(err, null); return; } callback(null, instances); }); } }); };
this.getInstanceActionList = function getInstanceActionList(jsonData, callback) { if (jsonData && jsonData.pageSize) { jsonData['searchColumns'] = ['platformId', 'status', 'action', 'user', 'size', 'actionStatus', 'orgName', 'bgName', 'projectName', 'envName', 'blueprintName']; apiUtils.databaseUtil(jsonData, function(err, databaseCall) { if (err) { var error = new Error('Internal server error'); error.status = 500; return callback(error); } else { databaseCall.queryObj['$or'] = [{ "status": "running" }, { "status": "stopped" }, { "status": "pending" }]; InstanceLogs.paginate(databaseCall.queryObj, databaseCall.options, function(err, instanceActions) { if (err) { logger.error(err); var error = new Error('Internal server error'); error.status = 500; return callback(error); } else { if (instanceActions && instanceActions.docs && instanceActions.docs.length) { for (var i = 0; i < instanceActions.docs.length; i++) { instanceActions.docs[i] = JSON.parse(JSON.stringify(instanceActions.docs[i])); delete instanceActions.docs[i]['logs']; delete instanceActions.docs[i]['_id']; } } return callback(null, instanceActions); } }); } }); } else { InstanceLogs.find(function(err, data) { if (err) { logger.error("Failed to getInstances :: ", err); callback(err, null); return; } return callback(null, data); }); } };
taskSchema.statics.getTasksByOrgBgProjectAndEnvId = function(jsonData, callback) { if (jsonData.pageSize) { jsonData['searchColumns'] = ['taskType', 'name']; ApiUtils.databaseUtil(jsonData, function(err, databaseCall) { if (err) { var err = new Error('Internal server error'); err.status = 500; return callback(err); } else { Tasks.paginate(databaseCall.queryObj, databaseCall.options, function(err, tasks) { if (err) { var err = new Error('Internal server error'); err.status = 500; return callback(err); } callback(null, tasks); }); } }); } else { var queryObj = { orgId: jsonData.orgId, bgId: jsonData.bgId, projectId: jsonData.projectId, envId: jsonData.envId } this.find(queryObj, function(err, data) { if (err) { logger.error(err); callback(err, null); return; } callback(null, data); }); } }
function (paginationReq, next) { paginationReq['searchColumns'] = ['name', 'orgName', 'bgName', 'projectName', 'envName']; reqData = paginationReq; apiUtil.databaseUtil(paginationReq, next); },
function (next) { apiUtil.paginationRequest(req.query, 'tasks', next); },
function(noticeList, next) { apiUtil.paginationResponse(noticeList, reqData, next); }
function(paginationReq, next) { paginationReq['searchColumns'] = ['user_id', 'severity', 'read_Flag','message.title']; reqData = paginationReq; apiUtil.databaseUtil(paginationReq, next); },
function(next) { apiUtil.paginationRequest(auditTrailQuery, 'auditTrails', next); },
function (next) { apiUtil.changeRequestForJqueryPagination(req.query, next); },
function(formattedResponseList, next) { apiUtil.changeResponseForJqueryPagination(formattedResponseList, reqData, next); }
function(paginationReq, next) { paginationReq['searchColumns'] = ['botName', 'botType', 'botCategory','botDesc', 'botLinkedCategory','botLinkedSubCategory', 'masterDetails.orgName', 'masterDetails.bgName', 'masterDetails.projectName', 'masterDetails.envName']; reqData = paginationReq; apiUtil.databaseUtil(paginationReq, next); },
function(filterBotList, next) { apiUtil.paginationResponse(filterBotList, reqData, next); }
function(next){ apiUtil.queryFilterBy(queryParam,next); },
function(auditTrailList, next) { apiUtil.paginationResponse(auditTrailList, reqData, next); }
function(paginationReq, next) { paginationReq['searchColumns'] = ['status', 'action', 'user', 'actionStatus', 'auditTrailConfig.name','masterDetails.orgName', 'masterDetails.bgName', 'masterDetails.projectName', 'masterDetails.envName']; reqData = paginationReq; apiUtil.databaseUtil(paginationReq, next); },
function (tasks, next) { apiUtil.paginationResponse(tasks, reqData, next); }
botsService.updateBotsScheduler = function updateBotsScheduler(botId,botObj,callback) { if(botObj.botScheduler && botObj.botScheduler !== null && Object.keys(botObj.botScheduler).length !== 0) { botObj.botScheduler = apiUtil.createCronJobPattern(botObj.botScheduler); botObj.isBotScheduled =true; }else{ botObj.botScheduler ={}; botObj.isBotScheduled =false; } bots.updateBotsDetail(botId,botObj,function(err,data){ if(err){ logger.error(err); callback(err,null); return; }else { bots.getBotsById(botId, function (err, botsData) { if (err) { logger.error(err); } else if(botsData.length > 0){ if (botsData[0].isBotScheduled === true) { var schedulerService = require('_pr/services/schedulerService.js'); schedulerService.executeScheduledBots(botsData[0],function(err,data){ if(err){ logger.error("Error in executing BOTs Scheduler"); } }); if (botsData[0].botLinkedCategory === 'Task') { var tasks = require('_pr/model/classes/tasks/tasks.js'); tasks.getTaskById(botId, function (err, task) { if (err) { logger.error("Error in fetching Task details", err); } else if (task.isTaskScheduled === true) { tasks.updateTaskScheduler(botId, function (err, updateData) { if (err) { logger.error("Error in Updating Task details", err); } }); if (task.cronJobId && task.cronJobId !== null) { var cronTab = require('node-crontab'); cronTab.cancelJob(task.cronJobId); } } }); } }else{ var schedulerService = require('_pr/services/schedulerService.js'); schedulerService.executeScheduledBots(botsData[0],function(err,data){ if(err){ logger.error("Error in executing BOTs Scheduler"); } }); } } else{ logger.debug("There is no Bots "); } }); callback(null, data); return; } }); }
app.post('/tasks/:taskId/update', function(req, res) { var taskData = req.body.taskData; if(taskData.taskScheduler && taskData.taskScheduler !== null && Object.keys(taskData.taskScheduler).length !== 0) { taskData.taskScheduler = apiUtil.createCronJobPattern(taskData.taskScheduler); taskData.isTaskScheduled = true; }else{ taskData.isTaskScheduled = false; } if(taskData.manualExecutionTime && taskData.manualExecutionTime !== null){ taskData.manualExecutionTime = parseInt(taskData.manualExecutionTime); }else{ taskData.manualExecutionTime = 10; } if (taskData.taskType === 'script') { Tasks.getTaskById(req.params.taskId, function(err, scriptTask) { if (err) { logger.error(err); res.status(500).send(errorResponses.db.error); return; } encryptedParam(taskData.scriptDetails,scriptTask.taskConfig.scriptDetails,function(err, encryptedParam) { if (err) { logger.error(err); res.status(500).send("Failed to encrypted script parameters: ", err); return; } else { taskData.scriptDetails = encryptedParam; Tasks.updateTaskById(req.params.taskId, taskData, function(err, updateCount) { if (err) { logger.error(err); res.status(500).send(errorResponses.db.error); return; } if (updateCount) { if(taskData.isTaskScheduled === true){ if(taskData.executionOrder === 'PARALLEL'){ catalystSync.executeParallelScheduledTasks(); }else{ catalystSync.executeSerialScheduledTasks(); } }else if(scriptTask.cronJobId && scriptTask.cronJobId !== null){ cronTab.cancelJob(scriptTask.cronJobId); }else{ logger.debug("There is no cron job associated with Task "); } if(taskData.serviceDeliveryCheck === true) { Tasks.getTaskById(req.params.taskId, function (err, task) { if (err) { logger.error(err); } else { botsService.createOrUpdateBots(task, 'Task', task.taskType, function (err, data) { if (err) { logger.error("Error in creating bots entry." + err); } }); } }); }else{ botsService.removeSoftBotsById(req.params.taskId, function (err, data) { if (err) { logger.error("Error in updating bots entry." + err); } }); } res.send({ updateCount: updateCount }); } else { res.send(400); } }); } }) }); } else { if(taskData.taskType === 'jenkins'){ taskData.executionOrder= 'PARALLEL'; } Tasks.updateTaskById(req.params.taskId, taskData, function(err, updateCount) { if (err) { logger.error(err); res.status(500).send(errorResponses.db.error); return; } if (updateCount) { Tasks.getTaskById(req.params.taskId, function (err, task) { if (err) { logger.error(err); } if (task.isTaskScheduled === true) { if (taskData.executionOrder === 'PARALLEL') { catalystSync.executeParallelScheduledTasks(); } else { catalystSync.executeSerialScheduledTasks(); } }else if(task.cronJobId && task.cronJobId !== null){ cronTab.cancelJob(task.cronJobId); }else{ logger.debug("There is no cron job associated with Task "); } if (task.serviceDeliveryCheck === true) { botsService.createOrUpdateBots(task, 'Task', task.taskType, function (err, data) { if (err) { logger.error("Error in creating bots entry." + err); } }); } }) res.send({ updateCount: updateCount }); } else { res.send(400); } }); } });
request.post(options, function (err, res, body) { if (res.statusCode === 200) { var auditQueueDetails = { userName: userName, botId: botDetail.id, bot_id: botDetail._id, logRefId: logsReferenceIds, auditId: actionLogId, instanceLog: instanceLog, instanceIP: instance.instanceIP, auditTrailId: auditTrailId, remoteAuditId: res.body.ref, link: res.body.link, status: "pending", serverUrl: serverUrl, env: "remote", retryCount: 0 } auditQueue.setAudit(auditQueueDetails); if (reqData.attributes !== null) { apiUtil.removeFile(desPath); } return; } else { logger.error(err); var timestampEnded = new Date().getTime(); var logData = { instanceId: instance._id, instanceRefId: actionLog._id, botId: botDetail._id, botRefId: actionLogId, err: true, log: res.statusCode === 502 ? "Bot Enginge is not running" : "Error in Chef executor", timestamp: timestampEnded } logsDao.insertLog(logData); noticeService.updater(actionLogId, 'log', logData); instanceModel.updateActionLog(logsReferenceIds[0], logsReferenceIds[1], false, timestampEnded); instanceLog.endedOn = new Date().getTime(); instanceLog.actionStatus = "failed"; instanceLog.logs = { err: false, log: "Error in BOT Engine executor:", timestamp: new Date().getTime() }; instanceLogModel.createOrUpdate(logsReferenceIds[1], logsReferenceIds[0], instanceLog, function (err, logData) { if (err) { logger.error("Failed to create or update instanceLog: ", err); } }); noticeService.notice(userName, { title: "Chef BOT Execution", body: res.statusCode === 502 ? "Bot Enginge is not running" : "Error in Chef executor" }, "error", function (err, data) { if (err) { logger.error("Error in Notification Service, ", err); } }); callback(err, null); if (reqData.attributes !== null) { apiUtil.removeFile(desPath); } return; } })
function (instances, next) { apiUtil.changeResponseForJqueryPagination(instances[0], reqObj, next); }/*,
function(next) { apiUtil.paginationRequest(reqBody, 'notice', next); },
function(reqData,next) { reqObj = reqData; apiUtil.paginationRequest(reqData,'trackedInstances', next); },
function(next) { apiUtil.paginationRequest(botsQuery, 'botHistory', next); },