コード例 #1
0
ファイル: tasks.js プロジェクト: srikanthv02/core
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);
        });
    }
};
コード例 #2
0
ファイル: taskHistory.js プロジェクト: RLIndia/core
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);
        });
    }
};
コード例 #3
0
ファイル: chefExecutor.js プロジェクト: srikanthv02/core
 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;
             });
         });
     }
 })
コード例 #4
0
ファイル: chefExecutor.js プロジェクト: srikanthv02/core
 }, "error", function (err, data) {
     if (err) {
         logger.error("Error in Notification Service, ", err);
     }
     if (reqData.attributes !== null) {
         apiUtil.removeFile(desPath);
     }
     return;
 });
コード例 #5
0
 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);
 },
コード例 #6
0
 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);
 },
コード例 #7
0
ファイル: cloud-formation.js プロジェクト: Karan-GM/core
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);
        });
    }
};
コード例 #8
0
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);
			});
		}
	});
};
コード例 #9
0
ファイル: instanceLog.js プロジェクト: RLIndia/core
 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);
         });
     }
 };
コード例 #10
0
ファイル: tasks.js プロジェクト: Karan-GM/core
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);
        });
    }
}
コード例 #11
0
ファイル: routes_tasks.js プロジェクト: Durgesh1988/core
 function (paginationReq, next) {
     paginationReq['searchColumns'] = ['name', 'orgName', 'bgName', 'projectName', 'envName'];
     reqData = paginationReq;
     apiUtil.databaseUtil(paginationReq, next);
 },
コード例 #12
0
ファイル: routes_tasks.js プロジェクト: Durgesh1988/core
 function (next) {
     apiUtil.paginationRequest(req.query, 'tasks', next);
 },
コード例 #13
0
ファイル: noticeService.js プロジェクト: srikanthv02/core
 function(noticeList, next) {
     apiUtil.paginationResponse(noticeList, reqData, next);
 }
コード例 #14
0
ファイル: noticeService.js プロジェクト: srikanthv02/core
 function(paginationReq, next) {
     paginationReq['searchColumns'] = ['user_id', 'severity', 'read_Flag','message.title'];
     reqData = paginationReq;
     apiUtil.databaseUtil(paginationReq, next);
 },
コード例 #15
0
ファイル: auditTrailService.js プロジェクト: srikanthv02/core
 function(next) {
     apiUtil.paginationRequest(auditTrailQuery, 'auditTrails', next);
 },
コード例 #16
0
 function (next) {
     apiUtil.changeRequestForJqueryPagination(req.query, next);
 },
コード例 #17
0
 function(formattedResponseList, next) {
     apiUtil.changeResponseForJqueryPagination(formattedResponseList, reqData, next);
 }
コード例 #18
0
ファイル: botsService.js プロジェクト: Durgesh1988/core
 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);
 },
コード例 #19
0
ファイル: botsService.js プロジェクト: Durgesh1988/core
 function(filterBotList, next) {
     apiUtil.paginationResponse(filterBotList, reqData, next);
 }
コード例 #20
0
ファイル: auditTrailService.js プロジェクト: srikanthv02/core
 function(next){
     apiUtil.queryFilterBy(queryParam,next);
 },
コード例 #21
0
ファイル: auditTrailService.js プロジェクト: srikanthv02/core
 function(auditTrailList, next) {
     apiUtil.paginationResponse(auditTrailList, reqData, next);
 }
コード例 #22
0
ファイル: auditTrailService.js プロジェクト: srikanthv02/core
 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);
 },
コード例 #23
0
ファイル: routes_tasks.js プロジェクト: Durgesh1988/core
 function (tasks, next) {
     apiUtil.paginationResponse(tasks, reqData, next);
 }
コード例 #24
0
ファイル: botsService.js プロジェクト: Durgesh1988/core
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;
        }
    });
}
コード例 #25
0
ファイル: routes_tasks.js プロジェクト: Durgesh1988/core
 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);
             }
         });
     }
 });
コード例 #26
0
ファイル: chefExecutor.js プロジェクト: srikanthv02/core
 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;
     }
 })
コード例 #27
0
 function (instances, next) {
     apiUtil.changeResponseForJqueryPagination(instances[0], reqObj, next);
 }/*,
コード例 #28
0
ファイル: noticeService.js プロジェクト: srikanthv02/core
 function(next) {
     apiUtil.paginationRequest(reqBody, 'notice', next);
 },
コード例 #29
0
 function(reqData,next) {
     reqObj = reqData;
     apiUtil.paginationRequest(reqData,'trackedInstances', next);
 },
コード例 #30
0
ファイル: botsService.js プロジェクト: Durgesh1988/core
 function(next) {
     apiUtil.paginationRequest(botsQuery, 'botHistory', next);
 },