From eb76b4161aab7a251e447d61b24349d2a4c335d3 Mon Sep 17 00:00:00 2001 From: srikanthv02 Date: Thu, 8 Dec 2016 09:06:04 +0530 Subject: [PATCH 01/75] Task Schedule issue resolved --- .../workzone/orchestration/popups/newTask.html | 6 +++--- .../workzone/orchestration/popups/newTaskCtrl.js | 11 +++++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/client/cat3/src/partials/sections/dashboard/workzone/orchestration/popups/newTask.html b/client/cat3/src/partials/sections/dashboard/workzone/orchestration/popups/newTask.html index fb1d95101..49f7313a8 100644 --- a/client/cat3/src/partials/sections/dashboard/workzone/orchestration/popups/newTask.html +++ b/client/cat3/src/partials/sections/dashboard/workzone/orchestration/popups/newTask.html @@ -298,7 +298,7 @@
Chef Server Details for - RLChefServer
@@ -387,7 +387,7 @@
Jenkins
@@ -531,7 +531,7 @@
Script Details
diff --git a/client/cat3/src/partials/sections/dashboard/workzone/orchestration/popups/newTaskCtrl.js b/client/cat3/src/partials/sections/dashboard/workzone/orchestration/popups/newTaskCtrl.js index 319a81705..20869689f 100644 --- a/client/cat3/src/partials/sections/dashboard/workzone/orchestration/popups/newTaskCtrl.js +++ b/client/cat3/src/partials/sections/dashboard/workzone/orchestration/popups/newTaskCtrl.js @@ -241,8 +241,12 @@ } }, selectTaskCheckbox: function(){ - $scope.showAddTask = true; $scope.isEventAvailable = false; + if($scope._isEventSelected.flag) { + $scope.showAddTask = true; + } else { + $scope.showAddTask = false; + } }, addTaskEvent : function() { $modal.open({ @@ -268,7 +272,7 @@ selectedDayOfTheMonth = $scope.chefJenkScriptTaskObj.selectedDayOfTheMonth; selectedMonth = $scope.chefJenkScriptTaskObj.monthOfYear; $scope.type = 'edit'; - $scope._isEventSelected = true; + //$scope._isEventSelected = true; $scope.repeatPattern = 'Repeat Every -' + $scope.chefJenkScriptTaskObj.repeats; $scope.cronDetails = { @@ -493,6 +497,9 @@ $scope.isExecution = { flag: 'PARALLEL' }; + $scope._isEventSelected = { + flag: false + }; /*in backend at the time of edit of task the jobResultUrlPattern was going as null. So there was in issue with the links disappearing.*/ $scope.jobResultURLPattern = []; From 936f82309007412462ac0a76844cb52cf73ca025 Mon Sep 17 00:00:00 2001 From: Udesh Date: Fri, 16 Dec 2016 16:18:55 +0530 Subject: [PATCH 02/75] added few more cookbooks for sensu --- server/app/lib/utils/masterUtil.js | 5 + .../aws-blueprint/aws-blueprint.js | 5 +- server/app/routes/v1.0/routes_chef.js | 265 ++- .../app/routes/v1.0/routes_organizations.js | 1790 +++++++++-------- .../app/routes/v1.0/routes_providercommon.js | 698 ++++--- 5 files changed, 1386 insertions(+), 1377 deletions(-) diff --git a/server/app/lib/utils/masterUtil.js b/server/app/lib/utils/masterUtil.js index 3fa0b1b02..ca10e8105 100755 --- a/server/app/lib/utils/masterUtil.js +++ b/server/app/lib/utils/masterUtil.js @@ -2225,6 +2225,11 @@ var MasterUtil = function () { return callback(null, templates); }); }; + + this.getSensuCookbooks = function(){ + var cookbooks = ['recipe[sensu-client]','recipe[sensu_check_load]','recipe[sensu_check_disk]','recipe[sensu_check_cpu]','recipe[sensu_check_memory]']; + return cookbooks; + }; //return cookbook attributes object for sensu-client this.getSensuCookbookAttributes = function (monitorDetails, instanceId) { diff --git a/server/app/model/blueprint/blueprint-types/instance-blueprint/aws-blueprint/aws-blueprint.js b/server/app/model/blueprint/blueprint-types/instance-blueprint/aws-blueprint/aws-blueprint.js index d6747e94b..afe69e624 100755 --- a/server/app/model/blueprint/blueprint-types/instance-blueprint/aws-blueprint/aws-blueprint.js +++ b/server/app/model/blueprint/blueprint-types/instance-blueprint/aws-blueprint/aws-blueprint.js @@ -537,9 +537,10 @@ AWSInstanceBlueprintSchema.methods.launch = function (launchParams, callback) { runlist = launchParams.blueprintData.extraRunlist.concat(instance.runlist); } - var sensuCookBook = 'recipe[sensu-client]'; + var sensuCookBooks = masterUtil.getSensuCookbooks(); + var sensuCookBook = sensuCookBooks[0]; if (runlist.indexOf(sensuCookBook) === -1 && launchParams.monitor && launchParams.monitor.parameters.transportProtocol === 'rabbitmq') { - runlist.unshift(sensuCookBook); + runlist = sensuCookBooks.concat(runlist); jsonAttributes['sensu-client'] = masterUtil.getSensuCookbookAttributes(launchParams.monitor, instance.id); } diff --git a/server/app/routes/v1.0/routes_chef.js b/server/app/routes/v1.0/routes_chef.js index 7684d37a2..c9a42a677 100755 --- a/server/app/routes/v1.0/routes_chef.js +++ b/server/app/routes/v1.0/routes_chef.js @@ -308,131 +308,130 @@ module.exports.setRoutes = function (app, verificationFunc) { return; } else if (credentialStatus) { monitorsModel.getById(reqBody.monitorId, function (err, monitor) { - var instance = { - name: node.name, - orgId: orgId, - bgId: bgId, - projectId: projectId, - envId: node.envId, - orgName: reqBody.orgName, - bgName: reqBody.bgName, - projectName: reqBody.projectName, - environmentName: envName, - chefNodeName: node.name, - runlist: runlist, - platformId: platformId, - instanceIP: nodeIp, - instanceState: 'running', - bootStrapStatus: 'success', - hardware: hardwareData, - tagServer: reqBody.tagServer, - monitor: monitor, - credentials: encryptedCredentials, - users: users, - chef: { - serverId: req.params.serverId, - chefNodeName: node.name - }, - blueprintData: { - blueprintName: node.name, - templateId: "chef_import", - iconPath: "../private/img/templateicons/chef_import.png" - } - }; - instancesDao.createInstance(instance, function (err, data) { - if (err) { - logger.debug(err, 'occured in inserting node in mongo'); - callback(err, null); - return; - } - instance.id = data._id; - instance._id = data._id; - - //install sensu client if monitoring server configured - if (instance.monitor && instance.monitor.parameters.transportProtocol === 'rabbitmq') { - var sensuCookBook = 'recipe[sensu-client]'; - var runlist = []; - var jsonAttributes = {}; - runlist.push(sensuCookBook); - jsonAttributes['sensu-client'] = MasterUtils.getSensuCookbookAttributes(instance.monitor,instance.id); - - runOptions = { - privateKey: credentials.pemFileLocation, - username: credentials.username, - host: instance.instanceIP, - instanceOS: instance.hardware.os, - port: 22, - runlist: runlist, - overrideRunlist: false, - jsonAttributes: JSON.stringify(jsonAttributes) - }; - chef.runClient(runOptions, function (err, retCode) { - logger.debug("knife ret code", retCode); - }); - - } - - - - - var timestampStarted = new Date().getTime(); - var actionLog = instancesDao.insertBootstrapActionLogForChef(instance.id, [], req.session.user.cn, timestampStarted); - var logsReferenceIds = [instance.id, actionLog._id]; - logsDao.insertLog({ - referenceId: logsReferenceIds, - err: false, - log: "Node Imported", - timestamp: timestampStarted - }); - var instanceLog = { - actionId: actionLog._id, - instanceId: instance.id, + var instance = { + name: node.name, + orgId: orgId, + bgId: bgId, + projectId: projectId, + envId: node.envId, orgName: reqBody.orgName, bgName: reqBody.bgName, projectName: reqBody.projectName, - envName: envName, - status: "running", - bootStrap: "success", - actionStatus: "success", + environmentName: envName, + chefNodeName: node.name, + runlist: runlist, platformId: platformId, - blueprintName: node.name, - data: runlist, - platform: hardwareData.platform, - os: hardwareData.os, - size: "", - user: req.session.user.cn, - startedOn: new Date().getTime(), - createdOn: new Date().getTime(), - providerType: "", - action: "Imported From ChefServer", - logs: [{ - err: false, - log: "Node Imported", - timestamp: new Date().getTime() - }] - }; - - instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { - if (err) { - logger.error("Failed to create or update instanceLog: ", err); + instanceIP: nodeIp, + instanceState: 'running', + bootStrapStatus: 'success', + hardware: hardwareData, + tagServer: reqBody.tagServer, + monitor: monitor, + credentials: encryptedCredentials, + users: users, + chef: { + serverId: req.params.serverId, + chefNodeName: node.name + }, + blueprintData: { + blueprintName: node.name, + templateId: "chef_import", + iconPath: "../private/img/templateicons/chef_import.png" } - }); - var _docker = new Docker(); - _docker.checkDockerStatus(data._id, function (err, retCode) { + }; + instancesDao.createInstance(instance, function (err, data) { if (err) { - logger.error("Failed _docker.checkDockerStatus", err); + logger.debug(err, 'occured in inserting node in mongo'); + callback(err, null); return; } - logger.debug('Docker Check Returned:' + retCode); - if (retCode == '0') { - instancesDao.updateInstanceDockerStatus(data._id, "success", '', function (data) { - logger.debug('Instance Docker Status set to Success'); + instance.id = data._id; + instance._id = data._id; + + //install sensu client if monitoring server configured + if (instance.monitor && instance.monitor.parameters.transportProtocol === 'rabbitmq') { + var sensuCookBooks = MasterUtils.getSensuCookbooks(); + var runlist = sensuCookBooks; + var jsonAttributes = {}; + jsonAttributes['sensu-client'] = MasterUtils.getSensuCookbookAttributes(instance.monitor, instance.id); + + runOptions = { + privateKey: credentials.pemFileLocation, + username: credentials.username, + host: instance.instanceIP, + instanceOS: instance.hardware.os, + port: 22, + runlist: runlist, + overrideRunlist: false, + jsonAttributes: JSON.stringify(jsonAttributes) + }; + chef.runClient(runOptions, function (err, retCode) { + logger.debug("knife ret code", retCode); }); + } + + + + + var timestampStarted = new Date().getTime(); + var actionLog = instancesDao.insertBootstrapActionLogForChef(instance.id, [], req.session.user.cn, timestampStarted); + var logsReferenceIds = [instance.id, actionLog._id]; + logsDao.insertLog({ + referenceId: logsReferenceIds, + err: false, + log: "Node Imported", + timestamp: timestampStarted + }); + var instanceLog = { + actionId: actionLog._id, + instanceId: instance.id, + orgName: reqBody.orgName, + bgName: reqBody.bgName, + projectName: reqBody.projectName, + envName: envName, + status: "running", + bootStrap: "success", + actionStatus: "success", + platformId: platformId, + blueprintName: node.name, + data: runlist, + platform: hardwareData.platform, + os: hardwareData.os, + size: "", + user: req.session.user.cn, + startedOn: new Date().getTime(), + createdOn: new Date().getTime(), + providerType: "", + action: "Imported From ChefServer", + logs: [{ + err: false, + log: "Node Imported", + timestamp: new Date().getTime() + }] + }; + + instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { + if (err) { + logger.error("Failed to create or update instanceLog: ", err); + } + }); + var _docker = new Docker(); + _docker.checkDockerStatus(data._id, function (err, retCode) { + if (err) { + logger.error("Failed _docker.checkDockerStatus", err); + return; + } + logger.debug('Docker Check Returned:' + retCode); + if (retCode == '0') { + instancesDao.updateInstanceDockerStatus(data._id, "success", '', function (data) { + logger.debug('Instance Docker Status set to Success'); + }); + } + }); + callback(null, data); }); - callback(null, data); }); - }); } else { callback({message: "Invalid Credentials"}, null); } @@ -559,7 +558,7 @@ module.exports.setRoutes = function (app, verificationFunc) { } MasterUtils.getCongifMgmtsById(req.params.serverId, function (err, chefDetails) { - + if (err) { res.send(500); return; @@ -1422,25 +1421,25 @@ module.exports.setRoutes = function (app, verificationFunc) { app.get("/chef/nodeList", function (req, res) { var reqObj = {}; async.waterfall( - [ - function (next) { - apiUtil.changeRequestForJqueryPagination(req.query, next); - }, - function (reqData, next) { - reqObj = reqData; - apiUtil.paginationRequest(reqData, 'chefNodes', next); - }, - function (paginationReq, next) { - paginationReq['searchColumns'] = ['chefNodeIp', 'chefNodeName', "chefNodePlatform"]; - apiUtil.databaseUtil(paginationReq, next); - }, - function (queryObj, next) { - chefDao.getNodesByServerId(queryObj, next); - }, - function (nodes, next) { - apiUtil.changeResponseForJqueryPagination(nodes, reqObj, next); - }, - ], function (err, results) { + [ + function (next) { + apiUtil.changeRequestForJqueryPagination(req.query, next); + }, + function (reqData, next) { + reqObj = reqData; + apiUtil.paginationRequest(reqData, 'chefNodes', next); + }, + function (paginationReq, next) { + paginationReq['searchColumns'] = ['chefNodeIp', 'chefNodeName', "chefNodePlatform"]; + apiUtil.databaseUtil(paginationReq, next); + }, + function (queryObj, next) { + chefDao.getNodesByServerId(queryObj, next); + }, + function (nodes, next) { + apiUtil.changeResponseForJqueryPagination(nodes, reqObj, next); + }, + ], function (err, results) { if (err) { res.send(err); } else { diff --git a/server/app/routes/v1.0/routes_organizations.js b/server/app/routes/v1.0/routes_organizations.js index 0a852c9eb..c6b94c98c 100755 --- a/server/app/routes/v1.0/routes_organizations.js +++ b/server/app/routes/v1.0/routes_organizations.js @@ -1,12 +1,12 @@ /* Copyright [2016] [Relevance Lab] - + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - + http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -56,14 +56,14 @@ var monitorsModel = require('_pr/model/monitors/monitors.js'); var catalystSync = require('_pr/cronjobs/catalyst-scheduler/catalystScheduler.js'); var botsService = require('_pr/services/botsService.js'); -module.exports.setRoutes = function(app, sessionVerification) { +module.exports.setRoutes = function (app, sessionVerification) { /* * API without authentication provider to support telemetry. * @TODO To be moved to routes specific to containers. */ - app.get('/containers', function(req, res) { + app.get('/containers', function (req, res) { logger.debug("Enter get() for all docker Containers"); - containerDao.getAllContainers(function(err, containerList) { + containerDao.getAllContainers(function (err, containerList) { if (err) { logger.error(err); res.send(err); @@ -81,111 +81,111 @@ module.exports.setRoutes = function(app, sessionVerification) { app.all('/organizations/*', sessionVerification); - app.get('/organizations/getTreeNew', function(req, res) { + app.get('/organizations/getTreeNew', function (req, res) { logger.debug("Enter get() for /organizations/getTreeNew"); var loggedInUser = req.session.user.cn; var masterDetailList = []; var orgIds = []; async.waterfall([ - function(next){ - masterUtil.getLoggedInUser(loggedInUser,next); + function (next) { + masterUtil.getLoggedInUser(loggedInUser, next); }, - function(userDetails,next){ - if(userDetails.loginname){ - masterUtil.getAllSettingsForUser(loggedInUser,next); - }else{ - next('Invalid User.',null); + function (userDetails, next) { + if (userDetails.loginname) { + masterUtil.getAllSettingsForUser(loggedInUser, next); + } else { + next('Invalid User.', null); } }, - function(masterDetails,next){ - if(masterDetails.length > 0){ + function (masterDetails, next) { + if (masterDetails.length > 0) { masterDetailList = masterDetails; d4dModelNew.d4dModelMastersOrg.find({ - id: '1', - active: true, - rowid: { - $in: masterDetails[0].orgs - } - },next) - }else{ - next('getTeamsOrgBuProjForUser : is null',null); + id: '1', + active: true, + rowid: { + $in: masterDetails[0].orgs + } + }, next) + } else { + next('getTeamsOrgBuProjForUser : is null', null); } }, - function(orgList,next){ - if(orgList.length > 0){ + function (orgList, next) { + if (orgList.length > 0) { var orgTree = []; - for(var i = 0; i < orgList.length;i++){ + for (var i = 0; i < orgList.length; i++) { orgIds.push(orgList[i].rowid); var orgObj = { - name:orgList[i].orgname, - orgid:orgList[i].rowid, - rowid:orgList[i].rowid, - businessGroups:[], - environments:[], + name: orgList[i].orgname, + orgid: orgList[i].rowid, + rowid: orgList[i].rowid, + businessGroups: [], + environments: [], } orgTree.push(orgObj); - if(orgTree.length === orgList.length){ - next(null,orgTree); + if (orgTree.length === orgList.length) { + next(null, orgTree); } } - }else{ - next(null,orgList); + } else { + next(null, orgList); } }, - function(orgTree,next){ - if(orgTree.length > 0){ + function (orgTree, next) { + if (orgTree.length > 0) { var orgCount = 0; var bgObjList = []; - for(var i = 0; i < orgTree.length;i++){ - (function(org){ + for (var i = 0; i < orgTree.length; i++) { + (function (org) { d4dModelNew.d4dModelMastersProductGroup.find({ id: '2', - orgname_rowid:{ - $in :[org.rowid] + orgname_rowid: { + $in: [org.rowid] }, rowid: { $in: masterDetailList[0].bunits } - }, function(err, bgList) { - if(err){ + }, function (err, bgList) { + if (err) { next(err); - }else if(bgList.length > 0){ + } else if (bgList.length > 0) { orgCount++; - for(var j = 0; j < bgList.length;j++){ - (function(bg){ + for (var j = 0; j < bgList.length; j++) { + (function (bg) { var bgObj = { name: bg.productgroupname, rowid: bg.rowid, projects: [] } - syncDesignTreeWithProjectAndEnv(org.rowid,bg.rowid,function(err,data){ - if(err){ + syncDesignTreeWithProjectAndEnv(org.rowid, bg.rowid, function (err, data) { + if (err) { next(err); } bgObj.projects = data; org.businessGroups.push(bgObj); bgObjList.push(bgObj); - if(orgCount === orgTree.length && bgObjList.length === bgList.length){ - next(null,orgTree); + if (orgCount === orgTree.length && bgObjList.length === bgList.length) { + next(null, orgTree); } }) })(bgList[j]); } - }else{ + } else { orgCount++; - if(orgCount === orgTree.length && bgObjList.length === bgList.length){ - next(null,orgTree); + if (orgCount === orgTree.length && bgObjList.length === bgList.length) { + next(null, orgTree); } } }) })(orgTree[i]); } - }else{ - next(null,orgTree); + } else { + next(null, orgTree); } }, - function(orgBgProjectTree,next){ - if(orgBgProjectTree.length > 0) { + function (orgBgProjectTree, next) { + if (orgBgProjectTree.length > 0) { var orgCount = 0; var envObjList = []; for (var i = 0; i < orgBgProjectTree.length; i++) { @@ -211,7 +211,7 @@ module.exports.setRoutes = function(app, sessionVerification) { next(null, orgBgProjectTree); } } - }else{ + } else { orgTree.environments.push(''); if (orgCount === orgBgProjectTree.length) { next(null, orgBgProjectTree); @@ -220,36 +220,36 @@ module.exports.setRoutes = function(app, sessionVerification) { }); })(orgBgProjectTree[i]); } - }else{ - next(null,orgBgProjectTree); + } else { + next(null, orgBgProjectTree); } } - ],function(err,results){ - if(err){ + ], function (err, results) { + if (err) { res.status(500).send(err); } res.status(200).send(results); }) }); - app.get('/organizations/getTreeForbtv', function(req, res) { + app.get('/organizations/getTreeForbtv', function (req, res) { logger.debug("Enter get() for /organizations/getTreeForbtv"); var loggedInUser = req.session.user.cn; var masterDetailList = []; var orgIds = []; async.waterfall([ - function(next){ - masterUtil.getLoggedInUser(loggedInUser,next); + function (next) { + masterUtil.getLoggedInUser(loggedInUser, next); }, - function(userDetails,next){ - if(userDetails.loginname){ - masterUtil.getAllSettingsForUser(loggedInUser,next); - }else{ - next('Invalid User.',null); + function (userDetails, next) { + if (userDetails.loginname) { + masterUtil.getAllSettingsForUser(loggedInUser, next); + } else { + next('Invalid User.', null); } }, - function(masterDetails,next){ - if(masterDetails.length > 0){ + function (masterDetails, next) { + if (masterDetails.length > 0) { masterDetailList = masterDetails; d4dModelNew.d4dModelMastersOrg.find({ id: '1', @@ -257,15 +257,15 @@ module.exports.setRoutes = function(app, sessionVerification) { rowid: { $in: masterDetails[0].orgs } - },next) - }else{ - next('getTeamsOrgBuProjForUser : is null',null); + }, next) + } else { + next('getTeamsOrgBuProjForUser : is null', null); } }, - function(orgList,next){ - if(orgList.length > 0){ + function (orgList, next) { + if (orgList.length > 0) { var orgTree = []; - for(var i = 0; i < orgList.length;i++){ + for (var i = 0; i < orgList.length; i++) { orgIds.push(orgList[i].rowid); var orgObj = { name: orgList[i].orgname, @@ -281,35 +281,35 @@ module.exports.setRoutes = function(app, sessionVerification) { environments: [] } orgTree.push(orgObj); - if(orgTree.length === orgList.length){ - next(null,orgTree); + if (orgTree.length === orgList.length) { + next(null, orgTree); } } - }else{ - next(null,orgList); + } else { + next(null, orgList); } }, - function(orgTree,next){ - if(orgTree.length > 0){ + function (orgTree, next) { + if (orgTree.length > 0) { var orgCount = 0; var bgObjList = []; - for(var i = 0; i < orgTree.length;i++){ - (function(org){ + for (var i = 0; i < orgTree.length; i++) { + (function (org) { d4dModelNew.d4dModelMastersProductGroup.find({ id: '2', - orgname_rowid:{ - $in :[org.rowid] + orgname_rowid: { + $in: [org.rowid] }, rowid: { $in: masterDetailList[0].bunits } - }, function(err, bgList) { - if(err){ + }, function (err, bgList) { + if (err) { next(err); - }else if(bgList.length > 0){ + } else if (bgList.length > 0) { orgCount++; - for(var j = 0; j < bgList.length;j++){ - (function(bg){ + for (var j = 0; j < bgList.length; j++) { + (function (bg) { var bgObj = { name: bg.productgroupname, text: bg.productgroupname, @@ -331,41 +331,41 @@ module.exports.setRoutes = function(app, sessionVerification) { itemtype: 'bg', projects: [] } - syncWorkZoneTreeWithProjectAndEnv(org.rowid,org.name,bg.rowid,bg.productgroupname,function(err,data){ - if(err){ + syncWorkZoneTreeWithProjectAndEnv(org.rowid, org.name, bg.rowid, bg.productgroupname, function (err, data) { + if (err) { next(err); } - if(data.projectObj){ + if (data.projectObj) { bgObj.projects = data.projectObj; nodeObj.projects = data.projectObj; } - if(data.projectNodeObj){ + if (data.projectNodeObj) { nodeObj.nodes = data.projectNodeObj; } org.businessGroups.push(bgObj); org.nodes.push(nodeObj); bgObjList.push(bgObj); - if(orgCount === orgTree.length && bgObjList.length === bgList.length){ - next(null,orgTree); + if (orgCount === orgTree.length && bgObjList.length === bgList.length) { + next(null, orgTree); } }) })(bgList[j]); } - }else{ + } else { orgCount++; - if(orgCount === orgTree.length && bgObjList.length === bgList.length){ - next(null,orgTree); + if (orgCount === orgTree.length && bgObjList.length === bgList.length) { + next(null, orgTree); } } }) })(orgTree[i]); } - }else{ - next(null,orgTree); + } else { + next(null, orgTree); } }, - function(orgBgProjectTree,next){ - if(orgBgProjectTree.length > 0) { + function (orgBgProjectTree, next) { + if (orgBgProjectTree.length > 0) { var orgCount = 0; var envObjList = []; for (var i = 0; i < orgBgProjectTree.length; i++) { @@ -391,7 +391,7 @@ module.exports.setRoutes = function(app, sessionVerification) { next(null, orgBgProjectTree); } } - }else{ + } else { orgTree.environments.push(''); if (orgCount === orgBgProjectTree.length) { next(null, orgBgProjectTree); @@ -400,22 +400,22 @@ module.exports.setRoutes = function(app, sessionVerification) { }) })(orgBgProjectTree[i]); } - }else{ - next(null,orgBgProjectTree); + } else { + next(null, orgBgProjectTree); } } - ],function(err,results){ - if(err){ + ], function (err, results) { + if (err) { res.status(500).send(err); } res.status(200).send(results); }) }); - app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/blueprints', function(req, res) { + app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/blueprints', function (req, res) { logger.debug("Enter get() for /organizations/%s/businessgroups/%s/projects/%s/environments/%s/blueprints", req.params.orgId, req.params.bgId, req.params.projectId, req.params.envId); //getting the list of projects and confirming if user has permission on project - blueprintsDao.getBlueprintsByOrgBgProjectAndEnvId(req.params.orgId, req.params.bgId, req.params.projectId, req.params.envId, req.query.blueprintType, req.session.user.cn, function(err, data) { + blueprintsDao.getBlueprintsByOrgBgProjectAndEnvId(req.params.orgId, req.params.bgId, req.params.projectId, req.params.envId, req.query.blueprintType, req.session.user.cn, function (err, data) { if (err) { res.send(500); return; @@ -427,7 +427,7 @@ module.exports.setRoutes = function(app, sessionVerification) { }); - app.post('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/blueprints', function(req, res) { + app.post('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/blueprints', function (req, res) { logger.debug("Enter post() for /organizations/%s/businessgroups/%s/projects/%s/environments/%s/blueprints", req.params.orgId, req.params.bgId, req.params.projectId, req.params.envId, req.params.providerId, req.params.imageId); //validating if user has permission to save a blueprint @@ -455,10 +455,10 @@ module.exports.setRoutes = function(app, sessionVerification) { var botType = req.body.blueprintData.botType; var botCategory = req.body.blueprintData.botCategory; var serviceDeliveryCheck = req.body.blueprintData.serviceDeliveryCheck; - if(req.body.blueprintData.manualExecutionTime && req.body.blueprintData.manualExecutionTime !== null){ + if (req.body.blueprintData.manualExecutionTime && req.body.blueprintData.manualExecutionTime !== null) { manualExecutionTime = req.body.blueprintData.manualExecutionTime; } - if(req.body.blueprintData.domainNameCheck === 'true'){ + if (req.body.blueprintData.domainNameCheck === 'true') { domainNameCheck = true; } // a temp fix for invalid appurl data. will be removed in next iteration @@ -473,7 +473,7 @@ module.exports.setRoutes = function(app, sessionVerification) { } appUrls = tempAppUrls; - usersDao.haspermission(user.cn, category, permissionto, null, req.session.user.permissionset, function(err, data) { + usersDao.haspermission(user.cn, category, permissionto, null, req.session.user.permissionset, function (err, data) { if (!err) { logger.debug('Returned from haspermission : ' + data + ' : ' + (data == false)); if (data == false) { @@ -504,12 +504,12 @@ module.exports.setRoutes = function(app, sessionVerification) { blueprintType: blueprintType, nexus: nexus, docker: docker, - shortDesc:shortDesc, - botType:botType, - botCategory:botCategory, - serviceDeliveryCheck:serviceDeliveryCheck, - domainNameCheck:domainNameCheck, - manualExecutionTime:manualExecutionTime + shortDesc: shortDesc, + botType: botType, + botCategory: botCategory, + serviceDeliveryCheck: serviceDeliveryCheck, + domainNameCheck: domainNameCheck, + manualExecutionTime: manualExecutionTime }; //adding bluerpintID if present (edit mode) if (blueprintId) @@ -667,7 +667,7 @@ module.exports.setRoutes = function(app, sessionVerification) { // }); // return; // } - Blueprints.createNew(blueprintData, function(err, bluePrintData) { + Blueprints.createNew(blueprintData, function (err, bluePrintData) { if (err) { logger.error('error occured while saving blueorint', err); res.status(500).send({ @@ -675,8 +675,8 @@ module.exports.setRoutes = function(app, sessionVerification) { }); return; } - if(bluePrintData.serviceDeliveryCheck === true){ - masterUtil.getParticularProject(projectId, function(err, project) { + if (bluePrintData.serviceDeliveryCheck === true) { + masterUtil.getParticularProject(projectId, function (err, project) { if (err) { logger.error(err); } else if (project.length > 0) { @@ -684,9 +684,9 @@ module.exports.setRoutes = function(app, sessionVerification) { bluePrintData.bgName = project[0].productgroupname; bluePrintData.projectName = project[0].projectname; botsService.createOrUpdateBots(bluePrintData, 'Blueprint', blueprintType, function (err, botsData) { - if(err) { + if (err) { logger.error("Error in creating bots entry. " + err); - }else{ + } else { logger.debug("Successfully added data for Bots.") } }); @@ -704,7 +704,7 @@ module.exports.setRoutes = function(app, sessionVerification) { - app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/instances', function(req, res) { + app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/instances', function (req, res) { var jsonData = {}; jsonData['orgId'] = req.params.orgId; jsonData['bgId'] = req.params.bgId; @@ -713,7 +713,7 @@ module.exports.setRoutes = function(app, sessionVerification) { jsonData['instanceType'] = req.query.instanceType; jsonData['userName'] = req.session.user.cn; jsonData['id'] = 'instances'; - instancesDao.getInstancesByOrgBgProjectAndEnvId(jsonData, function(err, instancedata) { + instancesDao.getInstancesByOrgBgProjectAndEnvId(jsonData, function (err, instancedata) { if (err) { res.send(500); return; @@ -722,14 +722,14 @@ module.exports.setRoutes = function(app, sessionVerification) { }); }); - app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/tasks', function(req, res) { + app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/tasks', function (req, res) { var jsonData = {}; jsonData['orgId'] = req.params.orgId; jsonData['bgId'] = req.params.bgId; jsonData['projectId'] = req.params.projectId; jsonData['envId'] = req.params.envId; - Task.getTasksByOrgBgProjectAndEnvId(jsonData, function(err, taskdata) { + Task.getTasksByOrgBgProjectAndEnvId(jsonData, function (err, taskdata) { if (err) { res.send(500); return; @@ -738,12 +738,12 @@ module.exports.setRoutes = function(app, sessionVerification) { }); }); - app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/applications', function(req, res) { + app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/applications', function (req, res) { var jsonData = {}; jsonData['orgId'] = req.params.orgId; jsonData['bgId'] = req.params.bgId; jsonData['projectId'] = req.params.projectId; - Application.getAppCardsByOrgBgAndProjectId(jsonData, function(err, applications) { + Application.getAppCardsByOrgBgAndProjectId(jsonData, function (err, applications) { if (err) { res.send(500); return; @@ -753,14 +753,14 @@ module.exports.setRoutes = function(app, sessionVerification) { }); app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/instanceList', validate(orgValidator.get), getInstanceList); - + function getInstanceList(req, res, next) { var reqData = {}; async.waterfall([ - function(next) { + function (next) { apiUtil.paginationRequest(req.query, 'instances', next); }, - function(paginationReq, next) { + function (paginationReq, next) { paginationReq['orgId'] = req.params.orgId; paginationReq['bgId'] = req.params.bgId; paginationReq['projectId'] = req.params.projectId; @@ -770,33 +770,33 @@ module.exports.setRoutes = function(app, sessionVerification) { reqData = paginationReq; apiUtil.databaseUtil(paginationReq, next); }, - function(queryObj, next) { + function (queryObj, next) { queryObj['pagination'] = true; instancesDao.getInstancesByOrgBgProjectAndEnvId(queryObj, next); }, - function(instances, next) { + function (instances, next) { apiUtil.paginationResponse(instances, reqData, next); - }],function(err, results) { - if (err) { - res.send({ - "errorCode": 500, - "message": "Error occured while fetching Instance." - }); - } else{ - return res.send(results); - } - }); + }], function (err, results) { + if (err) { + res.send({ + "errorCode": 500, + "message": "Error occured while fetching Instance." + }); + } else { + return res.send(results); + } + }); } app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/taskList', validate(orgValidator.get), getTaskList); - + function getTaskList(req, res, next) { var reqData = {}; async.waterfall([ - function(next) { + function (next) { apiUtil.paginationRequest(req.query, 'tasks', next); }, - function(paginationReq, next) { + function (paginationReq, next) { paginationReq['orgId'] = req.params.orgId; paginationReq['bgId'] = req.params.bgId; paginationReq['projectId'] = req.params.projectId; @@ -805,22 +805,22 @@ module.exports.setRoutes = function(app, sessionVerification) { reqData = paginationReq; apiUtil.databaseUtil(paginationReq, next); }, - function(queryObj, next) { + function (queryObj, next) { queryObj['pagination'] = true; Task.getTasksByOrgBgProjectAndEnvId(queryObj, next); }, - function(tasks, next) { + function (tasks, next) { apiUtil.paginationResponse(tasks, reqData, next); - }],function(err, results) { - if (err) { - res.send({ - "errorCode": 500, - "message": "Error occured while fetching Task." - }); - } else{ - return res.send(results); - } - }); + }], function (err, results) { + if (err) { + res.send({ + "errorCode": 500, + "message": "Error occured while fetching Task." + }); + } else { + return res.send(results); + } + }); } app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/chefTasks', validate(orgValidator.get), getChefTaskList); @@ -831,7 +831,7 @@ module.exports.setRoutes = function(app, sessionVerification) { jsonData['bgId'] = req.params.bgId; jsonData['projectId'] = req.params.projectId; jsonData['envId'] = req.params.envId; - taskService.getChefTasksByOrgBgProjectAndEnvId(jsonData, function(err, chefTasks) { + taskService.getChefTasksByOrgBgProjectAndEnvId(jsonData, function (err, chefTasks) { if (err) { logger.err(err); res.send(500); @@ -846,48 +846,48 @@ module.exports.setRoutes = function(app, sessionVerification) { function getApplicationList(req, res, next) { var reqData = {}; async.waterfall([ - function(next) { + function (next) { apiUtil.paginationRequest(req.query, 'applications', next); }, - function(paginationReq, next) { + function (paginationReq, next) { paginationReq['orgId'] = req.params.orgId; paginationReq['bgId'] = req.params.bgId; paginationReq['projectId'] = req.params.projectId; - paginationReq['searchColumns']=['name','buildId']; + paginationReq['searchColumns'] = ['name', 'buildId']; reqData = paginationReq; apiUtil.databaseUtil(paginationReq, next); }, - function(queryObj, next) { + function (queryObj, next) { queryObj['pagination'] = true; Application.getAppCardsByOrgBgAndProjectId(paginationReq, next); }, - function(applications, next) { + function (applications, next) { apiUtil.paginationResponse(applications, reqData, next); } - ],function(err, results) { - if (err) { - res.send({ - "errorCode": 500, - "message": "Error occured while fetching Blueprints." - }); - } else{ - return res.send(results); - } - }); + ], function (err, results) { + if (err) { + res.send({ + "errorCode": 500, + "message": "Error occured while fetching Blueprints." + }); + } else { + return res.send(results); + } + }); } - app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/applications/:applicationId/build/:buildId', function(req, res) { - Application.getApplicationById(req.params.applicationId, function(err, application) { + app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/applications/:applicationId/build/:buildId', function (req, res) { + Application.getApplicationById(req.params.applicationId, function (err, application) { if (err) { res.status(500).send(errorResponses.db.error); return; } if (application) { - application.getBuild(function(err, build) { + application.getBuild(function (err, build) { if (err) { res.status(500).send(errorResponses.db.error); return; @@ -902,7 +902,7 @@ module.exports.setRoutes = function(app, sessionVerification) { }); }); - app.post('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/applications', function(req, res) { + app.post('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/applications', function (req, res) { logger.debug(req.files); logger.debug(req.body.appData); logger.debug("Enter post() for /organizations/%s/businessgroups/%s/projects/%s/applications", req.params.orgId, req.params.bgId, req.params.projectId); @@ -910,7 +910,7 @@ module.exports.setRoutes = function(app, sessionVerification) { appData.orgId = req.params.orgId; appData.bgId = req.params.bgId; appData.projectId = req.params.projectId; - Application.createNew(appData, function(err, data) { + Application.createNew(appData, function (err, data) { if (err) { res.send(500); return; @@ -922,7 +922,7 @@ module.exports.setRoutes = function(app, sessionVerification) { //Duplicated with provider filter for BP Edit - app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/', function(req, res) { + app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/', function (req, res) { var jsonData = {}; jsonData['orgId'] = req.params.orgId; jsonData['bgId'] = req.params.bgId; @@ -933,7 +933,7 @@ module.exports.setRoutes = function(app, sessionVerification) { jsonData['blueprintType'] = req.query.blueprintType - configmgmtDao.getTeamsOrgBuProjForUser(req.session.user.cn, function(err, orgbuprojs) { + configmgmtDao.getTeamsOrgBuProjForUser(req.session.user.cn, function (err, orgbuprojs) { if (orgbuprojs.length === 0) { res.send(401, "User not part of team to see project."); return; @@ -941,31 +941,31 @@ module.exports.setRoutes = function(app, sessionVerification) { if (!err) { if (typeof orgbuprojs[0].projects !== "undefined" && orgbuprojs[0].projects.indexOf(req.params.projectId) >= 0) { async.parallel({ - tasks: function(callback) { - Task.getTasksByOrgBgProjectAndEnvId(jsonData, callback); - }, - instances: function(callback) { - instancesDao.getInstancesByOrgBgProjectAndEnvId(jsonData, callback); - }, - blueprints: function(callback) { - Blueprints.getBlueprintsByOrgBgProject(jsonData, callback); - }, - stacks: function(callback) { - CloudFormation.findByOrgBgProjectAndEnvId(jsonData, callback); - }, - arms: function(callback) { - AzureArm.findByOrgBgProjectAndEnvId(jsonData, callback); - } + tasks: function (callback) { + Task.getTasksByOrgBgProjectAndEnvId(jsonData, callback); }, - function(err, results) { - if (err) { - res.status(500).send("Internal Server Error"); - } else if (!results) { - res.status(400).send("Data Not Found"); - } else { - res.status(200).send(results); - } + instances: function (callback) { + instancesDao.getInstancesByOrgBgProjectAndEnvId(jsonData, callback); + }, + blueprints: function (callback) { + Blueprints.getBlueprintsByOrgBgProject(jsonData, callback); + }, + stacks: function (callback) { + CloudFormation.findByOrgBgProjectAndEnvId(jsonData, callback); + }, + arms: function (callback) { + AzureArm.findByOrgBgProjectAndEnvId(jsonData, callback); } + }, + function (err, results) { + if (err) { + res.status(500).send("Internal Server Error"); + } else if (!results) { + res.status(400).send("Data Not Found"); + } else { + res.status(200).send(results); + } + } ); } else { @@ -979,7 +979,7 @@ module.exports.setRoutes = function(app, sessionVerification) { }); }); - app.post('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/tasks', function(req, res) { + app.post('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/tasks', function (req, res) { logger.debug("Enter post() for /organizations/%s/businessGroups/%s/projects/%s/environments/%s/tasks", req.params.orgId, req.params.bgId, req.params.projectId, req.params.environments); var taskData = req.body.taskData; taskData.orgId = req.params.orgId; @@ -987,12 +987,13 @@ module.exports.setRoutes = function(app, sessionVerification) { taskData.projectId = req.params.projectId; taskData.envId = req.params.envId; taskData.autoSyncFlag = req.body.taskData.autoSyncFlag; - masterUtil.getParticularProject(req.params.projectId, function(err, project) { + masterUtil.getParticularProject(req.params.projectId, function (err, project) { if (err) { logger.error(err); res.status(500).send("Failed to get project via project id: ", err); return; - }; + } + ; if (project.length === 0) { logger.error(err); res.status(500).send("Unable to find Project Information from project id: ", err); @@ -1001,31 +1002,31 @@ module.exports.setRoutes = function(app, sessionVerification) { taskData.orgName = project[0].orgname; taskData.bgName = project[0].productgroupname; taskData.projectName = project[0].projectname; - if(taskData.taskScheduler && taskData.taskScheduler !== null && Object.keys(taskData.taskScheduler).length !== 0) { + if (taskData.taskScheduler && taskData.taskScheduler !== null && Object.keys(taskData.taskScheduler).length !== 0) { taskData.taskScheduler = apiUtil.createCronJobPattern(taskData.taskScheduler); taskData.isTaskScheduled = true; } - if(taskData.taskType === 'jenkins'){ - taskData.executionOrder= 'PARALLEL'; + if (taskData.taskType === 'jenkins') { + taskData.executionOrder = 'PARALLEL'; } - if(taskData.manualExecutionTime && taskData.manualExecutionTime !== null){ + if (taskData.manualExecutionTime && taskData.manualExecutionTime !== null) { taskData.manualExecutionTime = parseInt(taskData.manualExecutionTime); - }else{ + } else { taskData.manualExecutionTime = 10; } - configmgmtDao.getEnvNameFromEnvId(req.params.envId, function(err, envName) { + configmgmtDao.getEnvNameFromEnvId(req.params.envId, function (err, envName) { if (err) { res.status(500).send("Failed to fetch ENV: ", err); return; } taskData.envName = envName; - if(taskData.taskType === 'script'){ - encryptedParam(taskData.scriptDetails,function(err,encryptedParam){ - if(err){ + if (taskData.taskType === 'script') { + encryptedParam(taskData.scriptDetails, function (err, encryptedParam) { + if (err) { logger.error(err); res.status(500).send("Failed to encrypted script parameters: ", err); return; - }else{ + } else { taskData.scriptDetails = encryptedParam; Task.createNew(taskData, function (err, task) { if (err) { @@ -1033,16 +1034,17 @@ module.exports.setRoutes = function(app, sessionVerification) { res.status(500).send("Failed to create task: ", err); return; } - if(task.isTaskScheduled === true){ - if(task.executionOrder === 'PARALLEL'){ + if (task.isTaskScheduled === true) { + if (task.executionOrder === 'PARALLEL') { catalystSync.executeParallelScheduledTasks(); - }else{ + } else { catalystSync.executeSerialScheduledTasks(); } - }; - if(task.serviceDeliveryCheck === true){ - botsService.createOrUpdateBots(task,'Task',task.taskType,function(err,data){ - if(err) { + } + ; + if (task.serviceDeliveryCheck === true) { + botsService.createOrUpdateBots(task, 'Task', task.taskType, function (err, data) { + if (err) { logger.error("Error in creating bots entry." + err); } }); @@ -1052,24 +1054,25 @@ module.exports.setRoutes = function(app, sessionVerification) { }); } }) - }else { + } else { Task.createNew(taskData, function (err, task) { if (err) { logger.error(err); res.status(500).send("Failed to create task: ", err); return; } - if(task.isTaskScheduled === true){ - if(task.executionOrder === 'PARALLEL'){ + if (task.isTaskScheduled === true) { + if (task.executionOrder === 'PARALLEL') { catalystSync.executeParallelScheduledTasks(); - }else{ + } else { catalystSync.executeSerialScheduledTasks(); } - }; - if(task.serviceDeliveryCheck === true){ - botsService.createOrUpdateBots(task,'Task',task.taskType,function(err,data){ - if(err) { + } + ; + if (task.serviceDeliveryCheck === true) { + botsService.createOrUpdateBots(task, 'Task', task.taskType, function (err, data) { + if (err) { logger.error("Error in creating bots entry." + err); } }); @@ -1082,50 +1085,50 @@ module.exports.setRoutes = function(app, sessionVerification) { }); }); - function encryptedParam(paramDetails,callback){ + function encryptedParam(paramDetails, callback) { var cryptoConfig = appConfig.cryptoSettings; var cryptography = new Cryptography(cryptoConfig.algorithm, cryptoConfig.password); var count = 0; var encryptedList = []; - for(var i = 0; i < paramDetails.length; i++){ - (function(paramDetail){ - if(paramDetail.scriptParameters.length > 0){ + for (var i = 0; i < paramDetails.length; i++) { + (function (paramDetail) { + if (paramDetail.scriptParameters.length > 0) { count++; - for(var j = 0; j < paramDetail.scriptParameters.length; j++){ - (function(scriptParameter){ + for (var j = 0; j < paramDetail.scriptParameters.length; j++) { + (function (scriptParameter) { var encryptedText = cryptography.encryptText(scriptParameter.paramVal, cryptoConfig.encryptionEncoding, - cryptoConfig.decryptionEncoding); + cryptoConfig.decryptionEncoding); encryptedList.push({ - paramVal:encryptedText, - paramDesc:scriptParameter.paramDesc + paramVal: encryptedText, + paramDesc: scriptParameter.paramDesc }); - if(encryptedList.length === paramDetail.scriptParameters.length){ + if (encryptedList.length === paramDetail.scriptParameters.length) { paramDetail.scriptParameters = encryptedList; encryptedList = []; } })(paramDetail.scriptParameters[j]); } - }else{ + } else { count++; } - if(count === paramDetails.length){ - callback(null,paramDetails); + if (count === paramDetails.length) { + callback(null, paramDetails); return; } })(paramDetails[i]); } } - + app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/cftList', validate(orgValidator.get), getCftList); function getCftList(req, res, next) { var reqData = {}; async.waterfall([ - function(next) { + function (next) { apiUtil.paginationRequest(req.query, 'cftList', next); }, - function(paginationReq, next) { + function (paginationReq, next) { paginationReq['orgId'] = req.params.orgId; paginationReq['bgId'] = req.params.bgId; paginationReq['projectId'] = req.params.projectId; @@ -1134,22 +1137,22 @@ module.exports.setRoutes = function(app, sessionVerification) { reqData = paginationReq; apiUtil.databaseUtil(paginationReq, next); }, - function(queryObj, next) { + function (queryObj, next) { queryObj['pagination'] = true; CloudFormation.findByOrgBgProjectAndEnvId(queryObj, next); }, - function(cftData, next) { + function (cftData, next) { apiUtil.paginationResponse(cftData, reqData, next); - }], function(err, results) { - if (err) { - res.send({ - "errorCode": 500, - "message": "Error occured while fetching CFT." - }); - } else{ - return res.send(results); - } - }); + }], function (err, results) { + if (err) { + res.send({ + "errorCode": 500, + "message": "Error occured while fetching CFT." + }); + } else { + return res.send(results); + } + }); } app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/azureArmList', validate(orgValidator.get), getAzureArmList); @@ -1157,10 +1160,10 @@ module.exports.setRoutes = function(app, sessionVerification) { function getAzureArmList(req, res, next) { var reqData = {}; async.waterfall([ - function(next) { + function (next) { apiUtil.paginationRequest(req.query, 'azureArms', next); }, - function(paginationReq, next) { + function (paginationReq, next) { paginationReq['orgId'] = req.params.orgId; paginationReq['bgId'] = req.params.bgId; paginationReq['projectId'] = req.params.projectId; @@ -1169,23 +1172,23 @@ module.exports.setRoutes = function(app, sessionVerification) { reqData = paginationReq; apiUtil.databaseUtil(paginationReq, next); }, - function(queryObj, next) { + function (queryObj, next) { queryObj['pagination'] = true; AzureArm.findByOrgBgProjectAndEnvId(queryObj, next); }, - function(armsData, next) { + function (armsData, next) { apiUtil.paginationResponse(armsData, reqData, next); }], - function(err, results) { - if (err) { - res.send({ - "errorCode": 500, - "message": "Error occured while fetching Azure." - }); - } else{ - return res.send(results); - } - }); + function (err, results) { + if (err) { + res.send({ + "errorCode": 500, + "message": "Error occured while fetching Azure." + }); + } else { + return res.send(results); + } + }); } app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/containerList', validate(orgValidator.get), getContainerList); @@ -1193,10 +1196,10 @@ module.exports.setRoutes = function(app, sessionVerification) { function getContainerList(req, res, next) { var reqData = {}; async.waterfall([ - function(next) { + function (next) { apiUtil.paginationRequest(req.query, 'containerList', next); }, - function(paginationReq, next) { + function (paginationReq, next) { paginationReq['orgId'] = req.params.orgId; paginationReq['bgId'] = req.params.bgId; paginationReq['projectId'] = req.params.projectId; @@ -1205,27 +1208,28 @@ module.exports.setRoutes = function(app, sessionVerification) { reqData = paginationReq; apiUtil.databaseUtil(paginationReq, next); }, - function(queryObj, next) { + function (queryObj, next) { queryObj['pagination'] = true; containerDao.getContainerListByOrgBgProjectAndEnvId(queryObj, next); }, - function(containerData, next) { + function (containerData, next) { apiUtil.paginationResponse(containerData, reqData, next); - }],function(err, results) { + }], function (err, results) { if (err) { res.send({ "errorCode": 500, "message": "Error occured while fetching Containers." }); - } else{ + } else { return res.send(results); } }); - }; + } + ; - app.get('/organizations/:orgId/chefserver', function(req, res) { + app.get('/organizations/:orgId/chefserver', function (req, res) { logger.debug("Enter get() for /organizations/%s/chefserver", req.params.orgId); - configmgmtDao.getChefServerDetailsByOrgname(req.params.orgId, function(err, chefDetails) { + configmgmtDao.getChefServerDetailsByOrgname(req.params.orgId, function (err, chefDetails) { if (err) { res.send(500); return; @@ -1241,9 +1245,9 @@ module.exports.setRoutes = function(app, sessionVerification) { }); }); - app.get('/organizations/:orgname/cookbooks', function(req, res) { + app.get('/organizations/:orgname/cookbooks', function (req, res) { logger.debug("Enter get() for /organizations/%s/cookbooks", req.params.orgname); - configmgmtDao.getChefServerDetailsByOrgname(req.params.orgname, function(err, chefDetails) { + configmgmtDao.getChefServerDetailsByOrgname(req.params.orgname, function (err, chefDetails) { if (err) { res.send(500); logger.error(err); @@ -1265,7 +1269,7 @@ module.exports.setRoutes = function(app, sessionVerification) { hostedChefUrl: chefDetails.url, }); - chef.getCookbooksList(function(err, cookbooks) { + chef.getCookbooksList(function (err, cookbooks) { if (err) { logger.error('Unable to fetch cookbooks : ', err); @@ -1284,9 +1288,9 @@ module.exports.setRoutes = function(app, sessionVerification) { }); - app.get('/organizations/:orgname/roles', function(req, res) { + app.get('/organizations/:orgname/roles', function (req, res) { logger.debug("Enter get() for /organizations/%s/roles", req.params.orgname); - configmgmtDao.getChefServerDetailsByOrgname(req.params.orgname, function(err, chefDetails) { + configmgmtDao.getChefServerDetailsByOrgname(req.params.orgname, function (err, chefDetails) { if (err) { res.send("There is some Internal Server Error. ", 500); return; @@ -1305,7 +1309,7 @@ module.exports.setRoutes = function(app, sessionVerification) { hostedChefUrl: chefDetails.url, }); - chef.getRolesList(function(err, roles) { + chef.getRolesList(function (err, roles) { if (err) { logger.error('Unable to fetch roles : ', err); res.send(500); @@ -1321,9 +1325,9 @@ module.exports.setRoutes = function(app, sessionVerification) { }); }); - app.get('/organizations/:orgname/chefRunlist', function(req, res) { + app.get('/organizations/:orgname/chefRunlist', function (req, res) { logger.debug("Enter get() for /organizations/%s/chefRunlist", req.params.orgname); - configmgmtDao.getChefServerDetailsByOrgname(req.params.orgname, function(err, chefDetails) { + configmgmtDao.getChefServerDetailsByOrgname(req.params.orgname, function (err, chefDetails) { if (err) { res.status(500).send(errorResponses.db.error); return; @@ -1341,14 +1345,14 @@ module.exports.setRoutes = function(app, sessionVerification) { hostedChefUrl: chefDetails.url, }); - chef.getCookbooksList(function(err, cookbooks) { + chef.getCookbooksList(function (err, cookbooks) { if (err) { logger.error('Unable to fetch cookbooks : ', err); res.status(500).send(errorResponses.chef.connectionError); return; } else { - chef.getRolesList(function(err, roles) { + chef.getRolesList(function (err, roles) { if (err) { logger.error('Unable to fetch roles : ', err); @@ -1369,9 +1373,9 @@ module.exports.setRoutes = function(app, sessionVerification) { }); }); - app.get('/organizations/usechefserver/:chefserverid/chefRunlist', function(req, res) { + app.get('/organizations/usechefserver/:chefserverid/chefRunlist', function (req, res) { logger.debug("Enter get() for /organizations/usechefserver/%s/chefRunlist", req.params.orgname); - configmgmtDao.getChefServerDetails(req.params.chefserverid, function(err, chefDetails) { + configmgmtDao.getChefServerDetails(req.params.chefserverid, function (err, chefDetails) { if (err) { res.send(500); return; @@ -1390,13 +1394,13 @@ module.exports.setRoutes = function(app, sessionVerification) { hostedChefUrl: chefDetails.url, }); - chef.getCookbooksList(function(err, cookbooks) { + chef.getCookbooksList(function (err, cookbooks) { if (err) { logger.error('Unable to fetch cookbooks : ', err); res.send(500); return; } else { - chef.getRolesList(function(err, roles) { + chef.getRolesList(function (err, roles) { if (err) { logger.error('Unable to fetch roles : ', err); @@ -1419,7 +1423,7 @@ module.exports.setRoutes = function(app, sessionVerification) { }); - app.post('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/addInstance', function(req, res) { + app.post('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/addInstance', function (req, res) { logger.debug("Enter post() for /organizations/%s/businessgroups/%s/projects/%s/environments/%s/addInstance", req.params.orgId, req.params.bgId, req.params.projectId, req.params.envId); logger.debug("Body::::" + req.body); logger.debug("JSON Body::::" + JSON.stringify(req.body)); @@ -1432,7 +1436,7 @@ module.exports.setRoutes = function(app, sessionVerification) { var category = 'instancelaunch'; var permissionto = 'execute'; - usersDao.haspermission(user.cn, category, permissionto, null, req.session.user.permissionset, function(err, data) { + usersDao.haspermission(user.cn, category, permissionto, null, req.session.user.permissionset, function (err, data) { if (!err) { logger.debug('Returned from haspermission : ' + data + ' : ' + (data == false)); if (data == false) { @@ -1446,20 +1450,21 @@ module.exports.setRoutes = function(app, sessionVerification) { res.send(500); return; } - masterUtil.getParticularProject(req.params.projectId, function(err, project) { + masterUtil.getParticularProject(req.params.projectId, function (err, project) { if (err) { callback({ message: "Failed to get project via project id" }, null); return; - }; + } + ; if (project.length === 0) { callback({ "message": "Unable to find Project Information from project id" }); return; } - instancesDao.getInstanceByOrgAndNodeNameOrIP(req.params.orgId, req.body.fqdn, req.body.fqdn, function(err, instances) { + instancesDao.getInstanceByOrgAndNodeNameOrIP(req.params.orgId, req.body.fqdn, req.body.fqdn, function (err, instances) { if (err) { logger.error("error occured while fetching instances by IP", err); res.status(500).send(errorResponses.db.error); @@ -1480,7 +1485,7 @@ module.exports.setRoutes = function(app, sessionVerification) { res.send(400); } - configmgmtDao.getEnvNameFromEnvId(req.params.envId, function(err, envName) { + configmgmtDao.getEnvNameFromEnvId(req.params.envId, function (err, envName) { if (err) { res.send(500); return; @@ -1490,7 +1495,7 @@ module.exports.setRoutes = function(app, sessionVerification) { var credentials = req.body.credentials; if (req.body.credentials.pemFileData) { credentials.pemFileLocation = appConfig.tempDir + uuid.v4(); - fileIo.writeFile(credentials.pemFileLocation, req.body.credentials.pemFileData, null, function(err) { + fileIo.writeFile(credentials.pemFileLocation, req.body.credentials.pemFileData, null, function (err) { if (err) { logger.error('unable to create pem file ', err); callback(err, null); @@ -1503,7 +1508,7 @@ module.exports.setRoutes = function(app, sessionVerification) { } } - getCredentialsFromReq(function(err, credentials) { + getCredentialsFromReq(function (err, credentials) { if (err) { res.send(500); return; @@ -1514,7 +1519,7 @@ module.exports.setRoutes = function(app, sessionVerification) { }); return; } - masterUtil.getCongifMgmtsById(req.body.configManagmentId, function(err, infraManagerDetails) { + masterUtil.getCongifMgmtsById(req.body.configManagmentId, function (err, infraManagerDetails) { if (err) { res.send(500); return; @@ -1530,7 +1535,7 @@ module.exports.setRoutes = function(app, sessionVerification) { if (req.body.os === 'windows') { openport = 5985; } - waitForPort(req.body.fqdn, openport, function(err) { + waitForPort(req.body.fqdn, openport, function (err) { if (err) { logger.debug(err); res.status(400).send({ @@ -1542,9 +1547,9 @@ module.exports.setRoutes = function(app, sessionVerification) { nodeIp: req.body.fqdn, nodeOs: req.body.os, nodeName: req.body.fqdn, - nodeEnv:envName + nodeEnv: envName } - checkNodeCredentials(credentials,nodeDetails, function (err, credentialStatus) { + checkNodeCredentials(credentials, nodeDetails, function (err, credentialStatus) { if (err) { logger.error(err); res.status(400).send({ @@ -1564,243 +1569,264 @@ module.exports.setRoutes = function(app, sessionVerification) { monitorsModel.getById(req.body.monitorId, function (err, monitor) { - var appUrls = req.body.appUrls; - if (appConfig.appUrls && appConfig.appUrls.length) { - appUrls = appUrls.concat(appConfig.appUrls); - } - - var instance = { - name: req.body.fqdn, - orgId: req.params.orgId, - orgName: project[0].orgname, - bgId: req.params.bgId, - bgName: project[0].productgroupname, - projectId: req.params.projectId, - projectName: project[0].projectname, - envId: req.params.envId, - environmentName: envName, - platformId: req.body.fqdn, - instanceIP: req.body.fqdn, - instanceState: nodeAlive, - bootStrapStatus: 'waiting', - tagServer: req.params.tagServer, - runlist: [], - appUrls: appUrls, - monitor: monitor, - users: [req.session.user.cn], //need to change this - catUser: req.session.user.cn, - hardware: { - platform: 'unknown', - platformVersion: 'unknown', - architecture: 'unknown', - memory: { - total: 'unknown', - free: 'unknown', - }, - os: req.body.os - }, - credentials: encryptedCredentials, - - blueprintData: { - blueprintName: req.body.fqdn, - templateId: "chef_import", - iconPath: "../private/img/templateicons/chef_import.png" - } - } - if (infraManagerDetails.configType === 'chef') { - instance.chef = { - serverId: infraManagerDetails.rowid, - chefNodeName: req.body.fqdn + var appUrls = req.body.appUrls; + if (appConfig.appUrls && appConfig.appUrls.length) { + appUrls = appUrls.concat(appConfig.appUrls); } - } else { - instance.puppet = { - serverId: infraManagerDetails.rowid - } - } - instancesDao.createInstance(instance, function (err, data) { - if (err) { - logger.error('Unable to create Instance ', err); - res.send(500); - return; - } - instance.id = data._id; - instance._id = data._id; - var timestampStarded = new Date().getTime(); - var actionLog = instancesDao.insertBootstrapActionLog(instance.id, [], req.session.user.cn, timestampStarded); - var logsRefernceIds = [instance.id, actionLog._id]; - logsDao.insertLog({ - referenceId: logsRefernceIds, - err: false, - log: "Bootstrapping instance", - timestamp: timestampStarded - }); - var instanceLog = { - actionId: actionLog._id, - instanceId: instance.id, + var instance = { + name: req.body.fqdn, + orgId: req.params.orgId, orgName: project[0].orgname, + bgId: req.params.bgId, bgName: project[0].productgroupname, + projectId: req.params.projectId, projectName: project[0].projectname, - envName: envName, - status: nodeAlive, - actionStatus: "waiting", + envId: req.params.envId, + environmentName: envName, platformId: req.body.fqdn, - blueprintName: req.body.fqdn, - data: [], - platform: "unknown", - os: req.body.os, - size: "", - user: req.session.user.cn, - createdOn: new Date().getTime(), - startedOn: new Date().getTime(), - providerType: "", - action: "ImportByIP", - logs: [{ - err: false, - log: "Bootstrapping instance", - timestamp: new Date().getTime() - }] - }; + instanceIP: req.body.fqdn, + instanceState: nodeAlive, + bootStrapStatus: 'waiting', + tagServer: req.params.tagServer, + runlist: [], + appUrls: appUrls, + monitor: monitor, + users: [req.session.user.cn], //need to change this + catUser: req.session.user.cn, + hardware: { + platform: 'unknown', + platformVersion: 'unknown', + architecture: 'unknown', + memory: { + total: 'unknown', + free: 'unknown', + }, + os: req.body.os + }, + credentials: encryptedCredentials, - instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { - if (err) { - logger.error("Failed to create or update instanceLog: ", err); + blueprintData: { + blueprintName: req.body.fqdn, + templateId: "chef_import", + iconPath: "../private/img/templateicons/chef_import.png" } - }); + } + if (infraManagerDetails.configType === 'chef') { + instance.chef = { + serverId: infraManagerDetails.rowid, + chefNodeName: req.body.fqdn + } + } else { + instance.puppet = { + serverId: infraManagerDetails.rowid - credentialCryptography.decryptCredential(encryptedCredentials, function (err, decryptedCredentials) { + } + } + instancesDao.createInstance(instance, function (err, data) { if (err) { - logger.error("unable to decrypt credentials", err); - var timestampEnded = new Date().getTime(); - logsDao.insertLog({ - referenceId: logsRefernceIds, - err: true, - log: "Unable to decrypt credentials. Bootstrap Failed", - timestamp: timestampEnded - }); - instancesDao.updateActionLog(instance.id, actionLog._id, false, timestampEnded); - instanceLog.endedOn = new Date().getTime(); - instanceLog.logs = { - err: true, - log: "Unable to decrypt credentials. Bootstrap Failed", - timestamp: new Date().getTime() - }; - instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { - if (err) { - logger.error("Failed to create or update instanceLog: ", err); - } - }); + logger.error('Unable to create Instance ', err); res.send(500); return; } - var infraManager; - var bootstarpOption; - var deleteOptions; - if (infraManagerDetails.configType === 'chef') { - logger.debug('In chef '); - infraManager = new Chef({ - userChefRepoLocation: infraManagerDetails.chefRepoLocation, - chefUserName: infraManagerDetails.loginname, - chefUserPemFile: infraManagerDetails.userpemfile, - chefValidationPemFile: infraManagerDetails.validatorpemfile, - hostedChefUrl: infraManagerDetails.url - }); - bootstarpOption = { - instanceIp: instance.instanceIP, - pemFilePath: decryptedCredentials.pemFileLocation, - instancePassword: decryptedCredentials.password, - instanceUsername: instance.credentials.username, - nodeName: instance.chef.chefNodeName, - environment: envName, - instanceOS: instance.hardware.os - }; - if (instance.monitor && instance.monitor.parameters.transportProtocol === 'rabbitmq') { - var sensuCookBook = 'recipe[sensu-client]'; - var runlist = []; - var jsonAttributes = {}; - - runlist.push(sensuCookBook); - jsonAttributes['sensu-client'] = masterUtil.getSensuCookbookAttributes(instance.monitor,instance.id); - - bootstarpOption['runlist'] = runlist; - bootstarpOption['jsonAttributes'] = jsonAttributes; + instance.id = data._id; + instance._id = data._id; + var timestampStarded = new Date().getTime(); + var actionLog = instancesDao.insertBootstrapActionLog(instance.id, [], req.session.user.cn, timestampStarded); + var logsRefernceIds = [instance.id, actionLog._id]; + logsDao.insertLog({ + referenceId: logsRefernceIds, + err: false, + log: "Bootstrapping instance", + timestamp: timestampStarded + }); + var instanceLog = { + actionId: actionLog._id, + instanceId: instance.id, + orgName: project[0].orgname, + bgName: project[0].productgroupname, + projectName: project[0].projectname, + envName: envName, + status: nodeAlive, + actionStatus: "waiting", + platformId: req.body.fqdn, + blueprintName: req.body.fqdn, + data: [], + platform: "unknown", + os: req.body.os, + size: "", + user: req.session.user.cn, + createdOn: new Date().getTime(), + startedOn: new Date().getTime(), + providerType: "", + action: "ImportByIP", + logs: [{ + err: false, + log: "Bootstrapping instance", + timestamp: new Date().getTime() + }] + }; - } - deleteOptions = { - privateKey: decryptedCredentials.pemFileLocation, - username: decryptedCredentials.username, - host: instance.instanceIP, - instanceOS: instance.hardware.os, - port: 22, - cmds: ["rm -rf /etc/chef/", "rm -rf /var/chef/"], - cmdswin: ["del "] - } - if (decryptedCredentials.pemFileLocation) { - deleteOptions.privateKey = decryptedCredentials.pemFileLocation; - } else { - deleteOptions.password = decryptedCredentials.password; + instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { + if (err) { + logger.error("Failed to create or update instanceLog: ", err); } + }); - } else { - var puppetSettings = { - host: infraManagerDetails.hostname, - username: infraManagerDetails.username, - }; - if (infraManagerDetails.pemFileLocation) { - puppetSettings.pemFileLocation = infraManagerDetails.pemFileLocation; - } else { - puppetSettings.password = infraManagerDetails.puppetpassword; - } - logger.debug('puppet pemfile ==> ' + puppetSettings.pemFileLocation); - bootstarpOption = { - host: instance.instanceIP, - username: instance.credentials.username, - pemFileLocation: decryptedCredentials.pemFileLocation, - password: decryptedCredentials.password, - environment: envName - }; - - var deleteOptions = { - username: decryptedCredentials.username, - host: instance.instanceIP, - port: 22, + credentialCryptography.decryptCredential(encryptedCredentials, function (err, decryptedCredentials) { + if (err) { + logger.error("unable to decrypt credentials", err); + var timestampEnded = new Date().getTime(); + logsDao.insertLog({ + referenceId: logsRefernceIds, + err: true, + log: "Unable to decrypt credentials. Bootstrap Failed", + timestamp: timestampEnded + }); + instancesDao.updateActionLog(instance.id, actionLog._id, false, timestampEnded); + instanceLog.endedOn = new Date().getTime(); + instanceLog.logs = { + err: true, + log: "Unable to decrypt credentials. Bootstrap Failed", + timestamp: new Date().getTime() + }; + instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { + if (err) { + logger.error("Failed to create or update instanceLog: ", err); + } + }); + res.send(500); + return; } + var infraManager; + var bootstarpOption; + var deleteOptions; + if (infraManagerDetails.configType === 'chef') { + logger.debug('In chef '); + infraManager = new Chef({ + userChefRepoLocation: infraManagerDetails.chefRepoLocation, + chefUserName: infraManagerDetails.loginname, + chefUserPemFile: infraManagerDetails.userpemfile, + chefValidationPemFile: infraManagerDetails.validatorpemfile, + hostedChefUrl: infraManagerDetails.url + }); + bootstarpOption = { + instanceIp: instance.instanceIP, + pemFilePath: decryptedCredentials.pemFileLocation, + instancePassword: decryptedCredentials.password, + instanceUsername: instance.credentials.username, + nodeName: instance.chef.chefNodeName, + environment: envName, + instanceOS: instance.hardware.os + }; + if (instance.monitor && instance.monitor.parameters.transportProtocol === 'rabbitmq') { + var sensuCookBooks = masterUtil.getSensuCookbooks(); + var runlist = sensuCookBooks; + var jsonAttributes = {}; + + jsonAttributes['sensu-client'] = masterUtil.getSensuCookbookAttributes(instance.monitor, instance.id); + + bootstarpOption['runlist'] = runlist; + bootstarpOption['jsonAttributes'] = jsonAttributes; + + } + deleteOptions = { + privateKey: decryptedCredentials.pemFileLocation, + username: decryptedCredentials.username, + host: instance.instanceIP, + instanceOS: instance.hardware.os, + port: 22, + cmds: ["rm -rf /etc/chef/", "rm -rf /var/chef/"], + cmdswin: ["del "] + } + if (decryptedCredentials.pemFileLocation) { + deleteOptions.privateKey = decryptedCredentials.pemFileLocation; + } else { + deleteOptions.password = decryptedCredentials.password; + } - if (decryptedCredentials.pemFileLocation) { - deleteOptions.pemFileLocation = decryptedCredentials.pemFileLocation; } else { - deleteOptions.password = decryptedCredentials.password; + var puppetSettings = { + host: infraManagerDetails.hostname, + username: infraManagerDetails.username, + }; + if (infraManagerDetails.pemFileLocation) { + puppetSettings.pemFileLocation = infraManagerDetails.pemFileLocation; + } else { + puppetSettings.password = infraManagerDetails.puppetpassword; + } + logger.debug('puppet pemfile ==> ' + puppetSettings.pemFileLocation); + bootstarpOption = { + host: instance.instanceIP, + username: instance.credentials.username, + pemFileLocation: decryptedCredentials.pemFileLocation, + password: decryptedCredentials.password, + environment: envName + }; + + var deleteOptions = { + username: decryptedCredentials.username, + host: instance.instanceIP, + port: 22, + } + + if (decryptedCredentials.pemFileLocation) { + deleteOptions.pemFileLocation = decryptedCredentials.pemFileLocation; + } else { + deleteOptions.password = decryptedCredentials.password; + } + + infraManager = new Puppet(puppetSettings); } - infraManager = new Puppet(puppetSettings); - } + //removing files on node to facilitate re-bootstrap + logger.debug("Node OS : %s", instance.hardware.os); + logger.debug('Cleaning instance'); + infraManager.cleanClient(deleteOptions, function (err, retCode) { + logger.debug("Entering chef.bootstarp"); + infraManager.bootstrapInstance(bootstarpOption, function (err, code, bootstrapData) { - //removing files on node to facilitate re-bootstrap - logger.debug("Node OS : %s", instance.hardware.os); - logger.debug('Cleaning instance'); - infraManager.cleanClient(deleteOptions, function (err, retCode) { - logger.debug("Entering chef.bootstarp"); - infraManager.bootstrapInstance(bootstarpOption, function (err, code, bootstrapData) { + if (err) { + logger.error("knife launch err ==>", err); + instancesDao.updateInstanceBootstrapStatus(instance.id, 'failed', function (err, updateData) { - if (err) { - logger.error("knife launch err ==>", err); - instancesDao.updateInstanceBootstrapStatus(instance.id, 'failed', function (err, updateData) { + }); + if (err.message) { + var timestampEnded = new Date().getTime(); + logsDao.insertLog({ + referenceId: logsRefernceIds, + err: true, + log: err.message, + timestamp: timestampEnded + }); + instanceLog.endedOn = new Date().getTime(); + instanceLog.actionStatus = "failed"; + instanceLog.logs = { + err: true, + log: err.message, + timestamp: new Date().getTime() + }; + instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { + if (err) { + logger.error("Failed to create or update instanceLog: ", err); + } + }); - }); - if (err.message) { + } var timestampEnded = new Date().getTime(); logsDao.insertLog({ referenceId: logsRefernceIds, err: true, - log: err.message, + log: "Bootstrap Failed", timestamp: timestampEnded }); + instancesDao.updateActionLog(instance.id, actionLog._id, false, timestampEnded); instanceLog.endedOn = new Date().getTime(); instanceLog.actionStatus = "failed"; instanceLog.logs = { err: true, - log: err.message, + log: "Bootstrap Failed", timestamp: new Date().getTime() }; instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { @@ -1809,277 +1835,255 @@ module.exports.setRoutes = function(app, sessionVerification) { } }); - } - var timestampEnded = new Date().getTime(); - logsDao.insertLog({ - referenceId: logsRefernceIds, - err: true, - log: "Bootstrap Failed", - timestamp: timestampEnded - }); - instancesDao.updateActionLog(instance.id, actionLog._id, false, timestampEnded); - instanceLog.endedOn = new Date().getTime(); - instanceLog.actionStatus = "failed"; - instanceLog.logs = { - err: true, - log: "Bootstrap Failed", - timestamp: new Date().getTime() - }; - instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { - if (err) { - logger.error("Failed to create or update instanceLog: ", err); - } - }); - - } else { - if (code == 0) { - instancesDao.updateInstanceBootstrapStatus(instance.id, 'success', function (err, updateData) { - if (err) { - logger.error("Unable to set instance bootstarp status. code 0"); - } else { - logger.debug("Instance bootstrap status set to success"); - } - }); - - // updating puppet node name - var nodeName; - if (bootstrapData && bootstrapData.puppetNodeName) { - instancesDao.updateInstancePuppetNodeName(instance.id, bootstrapData.puppetNodeName, function (err, updateData) { + } else { + if (code == 0) { + instancesDao.updateInstanceBootstrapStatus(instance.id, 'success', function (err, updateData) { if (err) { - logger.error("Unable to set puppet node name"); + logger.error("Unable to set instance bootstarp status. code 0"); } else { - logger.debug("puppet node name updated successfully"); + logger.debug("Instance bootstrap status set to success"); } }); - nodeName = bootstrapData.puppetNodeName; - } else { - nodeName = instance.chef.chefNodeName; - } - - - var timestampEnded = new Date().getTime(); - logsDao.insertLog({ - referenceId: logsRefernceIds, - err: false, - log: "Instance Bootstrapped Successfully", - timestamp: timestampEnded - }); - instanceLog.endedOn = new Date().getTime(); - instanceLog.actionStatus = "success"; - instanceLog.logs = { - err: false, - log: "Instance Bootstrapped Successfully", - timestamp: new Date().getTime() - }; - instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { - if (err) { - logger.error("Failed to create or update instanceLog: ", err); - } - }); - instancesDao.updateActionLog(instance.id, actionLog._id, true, timestampEnded); - var hardwareData = {}; - if (bootstrapData && bootstrapData.puppetNodeName) { - var runOptions = { - username: decryptedCredentials.username, - host: instance.instanceIP, - port: 22, - } - if (decryptedCredentials.pemFileLocation) { - runOptions.pemFileLocation = decryptedCredentials.pemFileLocation; + // updating puppet node name + var nodeName; + if (bootstrapData && bootstrapData.puppetNodeName) { + instancesDao.updateInstancePuppetNodeName(instance.id, bootstrapData.puppetNodeName, function (err, updateData) { + if (err) { + logger.error("Unable to set puppet node name"); + } else { + logger.debug("puppet node name updated successfully"); + } + }); + nodeName = bootstrapData.puppetNodeName; } else { - runOptions.password = decryptedCredentials.password; + nodeName = instance.chef.chefNodeName; } - infraManager.runClient(runOptions, function (err, retCode) { - if (decryptedCredentials.pemFileLocation) { - fileIo.removeFile(decryptedCredentials.pemFileLocation, function (err) { - if (err) { - logger.debug("Unable to delete temp pem file =>", err); - } else { - logger.debug("temp pem file deleted =>", err); - } - }); - } + + var timestampEnded = new Date().getTime(); + logsDao.insertLog({ + referenceId: logsRefernceIds, + err: false, + log: "Instance Bootstrapped Successfully", + timestamp: timestampEnded + }); + instanceLog.endedOn = new Date().getTime(); + instanceLog.actionStatus = "success"; + instanceLog.logs = { + err: false, + log: "Instance Bootstrapped Successfully", + timestamp: new Date().getTime() + }; + instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { if (err) { - logger.error("Unable to run puppet client", err); - return; + logger.error("Failed to create or update instanceLog: ", err); } - // waiting for 30 sec to update node data - setTimeout(function () { - infraManager.getNode(nodeName, function (err, nodeData) { - if (err) { - logger.error(err); - return; - } - instanceLog.platform = nodeData.facts.values.operatingsystem; - instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { + }); + instancesDao.updateActionLog(instance.id, actionLog._id, true, timestampEnded); + var hardwareData = {}; + if (bootstrapData && bootstrapData.puppetNodeName) { + var runOptions = { + username: decryptedCredentials.username, + host: instance.instanceIP, + port: 22, + } + + if (decryptedCredentials.pemFileLocation) { + runOptions.pemFileLocation = decryptedCredentials.pemFileLocation; + } else { + runOptions.password = decryptedCredentials.password; + } + + infraManager.runClient(runOptions, function (err, retCode) { + if (decryptedCredentials.pemFileLocation) { + fileIo.removeFile(decryptedCredentials.pemFileLocation, function (err) { if (err) { - logger.error("Failed to create or update instanceLog: ", err); + logger.debug("Unable to delete temp pem file =>", err); + } else { + logger.debug("temp pem file deleted =>", err); } }); - // is puppet node - hardwareData.architecture = nodeData.facts.values.hardwaremodel; - hardwareData.platform = nodeData.facts.values.operatingsystem; - hardwareData.platformVersion = nodeData.facts.values.operatingsystemrelease; - hardwareData.memory = { - total: 'unknown', - free: 'unknown' - }; - hardwareData.memory.total = nodeData.facts.values.memorysize; - hardwareData.memory.free = nodeData.facts.values.memoryfree; - hardwareData.os = instance.hardware.os; - instancesDao.setHardwareDetails(instance.id, hardwareData, function (err, updateData) { + } + if (err) { + logger.error("Unable to run puppet client", err); + return; + } + // waiting for 30 sec to update node data + setTimeout(function () { + infraManager.getNode(nodeName, function (err, nodeData) { if (err) { - logger.error("Unable to set instance hardware details code (setHardwareDetails)", err); - } else { - logger.debug("Instance hardware details set successessfully"); + logger.error(err); + return; } + instanceLog.platform = nodeData.facts.values.operatingsystem; + instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { + if (err) { + logger.error("Failed to create or update instanceLog: ", err); + } + }); + // is puppet node + hardwareData.architecture = nodeData.facts.values.hardwaremodel; + hardwareData.platform = nodeData.facts.values.operatingsystem; + hardwareData.platformVersion = nodeData.facts.values.operatingsystemrelease; + hardwareData.memory = { + total: 'unknown', + free: 'unknown' + }; + hardwareData.memory.total = nodeData.facts.values.memorysize; + hardwareData.memory.free = nodeData.facts.values.memoryfree; + hardwareData.os = instance.hardware.os; + instancesDao.setHardwareDetails(instance.id, hardwareData, function (err, updateData) { + if (err) { + logger.error("Unable to set instance hardware details code (setHardwareDetails)", err); + } else { + logger.debug("Instance hardware details set successessfully"); + } + }); }); - }); - }, 30000); - }); + }, 30000); + }); - } else { - infraManager.getNode(nodeName, function (err, nodeData) { - if (err) { - logger.error(err); - return; - } - instanceLog.platform = nodeData.automatic.platform; - instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { + } else { + infraManager.getNode(nodeName, function (err, nodeData) { if (err) { - logger.error("Failed to create or update instanceLog: ", err); + logger.error(err); + return; } - }); - hardwareData.architecture = nodeData.automatic.kernel.machine; - hardwareData.platform = nodeData.automatic.platform; - hardwareData.platformVersion = nodeData.automatic.platform_version; - hardwareData.memory = { - total: 'unknown', - free: 'unknown' - }; - if (nodeData.automatic.memory) { - hardwareData.memory.total = nodeData.automatic.memory.total; - hardwareData.memory.free = nodeData.automatic.memory.free; - } - hardwareData.os = instance.hardware.os; - instancesDao.setHardwareDetails(instance.id, hardwareData, function (err, updateData) { - if (err) { - logger.error("Unable to set instance hardware details code (setHardwareDetails)", err); - } else { - logger.debug("Instance hardware details set successessfully"); + instanceLog.platform = nodeData.automatic.platform; + instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { + if (err) { + logger.error("Failed to create or update instanceLog: ", err); + } + }); + hardwareData.architecture = nodeData.automatic.kernel.machine; + hardwareData.platform = nodeData.automatic.platform; + hardwareData.platformVersion = nodeData.automatic.platform_version; + hardwareData.memory = { + total: 'unknown', + free: 'unknown' + }; + if (nodeData.automatic.memory) { + hardwareData.memory.total = nodeData.automatic.memory.total; + hardwareData.memory.free = nodeData.automatic.memory.free; } - }); - if (decryptedCredentials.pemFilePath) { - fileIo.removeFile(decryptedCredentials.pemFilePath, function (err) { + hardwareData.os = instance.hardware.os; + instancesDao.setHardwareDetails(instance.id, hardwareData, function (err, updateData) { if (err) { - logger.error("Unable to delete temp pem file =>", err); + logger.error("Unable to set instance hardware details code (setHardwareDetails)", err); } else { - logger.debug("temp pem file deleted"); + logger.debug("Instance hardware details set successessfully"); } }); - } - }); - } + if (decryptedCredentials.pemFilePath) { + fileIo.removeFile(decryptedCredentials.pemFilePath, function (err) { + if (err) { + logger.error("Unable to delete temp pem file =>", err); + } else { + logger.debug("temp pem file deleted"); + } + }); + } + }); + } - var _docker = new Docker(); - _docker.checkDockerStatus(instance.id, function (err, retCode) { - if (err) { - logger.error("Failed _docker.checkDockerStatus", err); - return; - //res.end('200'); + var _docker = new Docker(); + _docker.checkDockerStatus(instance.id, function (err, retCode) { + if (err) { + logger.error("Failed _docker.checkDockerStatus", err); + return; + //res.end('200'); - } - logger.debug('Docker Check Returned:' + retCode); - if (retCode == '0') { - instancesDao.updateInstanceDockerStatus(instance.id, "success", '', function (data) { - logger.debug('Instance Docker Status set to Success'); - }); + } + logger.debug('Docker Check Returned:' + retCode); + if (retCode == '0') { + instancesDao.updateInstanceDockerStatus(instance.id, "success", '', function (data) { + logger.debug('Instance Docker Status set to Success'); + }); - } - }); + } + }); - } else { - instancesDao.updateInstanceBootstrapStatus(instance.id, 'failed', function (err, updateData) { - if (err) { - logger.error("Unable to set instance bootstarp status code != 0"); - } else { - logger.debug("Instance bootstrap status set to failed"); - } - }); + } else { + instancesDao.updateInstanceBootstrapStatus(instance.id, 'failed', function (err, updateData) { + if (err) { + logger.error("Unable to set instance bootstarp status code != 0"); + } else { + logger.debug("Instance bootstrap status set to failed"); + } + }); - var timestampEnded = new Date().getTime(); - logsDao.insertLog({ - referenceId: logsRefernceIds, - err: true, - log: "Bootstrap Failed", - timestamp: timestampEnded - }); - instancesDao.updateActionLog(instance.id, actionLog._id, false, timestampEnded); - instanceLog.endedOn = new Date().getTime(); - instanceLog.actionStatus = "failed"; - instanceLog.logs = { - err: true, - log: "Bootstrap Failed", - timestamp: new Date().getTime() - }; - instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { - if (err) { - logger.error("Failed to create or update instanceLog: ", err); - } - }); + var timestampEnded = new Date().getTime(); + logsDao.insertLog({ + referenceId: logsRefernceIds, + err: true, + log: "Bootstrap Failed", + timestamp: timestampEnded + }); + instancesDao.updateActionLog(instance.id, actionLog._id, false, timestampEnded); + instanceLog.endedOn = new Date().getTime(); + instanceLog.actionStatus = "failed"; + instanceLog.logs = { + err: true, + log: "Bootstrap Failed", + timestamp: new Date().getTime() + }; + instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { + if (err) { + logger.error("Failed to create or update instanceLog: ", err); + } + }); + } } - } - }, function (stdOutData) { + }, function (stdOutData) { - logsDao.insertLog({ - referenceId: logsRefernceIds, - err: false, - log: stdOutData.toString('ascii'), - timestamp: new Date().getTime() - }); - instanceLog.logs = { - err: false, - log: stdOutData.toString('ascii'), - timestamp: new Date().getTime() - }; - instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { - if (err) { - logger.error("Failed to create or update instanceLog: ", err); - } - }); + logsDao.insertLog({ + referenceId: logsRefernceIds, + err: false, + log: stdOutData.toString('ascii'), + timestamp: new Date().getTime() + }); + instanceLog.logs = { + err: false, + log: stdOutData.toString('ascii'), + timestamp: new Date().getTime() + }; + instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { + if (err) { + logger.error("Failed to create or update instanceLog: ", err); + } + }); - }, function (stdErrData) { + }, function (stdErrData) { - logsDao.insertLog({ - referenceId: logsRefernceIds, - err: true, - log: stdErrData.toString('ascii'), - timestamp: new Date().getTime() - }); + logsDao.insertLog({ + referenceId: logsRefernceIds, + err: true, + log: stdErrData.toString('ascii'), + timestamp: new Date().getTime() + }); - instanceLog.logs = { - err: true, - log: stdErrData.toString('ascii'), - timestamp: new Date().getTime() - }; - instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { - if (err) { - logger.error("Failed to create or update instanceLog: ", err); - } + instanceLog.logs = { + err: true, + log: stdErrData.toString('ascii'), + timestamp: new Date().getTime() + }; + instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { + if (err) { + logger.error("Failed to create or update instanceLog: ", err); + } + }); }); - }); - }); //end of chefcleanup + }); //end of chefcleanup + }); + res.send(instance); + logger.debug("Exit post() for /organizations/%s/businessgroups/%s/projects/%s/environments/%s/addInstance", req.params.orgId, req.params.bgId, req.params.projectId, req.params.envId); }); - res.send(instance); - logger.debug("Exit post() for /organizations/%s/businessgroups/%s/projects/%s/environments/%s/addInstance", req.params.orgId, req.params.bgId, req.params.projectId, req.params.envId); }); }); - }); } else { res.status(400).send({ message: "The username or password/pemfile you entered is incorrect" @@ -2094,49 +2098,49 @@ module.exports.setRoutes = function(app, sessionVerification) { }); }); }); - function checkNodeCredentials(credentials,nodeDetail,callback){ - if(nodeDetail.nodeOs !== 'windows') { - var sshOptions = { - username: credentials.username, - host: nodeDetail.nodeIp, - port: 22, - } - if (credentials.pemFileLocation) { - sshOptions.privateKey = credentials.pemFileLocation; - sshOptions.pemFileData = credentials.pemFileData; - } else { - sshOptions.password = credentials.password; - } - var sshExec = new SSHExec(sshOptions); - - sshExec.exec('echo Welcome', function (err, retCode) { - if (err) { - callback(err, null); - return; - } else if (retCode === 0) { - callback(null, true); - } else { - callback(null, false); - } - }, function (stdOut) { - logger.debug(stdOut.toString('ascii')); - }, function (stdErr) { - logger.error(stdErr.toString('ascii')); - }); + function checkNodeCredentials(credentials, nodeDetail, callback) { + if (nodeDetail.nodeOs !== 'windows') { + var sshOptions = { + username: credentials.username, + host: nodeDetail.nodeIp, + port: 22, + } + if (credentials.pemFileLocation) { + sshOptions.privateKey = credentials.pemFileLocation; + sshOptions.pemFileData = credentials.pemFileData; } else { - callback(null, true); + sshOptions.password = credentials.password; } + var sshExec = new SSHExec(sshOptions); + + sshExec.exec('echo Welcome', function (err, retCode) { + if (err) { + callback(err, null); + return; + } else if (retCode === 0) { + callback(null, true); + } else { + callback(null, false); + } + }, function (stdOut) { + logger.debug(stdOut.toString('ascii')); + }, function (stdErr) { + logger.error(stdErr.toString('ascii')); + }); + } else { + callback(null, true); } + } }); - app.post('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/blueprints/docker', function(req, res) { + app.post('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/blueprints/docker', function (req, res) { //validating if user has permission to save a blueprint logger.debug('Verifying User permission set'); var user = req.session.user; var category = 'blueprints'; var permissionto = 'create'; - usersDao.haspermission(user.cn, category, permissionto, null, req.session.user.permissionset, function(err, data) { + usersDao.haspermission(user.cn, category, permissionto, null, req.session.user.permissionset, function (err, data) { if (!err) { logger.debug('Returned from haspermission : ' + data + ' : ' + (data == false)); if (data == false) { @@ -2174,7 +2178,7 @@ module.exports.setRoutes = function(app, sessionVerification) { return; } - blueprintsDao.createBlueprint(blueprintData, function(err, data) { + blueprintsDao.createBlueprint(blueprintData, function (err, data) { if (err) { res.send(500); return; @@ -2185,7 +2189,7 @@ module.exports.setRoutes = function(app, sessionVerification) { }); }); - app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/:provider', function(req, res) { + app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/:provider', function (req, res) { var jsonData = {}; jsonData['orgId'] = req.params.orgId; jsonData['bgId'] = req.params.bgId; @@ -2194,12 +2198,12 @@ module.exports.setRoutes = function(app, sessionVerification) { jsonData['instanceType'] = req.params.instanceType; jsonData['userName'] = req.session.user.cn; jsonData['blueprintType'] = req.query.blueprintType; - if(req.params.provider === null || req.params.provider ==='null'){ + if (req.params.provider === null || req.params.provider === 'null') { jsonData['providerType'] = 'aws'; - }else{ + } else { jsonData['providerType'] = req.params.provider; } - configmgmtDao.getTeamsOrgBuProjForUser(req.session.user.cn, function(err, orgbuprojs) { + configmgmtDao.getTeamsOrgBuProjForUser(req.session.user.cn, function (err, orgbuprojs) { if (orgbuprojs.length === 0) { res.send(401, "User not part of team to see project."); return; @@ -2207,31 +2211,31 @@ module.exports.setRoutes = function(app, sessionVerification) { if (!err) { if (typeof orgbuprojs[0].projects !== "undefined" && orgbuprojs[0].projects.indexOf(req.params.projectId) >= 0) { async.parallel({ - tasks: function(callback) { - Task.getTasksByOrgBgProjectAndEnvId(jsonData, callback); - }, - instances: function(callback) { - instancesDao.getInstancesByOrgBgProjectAndEnvId(jsonData, callback); - }, - blueprints: function(callback) { - Blueprints.getBlueprintsByOrgBgProjectProvider(jsonData, callback); - }, - stacks: function(callback) { - CloudFormation.findByOrgBgProjectAndEnvId(jsonData, callback); - }, - arms: function(callback) { - AzureArm.findByOrgBgProjectAndEnvId(jsonData, callback); - } + tasks: function (callback) { + Task.getTasksByOrgBgProjectAndEnvId(jsonData, callback); }, - function(err, results) { - if (err) { - res.status(500).send("Internal Server Error"); - } else if (!results) { - res.status(400).send("Data Not Found"); - } else { - res.status(200).send(results); - } + instances: function (callback) { + instancesDao.getInstancesByOrgBgProjectAndEnvId(jsonData, callback); + }, + blueprints: function (callback) { + Blueprints.getBlueprintsByOrgBgProjectProvider(jsonData, callback); + }, + stacks: function (callback) { + CloudFormation.findByOrgBgProjectAndEnvId(jsonData, callback); + }, + arms: function (callback) { + AzureArm.findByOrgBgProjectAndEnvId(jsonData, callback); } + }, + function (err, results) { + if (err) { + res.status(500).send("Internal Server Error"); + } else if (!results) { + res.status(400).send("Data Not Found"); + } else { + res.status(200).send(results); + } + } ); } else { @@ -2246,8 +2250,8 @@ module.exports.setRoutes = function(app, sessionVerification) { }); // End point which will give list of all Docker instances for Org,BG,Proj and Env. - app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/docker/instances', function(req, res) { - instancesDao.getInstancesByOrgBgProjectAndEnvForDocker(req.params.orgId, req.params.bgId, req.params.projectId, req.params.envId, function(err, instances) { + app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/environments/:envId/docker/instances', function (req, res) { + instancesDao.getInstancesByOrgBgProjectAndEnvForDocker(req.params.orgId, req.params.bgId, req.params.projectId, req.params.envId, function (err, instances) { if (err) { res.status(500).send({ "errorCode": 500, @@ -2259,7 +2263,7 @@ module.exports.setRoutes = function(app, sessionVerification) { return; }); }); - + app.get('/organizations/:orgId/businessgroups/:bgId/projects/:projectId/blueprintList', validate(orgValidator.applications), getBluePrintList); @@ -2267,130 +2271,132 @@ module.exports.setRoutes = function(app, sessionVerification) { function getBluePrintList(req, res, next) { var reqData = {}; async.waterfall([ - function(next) { - apiUtil.paginationRequest(req.query, 'blueprints', next); - }, - function(paginationReq, next) { - if(req.query.templateType === 'composite'){ - paginationReq['organizationId'] = req.params.orgId; - paginationReq['businessGroupId'] = req.params.bgId; - paginationReq['projectId'] = req.params.projectId; - paginationReq['cloudProviderType'] = req.query.providerType; - paginationReq['searchColumns'] = ['name']; - }else{ - paginationReq['orgId'] = req.params.orgId; - paginationReq['bgId'] = req.params.bgId; - paginationReq['projectId'] = req.params.projectId; - paginationReq['templateType'] = req.query.templateType; - paginationReq['blueprintConfig.cloudProviderType'] = req.query.providerType; - paginationReq['searchColumns'] = ['name']; - } - reqData = paginationReq; - apiUtil.databaseUtil(paginationReq, next); - - }, - function(queryObj, next) { - if(req.query.templateType === 'composite'){ - compositeBlueprintModel.getCompositeBlueprintByOrgBgProject(queryObj, next) - }else { - Blueprints.getBlueprintByOrgBgProjectProviderType(queryObj, next); - } - }, - function(blueprints, next) { - if(req.query.pagination === 'true'){ - apiUtil.paginationResponse(blueprints, reqData, next); - }else{ - next(null,blueprints.docs); - } - }], function(err, results) { - if (err) { - res.send({ - "errorCode": 500, - "message": "Error occured while fetching Blueprints." - }); - } else{ - return res.send(results); + function (next) { + apiUtil.paginationRequest(req.query, 'blueprints', next); + }, + function (paginationReq, next) { + if (req.query.templateType === 'composite') { + paginationReq['organizationId'] = req.params.orgId; + paginationReq['businessGroupId'] = req.params.bgId; + paginationReq['projectId'] = req.params.projectId; + paginationReq['cloudProviderType'] = req.query.providerType; + paginationReq['searchColumns'] = ['name']; + } else { + paginationReq['orgId'] = req.params.orgId; + paginationReq['bgId'] = req.params.bgId; + paginationReq['projectId'] = req.params.projectId; + paginationReq['templateType'] = req.query.templateType; + paginationReq['blueprintConfig.cloudProviderType'] = req.query.providerType; + paginationReq['searchColumns'] = ['name']; } - }); + reqData = paginationReq; + apiUtil.databaseUtil(paginationReq, next); + + }, + function (queryObj, next) { + if (req.query.templateType === 'composite') { + compositeBlueprintModel.getCompositeBlueprintByOrgBgProject(queryObj, next) + } else { + Blueprints.getBlueprintByOrgBgProjectProviderType(queryObj, next); + } + }, + function (blueprints, next) { + if (req.query.pagination === 'true') { + apiUtil.paginationResponse(blueprints, reqData, next); + } else { + next(null, blueprints.docs); + } + }], function (err, results) { + if (err) { + res.send({ + "errorCode": 500, + "message": "Error occured while fetching Blueprints." + }); + } else { + return res.send(results); + } + }); } } -function syncDesignTreeWithProjectAndEnv(orgId,bgId,callback){ +function syncDesignTreeWithProjectAndEnv(orgId, bgId, callback) { var projectObjList = []; d4dModelNew.d4dModelMastersProjects.find({ id: '4', orgname_rowid: { - $in: [orgId] + $in: [orgId] }, productgroupname_rowid: bgId - }, function(err, projectList) { - if(err){ - callback (err,null);; - }else if(projectList.length > 0){ - for(var i = 0; i < projectList.length;i++){ - if(projectList[i].environmentname_rowid && projectList[i].environmentname_rowid !== ''){ + }, function (err, projectList) { + if (err) { + callback(err, null); + ; + } else if (projectList.length > 0) { + for (var i = 0; i < projectList.length; i++) { + if (projectList[i].environmentname_rowid && projectList[i].environmentname_rowid !== '') { var envIds = projectList[i].environmentname_rowid.split(','); var envNames = projectList[i].environmentname.split(','); - var envObjList =[]; - for(var j = 0; j < envIds.length; j++) { + var envObjList = []; + for (var j = 0; j < envIds.length; j++) { envObjList.push({ name: envNames[j], rowid: envIds[j], }); } - if(envObjList.length === envIds.length){ + if (envObjList.length === envIds.length) { var projectObj = { - name:projectList[i].projectname, - rowId:projectList[i].rowid, - environments:envObjList + name: projectList[i].projectname, + rowId: projectList[i].rowid, + environments: envObjList } projectObjList.push(projectObj); projectObj = {}; - if(projectObjList.length === projectList.length){ - callback (null,projectObjList); + if (projectObjList.length === projectList.length) { + callback(null, projectObjList); } } - }else{ + } else { var projectObj = { - name:projectList[i].projectname, - rowId:projectList[i].rowid, - environments:[""] + name: projectList[i].projectname, + rowId: projectList[i].rowid, + environments: [""] } projectObjList.push(projectObj); projectObj = {}; - if(projectObjList.length === projectList.length){ - callback (null,projectObjList); + if (projectObjList.length === projectList.length) { + callback(null, projectObjList); } } } - }else{ - callback (null,projectObjList); + } else { + callback(null, projectObjList); } }) } -function syncWorkZoneTreeWithProjectAndEnv(orgId,orgName,bgId,bgName,callback){ +function syncWorkZoneTreeWithProjectAndEnv(orgId, orgName, bgId, bgName, callback) { var resultObj = {}; - var projectObjList =[],projectNodeObjList =[]; + var projectObjList = [], projectNodeObjList = []; d4dModelNew.d4dModelMastersProjects.find({ id: '4', orgname_rowid: { $in: [orgId] }, productgroupname_rowid: bgId - }, function(err, projectList) { - if(err){ - callback (err,null);; - }else if(projectList.length > 0){ - for(var i = 0; i < projectList.length;i++){ - (function(project){ - if(project.environmentname_rowid && project.environmentname_rowid !== '') { + }, function (err, projectList) { + if (err) { + callback(err, null); + ; + } else if (projectList.length > 0) { + for (var i = 0; i < projectList.length; i++) { + (function (project) { + if (project.environmentname_rowid && project.environmentname_rowid !== '') { var envIds = project.environmentname_rowid.split(','); var envNames = project.environmentname.split(','); - var envNodeList =[],envObjList =[]; + var envNodeList = [], envObjList = []; for (var j = 0; j < envIds.length; j++) { envObjList.push({ name: envNames[j], @@ -2443,7 +2449,7 @@ function syncWorkZoneTreeWithProjectAndEnv(orgId,orgName,bgId,bgName,callback){ callback(null, resultObj); } } - }else{ + } else { var projectObj = { name: project.projectname, text: project.projectname, @@ -2478,8 +2484,8 @@ function syncWorkZoneTreeWithProjectAndEnv(orgId,orgName,bgId,bgName,callback){ } })(projectList[i]); } - }else{ - callback (null,resultObj); + } else { + callback(null, resultObj); } }) } diff --git a/server/app/routes/v1.0/routes_providercommon.js b/server/app/routes/v1.0/routes_providercommon.js index 0a01cb85b..adc320023 100644 --- a/server/app/routes/v1.0/routes_providercommon.js +++ b/server/app/routes/v1.0/routes_providercommon.js @@ -90,32 +90,32 @@ module.exports.setRoutes = function (app, sessionVerificationFunc) { function getManagedInstancesList(req, res, next) { var reqObj = {}; async.waterfall( - [ - function (next) { - apiUtil.changeRequestForJqueryPagination(req.query, next); - }, - function (reqData, next) { - reqObj = reqData; - apiUtil.paginationRequest(reqData, 'managedInstances', next); - }, - function (paginationReq, next) { - paginationReq['providerId'] = req.params.providerId; - paginationReq['searchColumns'] = ['instanceIP', 'instanceState', 'platformId', 'hardware.os', 'projectName', 'environmentName']; - apiUtil.databaseUtil(paginationReq, next); - }, - function (queryObj, next) { - instancesDao.getByProviderId(queryObj, next); - }, - function (managedInstances, next) { - apiUtil.changeResponseForJqueryPagination(managedInstances, reqObj, next); - } - ], - function (err, results) { - if (err) - next(err); - else - return res.status(200).send(results); - }); + [ + function (next) { + apiUtil.changeRequestForJqueryPagination(req.query, next); + }, + function (reqData, next) { + reqObj = reqData; + apiUtil.paginationRequest(reqData, 'managedInstances', next); + }, + function (paginationReq, next) { + paginationReq['providerId'] = req.params.providerId; + paginationReq['searchColumns'] = ['instanceIP', 'instanceState', 'platformId', 'hardware.os', 'projectName', 'environmentName']; + apiUtil.databaseUtil(paginationReq, next); + }, + function (queryObj, next) { + instancesDao.getByProviderId(queryObj, next); + }, + function (managedInstances, next) { + apiUtil.changeResponseForJqueryPagination(managedInstances, reqObj, next); + } + ], + function (err, results) { + if (err) + next(err); + else + return res.status(200).send(results); + }); } ; @@ -124,29 +124,29 @@ module.exports.setRoutes = function (app, sessionVerificationFunc) { function getManagedInstances(req, res, next) { var reqData = {}; async.waterfall( - [ - function (next) { - apiUtil.paginationRequest(req.query, 'managedInstances', next); - }, - function (paginationReq, next) { - paginationReq['providerId'] = req.params.providerId; - paginationReq['searchColumns'] = ['instanceIP', 'instanceState', 'platformId', 'hardware.os', 'projectName', 'environmentName']; - reqData = paginationReq; - apiUtil.databaseUtil(paginationReq, next); - }, - function (queryObj, next) { - instancesDao.getByProviderId(queryObj, next); - }, - function (managedInstances, next) { - apiUtil.paginationResponse(managedInstances, reqData, next); - } - ], - function (err, results) { - if (err) - next(err); - else - return res.status(200).send(results); - }); + [ + function (next) { + apiUtil.paginationRequest(req.query, 'managedInstances', next); + }, + function (paginationReq, next) { + paginationReq['providerId'] = req.params.providerId; + paginationReq['searchColumns'] = ['instanceIP', 'instanceState', 'platformId', 'hardware.os', 'projectName', 'environmentName']; + reqData = paginationReq; + apiUtil.databaseUtil(paginationReq, next); + }, + function (queryObj, next) { + instancesDao.getByProviderId(queryObj, next); + }, + function (managedInstances, next) { + apiUtil.paginationResponse(managedInstances, reqData, next); + } + ], + function (err, results) { + if (err) + next(err); + else + return res.status(200).send(results); + }); } @@ -155,30 +155,30 @@ module.exports.setRoutes = function (app, sessionVerificationFunc) { function getUnManagedInstances(req, res, next) { var reqData = {}; async.waterfall( - [ - function (next) { - apiUtil.paginationRequest(req.query, 'unmanagedInstances', next); - }, - function (paginationReq, next) { - paginationReq['providerId'] = req.params.providerId; - paginationReq['searchColumns'] = ['ip', 'platformId', 'os', 'state', 'projectName', 'environmentName', 'providerData.region']; - reqData = paginationReq; - apiUtil.databaseUtil(paginationReq, next); - }, - function (queryObj, next) { - unManagedInstancesDao.getByProviderId(queryObj, next); - }, - function (unmanagedInstances, next) { - apiUtil.paginationResponse(unmanagedInstances, reqData, next); - } + [ + function (next) { + apiUtil.paginationRequest(req.query, 'unmanagedInstances', next); + }, + function (paginationReq, next) { + paginationReq['providerId'] = req.params.providerId; + paginationReq['searchColumns'] = ['ip', 'platformId', 'os', 'state', 'projectName', 'environmentName', 'providerData.region']; + reqData = paginationReq; + apiUtil.databaseUtil(paginationReq, next); + }, + function (queryObj, next) { + unManagedInstancesDao.getByProviderId(queryObj, next); + }, + function (unmanagedInstances, next) { + apiUtil.paginationResponse(unmanagedInstances, reqData, next); + } - ], - function (err, results) { - if (err) - next(err); - else - return res.status(200).send(results); - }); + ], + function (err, results) { + if (err) + next(err); + else + return res.status(200).send(results); + }); } ; @@ -187,33 +187,33 @@ module.exports.setRoutes = function (app, sessionVerificationFunc) { function getUnManagedInstancesList(req, res, next) { var reqObj = {}; async.waterfall( - [ - function (next) { - apiUtil.changeRequestForJqueryPagination(req.query, next); - }, - function (reqData, next) { - reqObj = reqData; - apiUtil.paginationRequest(reqData, 'unmanagedInstances', next); - }, - function (paginationReq, next) { - paginationReq['providerId'] = req.params.providerId; - paginationReq['searchColumns'] = ['ip', 'platformId', 'os', 'state', 'projectName', 'environmentName', 'providerData.region']; - apiUtil.databaseUtil(paginationReq, next); - }, - function (queryObj, next) { - unManagedInstancesDao.getByProviderId(queryObj, next); - }, - function (unmanagedInstances, next) { - apiUtil.changeResponseForJqueryPagination(unmanagedInstances, reqObj, next); - } + [ + function (next) { + apiUtil.changeRequestForJqueryPagination(req.query, next); + }, + function (reqData, next) { + reqObj = reqData; + apiUtil.paginationRequest(reqData, 'unmanagedInstances', next); + }, + function (paginationReq, next) { + paginationReq['providerId'] = req.params.providerId; + paginationReq['searchColumns'] = ['ip', 'platformId', 'os', 'state', 'projectName', 'environmentName', 'providerData.region']; + apiUtil.databaseUtil(paginationReq, next); + }, + function (queryObj, next) { + unManagedInstancesDao.getByProviderId(queryObj, next); + }, + function (unmanagedInstances, next) { + apiUtil.changeResponseForJqueryPagination(unmanagedInstances, reqObj, next); + } - ], - function (err, results) { - if (err) - next(err); - else - return res.status(200).send(results); - }); + ], + function (err, results) { + if (err) + next(err); + else + return res.status(200).send(results); + }); } ; // @TODO To be refactored and API end point to be changed @@ -383,7 +383,7 @@ module.exports.setRoutes = function (app, sessionVerificationFunc) { return; } taskstatus = obj; - + for (var i = 0; i < unmanagedInstances.length; i++) { (function (unmanagedInstance) { var openport = 22; @@ -571,11 +571,9 @@ module.exports.setRoutes = function (app, sessionVerificationFunc) { if (instance.monitor && instance.monitor.parameters.transportProtocol === 'rabbitmq') { - var sensuCookBook = 'recipe[sensu-client]'; - var runlist = []; + var sensuCookBooks = MasterUtils.getSensuCookbooks(); + var runlist = sensuCookBooks; var jsonAttributes = {}; - - runlist.push(sensuCookBook); jsonAttributes['sensu-client'] = MasterUtils.getSensuCookbookAttributes(instance.monitor, instance.id); ; @@ -1219,7 +1217,7 @@ module.exports.setRoutes = function (app, sessionVerificationFunc) { * } */ app.get('/providers/:providerId/tag-mappings/:catalystEntityType', validate(tagsValidator.tagsMapping), - getTagMapping); + getTagMapping); /** * @api {post} /providers/:providerId/tags-mappings Create tag mappings @@ -1377,7 +1375,7 @@ module.exports.setRoutes = function (app, sessionVerificationFunc) { * } */ app.patch('/providers/:providerId/tag-mappings/:catalystEntityType', validate(tagsValidator.tagsMapping), - updateTagMapping); + updateTagMapping); /** * @api {delete} /providers/:providerId/tag-mappings/:catalystEntityType Delete tag mapping @@ -1391,7 +1389,7 @@ module.exports.setRoutes = function (app, sessionVerificationFunc) { * */ app.delete('/providers/:providerId/tag-mappings/:catalystEntityType', validate(tagsValidator.tagsMapping), - deleteTagMapping); + deleteTagMapping); /** @@ -1491,7 +1489,7 @@ module.exports.setRoutes = function (app, sessionVerificationFunc) { * } */ app.patch('/providers/:providerId/unassigned-instances/:instanceId', - validate(instanceValidator.update), updateUnassignedInstanceTags); + validate(instanceValidator.update), updateUnassignedInstanceTags); /** * @api {patch} /providers/:providerId/unassigned-instances Update unassigned instance @@ -1554,79 +1552,79 @@ module.exports.setRoutes = function (app, sessionVerificationFunc) { * } */ app.patch('/providers/:providerId/unassigned-instances', - validate(instanceValidator.get), bulkUpdateUnassignedInstances); + validate(instanceValidator.get), bulkUpdateUnassignedInstances); function getTagsList(req, res, callback) { async.waterfall( - [ - - function (next) { - providerService.checkIfProviderExists(req.params.providerId, next); - }, - providerService.getTagsByProvider, - providerService.createTagsList - ], - function (err, results) { - if (err) { - callback(err); - } else { - return res.status(200).send(results); + [ + + function (next) { + providerService.checkIfProviderExists(req.params.providerId, next); + }, + providerService.getTagsByProvider, + providerService.createTagsList + ], + function (err, results) { + if (err) { + callback(err); + } else { + return res.status(200).send(results); + } } - } ); } function getUnassignedInstancesList(req, res, callback) { var reqData = {}; async.waterfall( - [ - function (next) { - apiUtil.changeRequestForJqueryPagination(req.query, next); - }, - function (reqData, next) { - apiUtil.paginationRequest(reqData, 'unassignedInstances', next); - }, - function (paginationReq, next) { - paginationReq['providerId'] = req.params.providerId; - paginationReq['searchColumns'] = ['ip', 'platformId', 'os', 'state', 'providerData.region']; - reqData = paginationReq; - apiUtil.databaseUtil(paginationReq, next); - }, - function (queryObj, next) { - instanceService.getUnassignedInstancesByProvider(queryObj, next); - }, - function (unAssignedInstances, next) { - apiUtil.changeResponseForJqueryPagination(unAssignedInstances, reqData, next); - } + [ + function (next) { + apiUtil.changeRequestForJqueryPagination(req.query, next); + }, + function (reqData, next) { + apiUtil.paginationRequest(reqData, 'unassignedInstances', next); + }, + function (paginationReq, next) { + paginationReq['providerId'] = req.params.providerId; + paginationReq['searchColumns'] = ['ip', 'platformId', 'os', 'state', 'providerData.region']; + reqData = paginationReq; + apiUtil.databaseUtil(paginationReq, next); + }, + function (queryObj, next) { + instanceService.getUnassignedInstancesByProvider(queryObj, next); + }, + function (unAssignedInstances, next) { + apiUtil.changeResponseForJqueryPagination(unAssignedInstances, reqData, next); + } - ], - function (err, results) { - if (err) - callback(err); - else - return res.status(200).send(results); - }); + ], + function (err, results) { + if (err) + callback(err); + else + return res.status(200).send(results); + }); } function getTag(req, res, callback) { async.waterfall( - [ - - function (next) { - providerService.checkIfProviderExists(req.params.providerId, next); - }, - function (provider, next) { - providerService.getTagByNameAndProvider(provider._id, req.params.tagName, next); - }, - providerService.createTagObject - ], - function (err, results) { - if (err) { - callback(err); - } else { - return res.status(200).send(results); + [ + + function (next) { + providerService.checkIfProviderExists(req.params.providerId, next); + }, + function (provider, next) { + providerService.getTagByNameAndProvider(provider._id, req.params.tagName, next); + }, + providerService.createTagObject + ], + function (err, results) { + if (err) { + callback(err); + } else { + return res.status(200).send(results); + } } - } ); } @@ -1635,252 +1633,252 @@ module.exports.setRoutes = function (app, sessionVerificationFunc) { function updateTag(req, res, callback) { async.waterfall( - [ - - function (next) { - providerService.checkIfProviderExists(req.params.providerId, next); - }, - function (provider, next) { - var tagDetails = { - 'name': req.params.tagName, - 'description': req.body.description - }; - providerService.updateTag(provider, tagDetails, next); - }, - providerService.createTagObject - ], - function (err, results) { - if (err) { - callback(err); - } else { - return res.status(200).send(results); + [ + + function (next) { + providerService.checkIfProviderExists(req.params.providerId, next); + }, + function (provider, next) { + var tagDetails = { + 'name': req.params.tagName, + 'description': req.body.description + }; + providerService.updateTag(provider, tagDetails, next); + }, + providerService.createTagObject + ], + function (err, results) { + if (err) { + callback(err); + } else { + return res.status(200).send(results); + } } - } ); } function deleteTag(req, res, callback) { async.waterfall( - [ + [ - function (next) { - providerService.checkIfProviderExists(req.params.providerId, next); - }, - function (provider, next) { - providerService.deleteTag(provider, req.params.tagName, next); - } - ], - function (err, results) { - if (err) { - callback(err); - } else { - return res.status(200).send(results); + function (next) { + providerService.checkIfProviderExists(req.params.providerId, next); + }, + function (provider, next) { + providerService.deleteTag(provider, req.params.tagName, next); + } + ], + function (err, results) { + if (err) { + callback(err); + } else { + return res.status(200).send(results); + } } - } ); } function getTagMappingsList(req, res, callback) { async.waterfall( - [ - - function (next) { - providerService.checkIfProviderExists(req.params.providerId, next); - }, - providerService.getTagsByProvider, - providerService.createTagMappingList - ], - function (err, results) { - if (err) { - callback(err); - } else { - return res.status(200).send(results); + [ + + function (next) { + providerService.checkIfProviderExists(req.params.providerId, next); + }, + providerService.getTagsByProvider, + providerService.createTagMappingList + ], + function (err, results) { + if (err) { + callback(err); + } else { + return res.status(200).send(results); + } } - } ); } function getTagMapping(req, res, callback) { async.waterfall( - [ - - function (next) { - providerService.checkIfProviderExists(req.params.providerId, next); - }, - function (provider, next) { - providerService.getTagByCatalystEntityTypeAndProvider(provider._id, - req.params.catalystEntityType, next); - }, - providerService.createTagMappingObject - ], - function (err, results) { - if (err) { - callback(err); - } else { - return res.status(200).send(results); + [ + + function (next) { + providerService.checkIfProviderExists(req.params.providerId, next); + }, + function (provider, next) { + providerService.getTagByCatalystEntityTypeAndProvider(provider._id, + req.params.catalystEntityType, next); + }, + providerService.createTagMappingObject + ], + function (err, results) { + if (err) { + callback(err); + } else { + return res.status(200).send(results); + } } - } ); } function addTagMappings(req, res, callback) { async.waterfall( - [ - - function (next) { - providerService.checkIfProviderExists(req.params.providerId, next); - }, - function (provider, next) { - providerService.addMultipleTagMappings(provider._id, req.body, next); - }, - providerService.createTagMappingList - ], - function (err, results) { - if (err) { - callback(err); - } else { - return res.status(201).send(results); + [ + + function (next) { + providerService.checkIfProviderExists(req.params.providerId, next); + }, + function (provider, next) { + providerService.addMultipleTagMappings(provider._id, req.body, next); + }, + providerService.createTagMappingList + ], + function (err, results) { + if (err) { + callback(err); + } else { + return res.status(201).send(results); + } } - } ); } function updateTagMapping(req, res, callback) { async.waterfall( - [ - function (next) { - providerService.checkIfProviderExists(req.params.providerId, next); - }, - function (provider, next) { - providerService.getTagByCatalystEntityTypeAndProvider(provider._id, - req.params.catalystEntityType, next); - }, - function (tag, next) { - providerService.updateTagMapping(tag, req.body, next); - }, - /*function (tag, next) { - providerService.getTagByNameAndProvider(req.params.providerId, tag.name, next); - },*/ - providerService.createTagMappingObject - ], - function (err, results) { - if (err) { - callback(err); - } else { - return res.status(200).send(results); + [ + function (next) { + providerService.checkIfProviderExists(req.params.providerId, next); + }, + function (provider, next) { + providerService.getTagByCatalystEntityTypeAndProvider(provider._id, + req.params.catalystEntityType, next); + }, + function (tag, next) { + providerService.updateTagMapping(tag, req.body, next); + }, + /*function (tag, next) { + providerService.getTagByNameAndProvider(req.params.providerId, tag.name, next); + },*/ + providerService.createTagMappingObject + ], + function (err, results) { + if (err) { + callback(err); + } else { + return res.status(200).send(results); + } } - } ); } function deleteTagMapping(req, res, callback) { async.waterfall( - [ + [ - function (next) { - providerService.checkIfProviderExists(req.params.providerId, next); - }, - function (provider, next) { - providerService.deleteTagMapping(provider._id, req.params.catalystEntityType, next); - } - ], - function (err, results) { - if (err) { - callback(err); - } else { - return res.status(200).send(results); + function (next) { + providerService.checkIfProviderExists(req.params.providerId, next); + }, + function (provider, next) { + providerService.deleteTagMapping(provider._id, req.params.catalystEntityType, next); + } + ], + function (err, results) { + if (err) { + callback(err); + } else { + return res.status(200).send(results); + } } - } ); } function getCatalystEntityMapping(req, res, callback) { async.waterfall( - [ - - function (next) { - providerService.checkIfProviderExists(req.params.providerId, next); - }, - function (provider, next) { - providerService.getTagByCatalystEntityTypeAndProvider(provider._id, - req.params.catalystEntityType, next); - }, - function (tag, next) { - providerService.createCatalystEntityMappingObject(tag, req.params.catalystEntityId, next); - } - ], - function (err, results) { - if (err) { - callback(err); - } else { - return res.status(200).send(results); + [ + + function (next) { + providerService.checkIfProviderExists(req.params.providerId, next); + }, + function (provider, next) { + providerService.getTagByCatalystEntityTypeAndProvider(provider._id, + req.params.catalystEntityType, next); + }, + function (tag, next) { + providerService.createCatalystEntityMappingObject(tag, req.params.catalystEntityId, next); + } + ], + function (err, results) { + if (err) { + callback(err); + } else { + return res.status(200).send(results); + } } - } ); } function updateUnassignedInstanceTags(req, res, callback) { async.waterfall( - [ - function (next) { - providerService.checkIfProviderExists(req.params.providerId, next); - }, - function (provider, next) { - instanceService.updateUnassignedInstanceProviderTags(provider, req.params.instanceId, - req.body.tags, next); - }, - function (instance, next) { - // @TODO Nested callback with anonymous function to be avoided. - providerService.getTagMappingsByProviderId(instance.providerId, - function (err, tagMappingsList) { - if (err) { - next(err); - } else { - instanceService.updateUnassignedInstanceTags(instance, - req.body.tags, tagMappingsList, next); - } - } - ); - }, - instanceService.createUnassignedInstanceObject - ], - function (err, results) { - if (err) { - callback(err); - } else { - return res.status(200).send(results); + [ + function (next) { + providerService.checkIfProviderExists(req.params.providerId, next); + }, + function (provider, next) { + instanceService.updateUnassignedInstanceProviderTags(provider, req.params.instanceId, + req.body.tags, next); + }, + function (instance, next) { + // @TODO Nested callback with anonymous function to be avoided. + providerService.getTagMappingsByProviderId(instance.providerId, + function (err, tagMappingsList) { + if (err) { + next(err); + } else { + instanceService.updateUnassignedInstanceTags(instance, + req.body.tags, tagMappingsList, next); + } + } + ); + }, + instanceService.createUnassignedInstanceObject + ], + function (err, results) { + if (err) { + callback(err); + } else { + return res.status(200).send(results); + } } - } ); } function bulkUpdateUnassignedInstances(req, res, callback) { async.waterfall( - [ - function (next) { - providerService.checkIfProviderExists(req.params.providerId, next); - }, - function (provider, next) { - if ('instances' in req.body) { - instanceService.bulkUpdateInstanceProviderTags(provider, req.body.instances, next); + [ + function (next) { + providerService.checkIfProviderExists(req.params.providerId, next); + }, + function (provider, next) { + if ('instances' in req.body) { + instanceService.bulkUpdateInstanceProviderTags(provider, req.body.instances, next); + } else { + var err = new Error("Malformed request"); + err.status = 400; + next(err); + } + }, + function (instances, next) { + instanceService.bulkUpdateUnassignedInstanceTags(instances, next); + } + ], + function (err, results) { + if (err) { + callback(err); } else { - var err = new Error("Malformed request"); - err.status = 400; - next(err); + return res.status(200).send(results); } - }, - function (instances, next) { - instanceService.bulkUpdateUnassignedInstanceTags(instances, next); } - ], - function (err, results) { - if (err) { - callback(err); - } else { - return res.status(200).send(results); - } - } ); } }; From a10c39a4e3b9df85cce712df341c023a01255c0a Mon Sep 17 00:00:00 2001 From: hrushikesh07 Date: Tue, 20 Dec 2016 12:21:45 +0530 Subject: [PATCH 03/75] firebase test --- client/cat3/main.html | 2 + client/cat3/src/main.js | 2 +- .../sections/dashboard/track/track.html | 13 +- .../sections/dashboard/track/trackCtrl.js | 123 +++++++++++++++++- 4 files changed, 133 insertions(+), 7 deletions(-) diff --git a/client/cat3/main.html b/client/cat3/main.html index d7cfa2ac0..427554ce5 100644 --- a/client/cat3/main.html +++ b/client/cat3/main.html @@ -37,6 +37,8 @@ + + diff --git a/client/cat3/src/main.js b/client/cat3/src/main.js index 55ec51ab8..389caf669 100644 --- a/client/cat3/src/main.js +++ b/client/cat3/src/main.js @@ -12,7 +12,7 @@ * All modules/feature will be through * */ -var angularApp = angular.module('catapp', ['ui.router','ngTouch','toastr', +var angularApp = angular.module('catapp', ['ui.router','ngTouch','toastr','firebase', 'global.login', 'global.breadcrumb', 'authentication', diff --git a/client/cat3/src/partials/sections/dashboard/track/track.html b/client/cat3/src/partials/sections/dashboard/track/track.html index 6103062cb..7ff89150b 100644 --- a/client/cat3/src/partials/sections/dashboard/track/track.html +++ b/client/cat3/src/partials/sections/dashboard/track/track.html @@ -1,3 +1,10 @@ -
- {{Text}} -
\ No newline at end of file +
+

{{ day.name }}

+
+ + +
+
\ No newline at end of file diff --git a/client/cat3/src/partials/sections/dashboard/track/trackCtrl.js b/client/cat3/src/partials/sections/dashboard/track/trackCtrl.js index 38b7e6e8d..116ff2885 100644 --- a/client/cat3/src/partials/sections/dashboard/track/trackCtrl.js +++ b/client/cat3/src/partials/sections/dashboard/track/trackCtrl.js @@ -1,7 +1,124 @@ (function (angular) { - "use strict"; angular.module('dashboard.track', []) - .controller('trackCtrl',['$scope', function ($scope) { - $scope.Text = 'Track page'; + .controller('trackCtrl',['$scope','$firebase', function ($scope,$firebase) { + + // get # of real time users + var listRef = new Firebase("https://burning-torch-4263.firebaseio.com/presence/"); + var userRef = listRef.push(); + + // Add ourselves to presence list when online. + var presenceRef = new Firebase("https://burning-torch-4263.firebaseio.com/.info/connected"); + presenceRef.on("value", function(snap) { + if (snap.val()) { + userRef.set(true); + // Remove ourselves when we disconnect. + userRef.onDisconnect().remove(); + } + }); + + listRef.on("value", function(snap) { + $scope.online = snap.numChildren(); + }); + + var ref = new Firebase("https://burning-torch-4263.firebaseio.com/days"); + var fb = $firebase(ref); + + // three way data binding + var syncObject = fb.$asObject(); + syncObject.$bindTo($scope, 'days'); + + $scope.reset = function() { + fb.$set({ + monday: { + name: 'Monday', + slots: { + 0900: { + time: '9:00am', + booked: false + }, + 0110: { + time: '11:00am', + booked: false + }, + 100: { + time: '1:00pm', + booked: false + }, + 300: { + time: '3:00pm', + booked: false + }, + 500: { + time: '5:00pm', + booked: false + }, + 700: { + time: '7:00pm', + booked: false + } + } + }, + tuesday: { + name: 'Tuesday', + slots: { + 0900: { + time: '9:00am', + booked: false + }, + 0110: { + time: '11:00am', + booked: false + }, + 100: { + time: '1:00pm', + booked: false + }, + 300: { + time: '3:00pm', + booked: false + }, + 500: { + time: '5:00pm', + booked: false + }, + 700: { + time: '7:00pm', + booked: false + } + } + }, + wednesday: { + name: 'Wednesday', + slots: { + 0900: { + time: '9:00am', + booked: false + }, + 0110: { + time: '11:00am', + booked: false + }, + 100: { + time: '1:00pm', + booked: false + }, + 300: { + time: '3:00pm', + booked: false + }, + 500: { + time: '5:00pm', + booked: false + }, + 700: { + time: '7:00pm', + booked: false + } + } + } + }); + }; + }]); + })(angular); \ No newline at end of file From 45dcfedf7646bea319e9683a86658f83f587049e Mon Sep 17 00:00:00 2001 From: hrushikesh07 Date: Tue, 20 Dec 2016 12:57:11 +0530 Subject: [PATCH 04/75] CAT-2558 Timeout error when user tries to create Orgadmin role. --- server/app/routes/v1.0/routes_d4dMasters.js | 6 ++-- server/app/services/settingsService.js | 37 +++++++++++---------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/server/app/routes/v1.0/routes_d4dMasters.js b/server/app/routes/v1.0/routes_d4dMasters.js index 624450b06..d4562e615 100755 --- a/server/app/routes/v1.0/routes_d4dMasters.js +++ b/server/app/routes/v1.0/routes_d4dMasters.js @@ -2736,8 +2736,7 @@ module.exports.setRoutes = function (app, sessionVerification) { logger.error('Hit getting setting wizard error', err); res.send(500); return; - } - if (settingWizards.currentStep && settingWizards.currentStep.name === 'User Configuration') { + }else if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.name === 'User Configuration') { var settingWizardSteps = appConfig.settingWizardSteps; settingWizards.currentStep.nestedSteps[1].isCompleted = true; settingWizards.currentStep.isCompleted = true; @@ -2753,6 +2752,9 @@ module.exports.setRoutes = function (app, sessionVerification) { res.send(200); return; }); + }else { + res.send(200); + return; } }) } diff --git a/server/app/services/settingsService.js b/server/app/services/settingsService.js index 4eea8841f..e9f0c79fb 100644 --- a/server/app/services/settingsService.js +++ b/server/app/services/settingsService.js @@ -81,7 +81,10 @@ settingsService.updateProjectData = function updateProjectData(enviornment,callb }; settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callback){ - if(id === '1'){ + if(orgId === null || orgId === ''){ + callback(null,orgId); + return; + }else if(id === '1'){ settingWizard.removeSettingWizardByOrgId(orgId,function(err,data){ if(err){ callback(err,null); @@ -89,14 +92,14 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba } callback(null,data); }) - }else if(id === '2'){ + }else if(id === '2'){ settingWizard.getSettingWizardByOrgId(orgId,function(err,settingWizards) { if (err) { callback(err, null); return; } logger.debug(JSON.stringify(settingWizards)); - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'Org Configuration' && settingWizards.currentStep.nestedSteps[1].isCompleted === true) { settingWizards.currentStep.nestedSteps[1].isCompleted = false; @@ -113,13 +116,13 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba return; } }) - }else if(id === '4'){ + }else if(id === '4'){ settingWizard.getSettingWizardByOrgId(orgId,function(err,settingWizards) { if (err) { callback(err, null); return; } - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'Config Management' && settingWizards.currentStep.nestedSteps[0].isCompleted === false) { var settingWizardSteps = appConfig.settingWizardSteps; settingWizards.currentStep = settingWizards.previousStep; @@ -145,7 +148,7 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba callback(err, null); return; } - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'Config Management' && settingWizards.currentStep.nestedSteps[1].isCompleted === false) { settingWizards.currentStep.nestedSteps[0].isCompleted = false; @@ -167,7 +170,7 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba callback(err, null); return; } - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'User Configuration' && settingWizards.currentStep.nestedSteps[0].isCompleted === false) { var settingWizardSteps = appConfig.settingWizardSteps; @@ -199,7 +202,7 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba callback(err, null); return; } - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'User Configuration' && settingWizards.currentStep.nestedSteps[1].isCompleted === false) { settingWizards.currentStep.nestedSteps[0].isCompleted = false; @@ -222,7 +225,7 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba callback(err, null); return; } - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'Provider Configuration' && settingWizards.currentStep.nestedSteps[0].isCompleted === false) { var settingWizardSteps = appConfig.settingWizardSteps; @@ -253,7 +256,7 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba callback(err, null); return; } - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'Devops Roles' && settingWizards.currentStep.nestedSteps[1].isCompleted === false) { settingWizards.currentStep.nestedSteps[0].isCompleted = false; @@ -275,7 +278,7 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba callback(err, null); return; } - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'Devops Roles' && settingWizards.currentStep.nestedSteps[2].isCompleted === false) { settingWizards.currentStep.nestedSteps[1].isCompleted = false; @@ -297,7 +300,7 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba callback(err, null); return; } - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'Wizard Status' && settingWizards.currentStep.isCompleted === true) { var settingWizardSteps = appConfig.settingWizardSteps; @@ -329,7 +332,7 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba callback(err, null); return; } - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'Gallery Setup' && settingWizards.nestedSteps[1].isCompleted === false) { settingWizards.nestedSteps[0].isCompleted = false; @@ -351,7 +354,7 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba callback(err, null); return; } - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'Gallery Setup' && settingWizards.nestedSteps[2].isCompleted === false) { settingWizards.nestedSteps[1].isCompleted = false; @@ -373,7 +376,7 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba callback(err, null); return; } - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'Provider Configuration' && settingWizards.currentStep.nestedSteps[1].isCompleted === false) { settingWizards.currentStep.nestedSteps[0].isCompleted = false; @@ -395,7 +398,7 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba callback(err, null); return; } - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'Gallery Setup' && settingWizards.currentStep.nestedSteps[0].isCompleted === false) { var settingWizardSteps = appConfig.settingWizardSteps; @@ -426,7 +429,7 @@ settingsService.trackSettingWizard = function trackSettingWizard(id,orgId,callba callback(err, null); return; } - if (settingWizards.currentStep && settingWizards.currentStep.nestedSteps + if (settingWizards !== null && settingWizards.currentStep && settingWizards.currentStep.nestedSteps && settingWizards.currentStep.name === 'Devops Roles' && settingWizards.currentStep.nestedSteps[0].isCompleted === false) { var settingWizardSteps = appConfig.settingWizardSteps; var previousStep = settingWizardSteps[4]; From 7fd7ac092b84dbc0d185e34ddfb02681f1acb066 Mon Sep 17 00:00:00 2001 From: Durgesh1988 Date: Tue, 20 Dec 2016 18:02:45 +0530 Subject: [PATCH 05/75] Resolved merge conflicts --- server/app/cronjobs/cron-jobs.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/app/cronjobs/cron-jobs.js b/server/app/cronjobs/cron-jobs.js index c5b3823b6..7b027e5e8 100644 --- a/server/app/cronjobs/cron-jobs.js +++ b/server/app/cronjobs/cron-jobs.js @@ -26,6 +26,7 @@ var providerTagsAggregation = require('_pr/cronjobs/provider-tags-aggregation'); var dockerContainerSync = require('_pr/cronjobs/docker-container-sync'); var awsRDSS3ProviderSync = require('_pr/cronjobs/provider-rds-s3-sync'); var chefSync = require('_pr/cronjobs/chef-sync'); +var taskSync = require('_pr/cronjobs/task-sync'); module.exports.start = function start() { @@ -60,4 +61,8 @@ module.exports.start = function start() { var chefSyncJobId = crontab.scheduleJob(chefSync.getInterval(), chefSync.execute); + logger.info('Task Sync started with interval ==> '+ taskSync.getInterval()); + var taskSyncJobId + = crontab.scheduleJob(taskSync.getInterval(), taskSync.execute); + } \ No newline at end of file From c6f7c876e78f67bbe4a1c4239a3f2fdaa6542627 Mon Sep 17 00:00:00 2001 From: Durgesh1988 Date: Tue, 20 Dec 2016 18:58:26 +0530 Subject: [PATCH 06/75] Resolve UI error for PROD Build --- .../dashboard/bots/controller/chefLogCtrl.js | 182 +++++++++--------- 1 file changed, 91 insertions(+), 91 deletions(-) diff --git a/client/cat3/src/partials/sections/dashboard/bots/controller/chefLogCtrl.js b/client/cat3/src/partials/sections/dashboard/bots/controller/chefLogCtrl.js index 284734545..2fbcaf590 100644 --- a/client/cat3/src/partials/sections/dashboard/bots/controller/chefLogCtrl.js +++ b/client/cat3/src/partials/sections/dashboard/bots/controller/chefLogCtrl.js @@ -8,7 +8,7 @@ (function (angular) { "use strict"; angular.module('dashboard.bots') - .controller('chefLogCtrl', ['$q', '$scope', 'workzoneServices', '$timeout', 'orchestrationSetting', 'toastr', function ($q, $scope, workzoneServices, $timeout, orchestrationSetting, toastr) { + .controller('chefLogCtrl', ['$q', '$scope', 'workzoneServices', '$timeout', 'orchestrationSetting', 'toastr','items', function ($q, $scope, workzoneServices, $timeout, orchestrationSetting, toastr,items) { /*This controller can be invoked from either of two flows - Chef Log History Item Logs OR Chef Task Execute items object will contain only taskId and historyId. */ //var items = $scope.parentItemDetail; @@ -44,21 +44,21 @@ }, 100); }, /*logsPolling: function () { - timerObject = $timeout(function () { - workzoneServices.getChefJobLogs($scope.selectedInstance.nodeId, $scope.selectedInstance.actionLogId, helper.lastTimeStamp).then(function (resp) { - if (resp.data.length) { - var logData = { - logs: resp.data, - fullLogs: false - }; - helper.lastTimeStamp = helper.getlastTimeStamp(logData.logs); - $scope.logListDelta.push.apply($scope.logListDelta, logData.logs); - helper.scrollBottom(); - } - helper.logsPolling(); - }); - }, orchestrationSetting.orchestrationLogsPollerInterval); - },*/ + timerObject = $timeout(function () { + workzoneServices.getChefJobLogs($scope.selectedInstance.nodeId, $scope.selectedInstance.actionLogId, helper.lastTimeStamp).then(function (resp) { + if (resp.data.length) { + var logData = { + logs: resp.data, + fullLogs: false + }; + helper.lastTimeStamp = helper.getlastTimeStamp(logData.logs); + $scope.logListDelta.push.apply($scope.logListDelta, logData.logs); + helper.scrollBottom(); + } + helper.logsPolling(); + }); + }, orchestrationSetting.orchestrationLogsPollerInterval); + },*/ stopPolling: function () { $timeout.cancel(timerObject); } @@ -76,18 +76,18 @@ }; var init = function () { //get the details of one chef history entry - var param = { - url = '/bots/' + botId + '/history/' + historyId; + var param = { + url : '/bots/' + botId + '/history/' + historyId } genSevs.promiseGet(param).then(function (response) { - chefLogData.createInstanceList(response.data); - //$modalInstance.close(response.data); - //$rootScope.$emit('BOTS_LIBRARY_REFRESH'); - //helper.botLogModal(items._id, response.historyId, response.taskType); - }; - /*workzoneServices.getTaskHistoryItem(items.taskId, items.historyId).then(function (response) { chefLogData.createInstanceList(response.data); - });*/ + //$modalInstance.close(response.data); + //$rootScope.$emit('BOTS_LIBRARY_REFRESH'); + //helper.botLogModal(items._id, response.historyId, response.taskType); + }); + /*workzoneServices.getTaskHistoryItem(items.taskId, items.historyId).then(function (response) { + chefLogData.createInstanceList(response.data); + });*/ }; //method to get the names of the nodes associated to the job and add it to the nodeIdsWithActionLog object. chefLogData.createInstanceList = function (historyItem) { @@ -109,40 +109,40 @@ "instanceIds": nodeIds }; workzoneServices.postRetrieveDetailsForInstanceNames(requestObj).then(function (response) { - var _jobInstances = response.data; - //if blueprint job, use blueprintExecutionResults - if (bluePrintJob) { - for (var i = 0; i < bluePrintActionLogs.length; i++) { - bluePrintActionLogs[i].nodeId = bluePrintActionLogs[i].instanceId; - for (var j = 0; j < _jobInstances.length; j++) { - if (bluePrintActionLogs[i].instanceId === _jobInstances[j]._id) { - bluePrintActionLogs[i].uiNodeName = _jobInstances[j].name; + var _jobInstances = response.data; + //if blueprint job, use blueprintExecutionResults + if (bluePrintJob) { + for (var i = 0; i < bluePrintActionLogs.length; i++) { + bluePrintActionLogs[i].nodeId = bluePrintActionLogs[i].instanceId; + for (var j = 0; j < _jobInstances.length; j++) { + if (bluePrintActionLogs[i].instanceId === _jobInstances[j]._id) { + bluePrintActionLogs[i].uiNodeName = _jobInstances[j].name; + } } } - } - nodeIdWithActionLogs = bluePrintActionLogs; - } else {//if not blueprint job, use nodeIdsWithActionLog - for (var k = 0; k < historyItem.nodeIdsWithActionLog.length; k++) { - for (var l = 0; l < _jobInstances.length; l++) { - if (historyItem.nodeIdsWithActionLog[k].nodeId === _jobInstances[l]._id) { - historyItem.nodeIdsWithActionLog[k].uiNodeName = _jobInstances[l].name; + nodeIdWithActionLogs = bluePrintActionLogs; + } else {//if not blueprint job, use nodeIdsWithActionLog + for (var k = 0; k < historyItem.nodeIdsWithActionLog.length; k++) { + for (var l = 0; l < _jobInstances.length; l++) { + if (historyItem.nodeIdsWithActionLog[k].nodeId === _jobInstances[l]._id) { + historyItem.nodeIdsWithActionLog[k].uiNodeName = _jobInstances[l].name; + } } } + nodeIdWithActionLogs = historyItem.nodeIdsWithActionLog; } - nodeIdWithActionLogs = historyItem.nodeIdsWithActionLog; - } - chefLogData.chefHistoryItem = historyItem; //saved as we need timestamps from the historyItem - chefLogData.nodeIdsWithActionLog = nodeIdWithActionLogs; //this can now be used to show instance dropdown - if (chefLogData.nodeIdsWithActionLog[0]) { + chefLogData.chefHistoryItem = historyItem; //saved as we need timestamps from the historyItem + chefLogData.nodeIdsWithActionLog = nodeIdWithActionLogs; //this can now be used to show instance dropdown + if (chefLogData.nodeIdsWithActionLog[0]) { + $scope.isInstanceListLoading = false; + selectFirstInstance(chefLogData.nodeIdsWithActionLog[0]); + } + }, + function (error) { $scope.isInstanceListLoading = false; - selectFirstInstance(chefLogData.nodeIdsWithActionLog[0]); - } - }, - function (error) { - $scope.isInstanceListLoading = false; - toastr.error(error); - $scope.errorMessage = ""; - }); + toastr.error(error); + $scope.errorMessage = ""; + }) }; //method called when user changes the instance name from the dropdown. chefLogData.instanceChange = function () { @@ -161,20 +161,11 @@ if(timestamp && timestampEnded) { urlParams = 'timestamp=' + timestamp + '×tampEnded=' + timestampEnded; } - var param = { - url = "/instances/" + instanceId + '/actionLogs/' + actionId + - '/logs?' + urlParams; + var param = { + url : "/instances/" + instanceId + '/actionLogs/' + actionId + + '/logs?' + urlParams } genSevs.promiseGet(param).then(function (response) { - $scope.isLogsLoading = false; - var logData = { - logs: response.data, - fullLogs: true - }; - $scope.logListInitial = logData.logs; - helper.scrollBottom(); - }; - /*workzoneServices.getChefJobLogs($scope.selectedInstance.nodeId, $scope.selectedInstance.actionLogId, chefLogData.chefHistoryItem.timestampStarted, chefLogData.chefHistoryItem.timestampEnded).then(function (response) { $scope.isLogsLoading = false; var logData = { logs: response.data, @@ -182,11 +173,20 @@ }; $scope.logListInitial = logData.logs; helper.scrollBottom(); - }, function (error) { - $scope.isLogsLoading = false; - console.log(error); - $scope.errorMessage = "Unable to fetch logs for this instance"; - });*/ + }); + /*workzoneServices.getChefJobLogs($scope.selectedInstance.nodeId, $scope.selectedInstance.actionLogId, chefLogData.chefHistoryItem.timestampStarted, chefLogData.chefHistoryItem.timestampEnded).then(function (response) { + $scope.isLogsLoading = false; + var logData = { + logs: response.data, + fullLogs: true + }; + $scope.logListInitial = logData.logs; + helper.scrollBottom(); + }, function (error) { + $scope.isLogsLoading = false; + console.log(error); + $scope.errorMessage = "Unable to fetch logs for this instance"; + });*/ } /* when task is pending or running: ie. during Execute flow or if history is viewed immediately after Execute - only timestampStarted will be present. timestampEnded will be absent @@ -200,34 +200,34 @@ if(timestamp && timestampEnded) { urlParams = 'timestamp=' + timestamp + '×tampEnded=' + timestampEnded; } - var param = { - url = "/instances/" + instanceId + '/actionLogs/' + actionId + - '/logs?' + urlParams; + var param = { + url : "/instances/" + instanceId + '/actionLogs/' + actionId + + '/logs?' + urlParams } genSevs.promiseGet(param).then(function (response) { - $scope.isLogsLoading = false; - var logData = { - logs: response.data, - fullLogs: true - }; - $scope.logListInitial = logData.logs; - helper.scrollBottom(); - }; - /*workzoneServices.getChefJobLogs($scope.selectedInstance.nodeId, $scope.selectedInstance.actionLogId, chefLogData.chefHistoryItem.timestampStarted).then(function (response) { $scope.isLogsLoading = false; - helper.lastTimeStamp = helper.getlastTimeStamp(response.data) || chefLogData.chefHistoryItem.timestampStarted; - helper.logsPolling(); var logData = { logs: response.data, fullLogs: true }; $scope.logListInitial = logData.logs; helper.scrollBottom(); - }, function (error) { - $scope.isLogsLoading = false; - console.log(error); - $scope.errorMessage = "Unable to fetch logs for this instance"; - });*/ + }); + /*workzoneServices.getChefJobLogs($scope.selectedInstance.nodeId, $scope.selectedInstance.actionLogId, chefLogData.chefHistoryItem.timestampStarted).then(function (response) { + $scope.isLogsLoading = false; + helper.lastTimeStamp = helper.getlastTimeStamp(response.data) || chefLogData.chefHistoryItem.timestampStarted; + helper.logsPolling(); + var logData = { + logs: response.data, + fullLogs: true + }; + $scope.logListInitial = logData.logs; + helper.scrollBottom(); + }, function (error) { + $scope.isLogsLoading = false; + console.log(error); + $scope.errorMessage = "Unable to fetch logs for this instance"; + });*/ } }; init(); @@ -239,5 +239,5 @@ }); return chefLogData; } - ]); -})(angular); + ]); +})(angular); \ No newline at end of file From 0c1c7f0e7cdcd35e23c4df0e38d019e69f6ae658 Mon Sep 17 00:00:00 2001 From: Durgesh1988 Date: Wed, 21 Dec 2016 14:37:33 +0530 Subject: [PATCH 07/75] Resolved BOTs QA Issues --- .../aws-blueprint/aws-blueprint.js | 197 +++++++++--------- server/app/services/botsService.js | 4 +- 2 files changed, 100 insertions(+), 101 deletions(-) diff --git a/server/app/model/blueprint/blueprint-types/instance-blueprint/aws-blueprint/aws-blueprint.js b/server/app/model/blueprint/blueprint-types/instance-blueprint/aws-blueprint/aws-blueprint.js index d6747e94b..5cf1deb7b 100755 --- a/server/app/model/blueprint/blueprint-types/instance-blueprint/aws-blueprint/aws-blueprint.js +++ b/server/app/model/blueprint/blueprint-types/instance-blueprint/aws-blueprint/aws-blueprint.js @@ -607,7 +607,7 @@ AWSInstanceBlueprintSchema.methods.launch = function (launchParams, callback) { } else { - if (code == 0) { + if (code === 0) { instancesDao.updateInstanceBootstrapStatus(instance.id, 'success', function (err, updateData) { if (err) { logger.error("Unable to set instance bootstarp status. code 0", err); @@ -654,123 +654,122 @@ AWSInstanceBlueprintSchema.methods.launch = function (launchParams, callback) { } logger.debug("Domain name is updated successfully"); }); - instanceLog.endedOn = new Date().getTime(); - instanceLog.actionStatus = "success"; - instanceLog.logs = { - err: false, - log: "Instance Bootstrapped successfully", - timestamp: new Date().getTime() - }; - if (launchParams.auditTrailId !== null) { - var resultTaskExecution = { - actionStatus: "success", - status: "success", - endedOn: new Date().getTime() - } - auditTrailService.updateAuditTrail('BOTs', launchParams.auditTrailId, resultTaskExecution, function (err, auditTrail) { - if (err) { - logger.error("Failed to create or update bots Log: ", err); - } - }); + } + instanceLog.endedOn = new Date().getTime(); + instanceLog.actionStatus = "success"; + instanceLog.logs = { + err: false, + log: "Instance Bootstrapped successfully", + timestamp: new Date().getTime() + }; + if (launchParams.auditTrailId !== null) { + var resultTaskExecution = { + actionStatus: "success", + status: "success", + endedOn: new Date().getTime() } - instancesDao.updateActionLog(instance.id, actionLog._id, true, timestampEnded); - launchParams.infraManager.getNode(instance.chefNodeName, function (err, nodeData) { + auditTrailService.updateAuditTrail('BOTs', launchParams.auditTrailId, resultTaskExecution, function (err, auditTrail) { if (err) { - logger.error("Failed chef.getNode", err); - return; - } - instanceLog.platform = nodeData.automatic.platform; - instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { - if (err) { - logger.error("Failed to create or update instanceLog: ", err); - } - }); - var hardwareData = {}; - hardwareData.architecture = nodeData.automatic.kernel.machine; - hardwareData.platform = nodeData.automatic.platform; - hardwareData.platformVersion = nodeData.automatic.platform_version; - hardwareData.memory = { - total: 'unknown', - free: 'unknown' - }; - if (nodeData.automatic.memory) { - hardwareData.memory.total = nodeData.automatic.memory.total; - hardwareData.memory.free = nodeData.automatic.memory.free; + logger.error("Failed to create or update bots Log: ", err); } - hardwareData.os = instance.hardware.os; - instancesDao.setHardwareDetails(instance.id, hardwareData, function (err, updateData) { - if (err) { - logger.error("Unable to set instance hardware details code (setHardwareDetails)", err); - } else { - logger.debug("Instance hardware details set successessfully"); - } - }); - //Checking docker status and updating - var _docker = new Docker(); - _docker.checkDockerStatus(instance.id, - function (err, retCode) { - if (err) { - logger.error("Failed _docker.checkDockerStatus", err); - res.send(500); - return; - //res.end('200'); - - } - logger.debug('Docker Check Returned:' + retCode); - if (retCode == '0') { - instancesDao.updateInstanceDockerStatus(instance.id, "success", '', function (data) { - logger.debug('Instance Docker Status set to Success'); - }); - - } - }); - }); - - } else { - instancesDao.updateInstanceBootstrapStatus(instance.id, 'failed', function (err, updateData) { + } + instancesDao.updateActionLog(instance.id, actionLog._id, true, timestampEnded); + launchParams.infraManager.getNode(instance.chefNodeName, function (err, nodeData) { + if (err) { + logger.error("Failed chef.getNode", err); + return; + } + instanceLog.platform = nodeData.automatic.platform; + instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { if (err) { - logger.error("Unable to set instance bootstarp status code != 0", err); - } else { - logger.debug("Instance bootstrap status set to failed"); + logger.error("Failed to create or update instanceLog: ", err); } }); - instanceLog.endedOn = new Date().getTime(); - instanceLog.actionStatus = "failed"; - instanceLog.logs = { - err: false, - log: "Bootstrap Failed", - timestamp: new Date().getTime() + var hardwareData = {}; + hardwareData.architecture = nodeData.automatic.kernel.machine; + hardwareData.platform = nodeData.automatic.platform; + hardwareData.platformVersion = nodeData.automatic.platform_version; + hardwareData.memory = { + total: 'unknown', + free: 'unknown' }; - instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { + if (nodeData.automatic.memory) { + hardwareData.memory.total = nodeData.automatic.memory.total; + hardwareData.memory.free = nodeData.automatic.memory.free; + } + hardwareData.os = instance.hardware.os; + instancesDao.setHardwareDetails(instance.id, hardwareData, function (err, updateData) { if (err) { - logger.error("Failed to create or update instanceLog: ", err); + logger.error("Unable to set instance hardware details code (setHardwareDetails)", err); + } else { + logger.debug("Instance hardware details set successessfully"); } }); - if (launchParams.auditTrailId !== null) { - var resultTaskExecution = { - actionStatus: "failed", - status: "failed", - endedOn: new Date().getTime() - } - auditTrailService.updateAuditTrail('BOTs', launchParams.auditTrailId, resultTaskExecution, function (err, auditTrail) { + //Checking docker status and updating + var _docker = new Docker(); + _docker.checkDockerStatus(instance.id, + function (err, retCode) { if (err) { - logger.error("Failed to create or update bot Log: ", err); + logger.error("Failed _docker.checkDockerStatus", err); + res.send(500); + return; + //res.end('200'); + + } + logger.debug('Docker Check Returned:' + retCode); + if (retCode == '0') { + instancesDao.updateInstanceDockerStatus(instance.id, "success", '', function (data) { + logger.debug('Instance Docker Status set to Success'); + }); + } }); + + }); + + }else { + instancesDao.updateInstanceBootstrapStatus(instance.id, 'failed', function (err, updateData) { + if (err) { + logger.error("Unable to set instance bootstarp status code != 0", err); + } else { + logger.debug("Instance bootstrap status set to failed"); } - var timestampEnded = new Date().getTime(); - logsDao.insertLog({ - referenceId: logsReferenceIds, - err: false, - log: "Bootstrap Failed", - timestamp: timestampEnded + }); + instanceLog.endedOn = new Date().getTime(); + instanceLog.actionStatus = "failed"; + instanceLog.logs = { + err: false, + log: "Bootstrap Failed", + timestamp: new Date().getTime() + }; + instanceLogModel.createOrUpdate(actionLog._id, instance.id, instanceLog, function (err, logData) { + if (err) { + logger.error("Failed to create or update instanceLog: ", err); + } + }); + if (launchParams.auditTrailId !== null) { + var resultTaskExecution = { + actionStatus: "failed", + status: "failed", + endedOn: new Date().getTime() + } + auditTrailService.updateAuditTrail('BOTs', launchParams.auditTrailId, resultTaskExecution, function (err, auditTrail) { + if (err) { + logger.error("Failed to create or update bot Log: ", err); + } }); - instancesDao.updateActionLog(instance.id, actionLog._id, false, timestampEnded); } + var timestampEnded = new Date().getTime(); + logsDao.insertLog({ + referenceId: logsReferenceIds, + err: false, + log: "Bootstrap Failed", + timestamp: timestampEnded + }); + instancesDao.updateActionLog(instance.id, actionLog._id, false, timestampEnded); } } - }, function (stdOutData) { instanceLog.logs = { diff --git a/server/app/services/botsService.js b/server/app/services/botsService.js index bb69680ad..713850460 100644 --- a/server/app/services/botsService.js +++ b/server/app/services/botsService.js @@ -51,8 +51,8 @@ botsService.createOrUpdateBots = function createOrUpdateBots(botsDetail,linkedCa botLinkedCategory: linkedCategory, botLinkedSubCategory:linkedSubCategory, manualExecutionTime:botsDetail.manualExecutionTime, - version:botsDetail.version, - domainNameCheck:botsDetail.domainNameCheck, + version:botsDetail.version ? botsDetail.version : 1, + domainNameCheck:botsDetail.domainNameCheck ? botsDetail.domainNameCheck : false, createdOn: new Date().getTime() }; bots.getBotsById(botsDetail._id,function(err,data){ From 7186e3ef71d25d9d9b2e74062122cd13704d4bc1 Mon Sep 17 00:00:00 2001 From: Durgesh1988 Date: Wed, 21 Dec 2016 16:37:46 +0530 Subject: [PATCH 08/75] Resolved BOTs QA Issues --- .../sections/dashboard/bots/controller/libraryCtrl.js | 2 +- server/app/model/audit-trail/bot-audit-trail.js | 4 ++++ server/app/model/classes/tasks/tasks.js | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/client/cat3/src/partials/sections/dashboard/bots/controller/libraryCtrl.js b/client/cat3/src/partials/sections/dashboard/bots/controller/libraryCtrl.js index b27d6eb34..2b22f9500 100644 --- a/client/cat3/src/partials/sections/dashboard/bots/controller/libraryCtrl.js +++ b/client/cat3/src/partials/sections/dashboard/bots/controller/libraryCtrl.js @@ -455,7 +455,7 @@ $scope.taskHistoryJenkinsGridOptions.data='taskHistoryJenkinsData'; $scope.taskHistoryJenkinsGridOptions.columnDefs = [ { name:'Job Number',field:'auditTrailConfig.jenkinsBuildNumber',cellTemplate:'{{row.entity.auditTrailConfig.jenkinsBuildNumber}}', sort:{ direction: 'desc'}, cellTooltip: true}, - { name:'Job Output',cellTemplate:'',cellTooltip: true}, + { name:'Job Output',cellTemplate:'',cellTooltip: true}, { name:'Log Info',width: 90,cellTemplate:'',cellTooltip: true}, { name:'Status',field:'status',cellTemplate:'
{{row.entity.status.toUpperCase()}}
'}, { name:'Start Time',field:'startedOn',cellTemplate:'{{row.entity.startedOn | timestampToLocaleTime}}',cellTooltip: true}, diff --git a/server/app/model/audit-trail/bot-audit-trail.js b/server/app/model/audit-trail/bot-audit-trail.js index 215b90f61..1c0cf258c 100644 --- a/server/app/model/audit-trail/bot-audit-trail.js +++ b/server/app/model/audit-trail/bot-audit-trail.js @@ -54,6 +54,10 @@ var BotAuditTrailSchema = new BaseAuditTrail({ type: String, trim:true }, + jobResultURL:{ + type: [String], + trim:true + }, manualExecutionTime:{ type: Number, required: false diff --git a/server/app/model/classes/tasks/tasks.js b/server/app/model/classes/tasks/tasks.js index 03fb2d04a..6aa1e548c 100755 --- a/server/app/model/classes/tasks/tasks.js +++ b/server/app/model/classes/tasks/tasks.js @@ -376,7 +376,8 @@ taskSchema.methods.execute = function(userName, baseUrl, choiceParam, appData, b "endedOn":self.timestampEnded, "actionLogId":taskHistory.jenkinsServerId, "auditTrailConfig.jenkinsBuildNumber":taskHistory.buildNumber, - "auditTrailConfig.jenkinsJobName":taskHistory.jobName + "auditTrailConfig.jenkinsJobName":taskHistory.jobName, + "auditTrailConfig.jobResultURL":taskHistory.jobResultURL }; }else{ resultTaskExecution = { From ff69f9461e1090f79344e3f68baa2c8770d71db6 Mon Sep 17 00:00:00 2001 From: Divakar Konakalla Date: Wed, 21 Dec 2016 16:49:00 +0530 Subject: [PATCH 09/75] Resolved QA issues related to BOTS. --- .../bots/controller/audittrailCtrl.js | 1 + .../dashboard/bots/controller/chefLogCtrl.js | 6 +- .../dashboard/bots/controller/libraryCtrl.js | 59 ++++++++++--------- .../sections/dashboard/bots/view/botInfo.html | 30 ++++++++-- 4 files changed, 59 insertions(+), 37 deletions(-) diff --git a/client/cat3/src/partials/sections/dashboard/bots/controller/audittrailCtrl.js b/client/cat3/src/partials/sections/dashboard/bots/controller/audittrailCtrl.js index a2dad1382..f8aa58063 100644 --- a/client/cat3/src/partials/sections/dashboard/bots/controller/audittrailCtrl.js +++ b/client/cat3/src/partials/sections/dashboard/bots/controller/audittrailCtrl.js @@ -115,6 +115,7 @@ $scope.RefreshBotsAuditTrail = function() { $scope.botAuditTrailGridView(); + $scope.botAuditTrailSearch = ''; }; $scope.botAuditTrailGridView =function(){ diff --git a/client/cat3/src/partials/sections/dashboard/bots/controller/chefLogCtrl.js b/client/cat3/src/partials/sections/dashboard/bots/controller/chefLogCtrl.js index 2fbcaf590..e3b75f9a4 100644 --- a/client/cat3/src/partials/sections/dashboard/bots/controller/chefLogCtrl.js +++ b/client/cat3/src/partials/sections/dashboard/bots/controller/chefLogCtrl.js @@ -8,7 +8,7 @@ (function (angular) { "use strict"; angular.module('dashboard.bots') - .controller('chefLogCtrl', ['$q', '$scope', 'workzoneServices', '$timeout', 'orchestrationSetting', 'toastr','items', function ($q, $scope, workzoneServices, $timeout, orchestrationSetting, toastr,items) { + .controller('chefLogCtrl', ['$q', '$scope', 'workzoneServices', '$timeout', 'orchestrationSetting', 'toastr', function ($q, $scope, workzoneServices, $timeout, orchestrationSetting, toastr) { /*This controller can be invoked from either of two flows - Chef Log History Item Logs OR Chef Task Execute items object will contain only taskId and historyId. */ //var items = $scope.parentItemDetail; @@ -232,11 +232,11 @@ }; init(); // on task change event in the parent controller - $scope.$on('parentChangeCompTask', function (event, args) { + /*$scope.$on('parentChangeCompTask', function (event, args) { items = args; resetAll(); init(); - }); + });*/ return chefLogData; } ]); diff --git a/client/cat3/src/partials/sections/dashboard/bots/controller/libraryCtrl.js b/client/cat3/src/partials/sections/dashboard/bots/controller/libraryCtrl.js index b27d6eb34..7430e17fc 100644 --- a/client/cat3/src/partials/sections/dashboard/bots/controller/libraryCtrl.js +++ b/client/cat3/src/partials/sections/dashboard/bots/controller/libraryCtrl.js @@ -32,7 +32,7 @@ { name: 'BOT Name',displayName: 'BOT Name',field:'botName',cellTooltip: true}, { name: 'Category',field:'botCategory',cellTooltip: true}, { name: 'description',field:'botDesc',cellTooltip: true}, - { name: 'Org',field:'masterDetails.orgName',cellTooltip: true}, + { name: 'Organization',field:'masterDetails.orgName',cellTooltip: true}, { name: 'Total Runs',field:'executionCount'}, { name: 'BOT History',displayName: 'BOT History',cellTemplate:'NA'+ ''}, @@ -175,6 +175,7 @@ console.log('Modal Dismissed at ' + new Date()); }); }; + $scope.botSchedule = function(bot) { $modal.open({ templateUrl: 'src/partials/sections/dashboard/bots/view/botSchedule.html', @@ -192,6 +193,7 @@ console.log('Dismiss time is ' + new Date()); }); }; + $scope.deleteBot = function(bot) { var modalOptions = { closeButtonText: 'Cancel', @@ -285,44 +287,43 @@ $modalInstance.dismiss('cancel'); }; }]).controller('botScheduleCtrl',['$scope', '$rootScope', 'genericServices', 'workzoneServices', 'toastr', '$modalInstance', 'items', '$timeout', function ($scope, $rootScope, genSevs, workzoneServices, toastr, $modalInstance, items, $timeout) { + $scope.scheduleDeatils = items; $scope.botId = items.botId; $scope.defaultSelection = function() { $scope.repeatsType = 'Minutes';//default selection. $scope.schedulerStartOn=moment(new Date()).format('MM/DD/YYYY'); $scope.schedulerEndOn=moment(new Date()).format('MM/DD/YYYY'); }; - if(items.type !== 'new'){ - if(items.chefJenkScriptTaskObj !==undefined){ - if(items.chefJenkScriptTaskObj.cronStartOn && items.chefJenkScriptTaskObj.cronEndOn) { - var newStartOn = parseInt(items.chefJenkScriptTaskObj.cronStartOn); - var newDate = new Date(newStartOn).toLocaleDateString(); - var datearray = newDate.split("/"); - var newdate = datearray[1] + '/' + datearray[0] + '/' + datearray[2]; - $scope.schedulerStartOn = newdate; - var newEndOn = parseInt(items.chefJenkScriptTaskObj.cronEndOn); - var newEndData = new Date(newEndOn).toLocaleDateString(); - var datearrayNew = newEndData.split("/"); - var newdateEnd = datearrayNew[1] + '/' + datearrayNew[0] + '/' + datearrayNew[2]; - $scope.schedulerEndOn = newdateEnd; - } else { - $scope.schedulerStartOn = items.chefJenkScriptTaskObj.cronStart; - $scope.schedulerEndOn = items.chefJenkScriptTaskObj.cronEnd; - } - - $scope.repeatBy = items.chefJenkScriptTaskObj.repeatBy || items.chefJenkScriptTaskObj.cronRepeatEvery.toString(); - $scope.repeatsType = items.chefJenkScriptTaskObj.repeats || items.chefJenkScriptTaskObj.cronFrequency; - $scope.timeEventType = items.chefJenkScriptTaskObj.startTime; - $scope.timeEventMinute = items.chefJenkScriptTaskObj.startTimeMinute; - $scope.weekOfTheDay = items.chefJenkScriptTaskObj.dayOfWeek; - $scope.currentDate = items.chefJenkScriptTaskObj.startDate; - $scope.selectedDayOfTheMonth = items.chefJenkScriptTaskObj.selectedDayOfTheMonth; - $scope.selectedMonth = items.chefJenkScriptTaskObj.monthOfYear; + + if(items.botScheduler){ + if(items.botScheduler.cronStartOn && items.botScheduler.cronEndOn) { + var newStartOn = parseInt(items.botScheduler.cronStartOn); + var newDate = new Date(newStartOn).toLocaleDateString(); + var datearray = newDate.split("/"); + var newdate = datearray[1] + '/' + datearray[0] + '/' + datearray[2]; + $scope.schedulerStartOn = newdate; + var newEndOn = parseInt(items.botScheduler.cronEndOn); + var newEndData = new Date(newEndOn).toLocaleDateString(); + var datearrayNew = newEndData.split("/"); + var newdateEnd = datearrayNew[1] + '/' + datearrayNew[0] + '/' + datearrayNew[2]; + $scope.schedulerEndOn = newdateEnd; } else { - $scope.defaultSelection(); + $scope.schedulerStartOn = items.botScheduler.cronStartOn; + $scope.schedulerEndOn = items.botScheduler.cronEndOn; } + + $scope.repeatBy = items.botScheduler.repeatBy || items.botScheduler.cronRepeatEvery.toString(); + $scope.repeatsType = items.botScheduler.repeats || items.botScheduler.cronFrequency; + $scope.timeEventType = items.botScheduler.timeEventHour || (items.botScheduler.cronHour && items.botScheduler.cronHour !==null) ? items.botScheduler.cronHour.toString() : ''; + $scope.timeEventMinute = items.botScheduler.timeEventMinute || (items.botScheduler.cronMinute && items.botScheduler.cronMinute !==null) ? items.botScheduler.cronMinute.toString() : ''; + $scope.weekOfTheDay = items.botScheduler.weekOfTheDay || (items.botScheduler.cronWeekDay && items.botScheduler.cronWeekDay !==null) ?items.botScheduler.cronWeekDay.toString(): ''; + $scope.selectedDayOfTheMonth = items.botScheduler.selectedDayOfTheMonth || (items.botScheduler.cronDate && items.botScheduler.cronDate !==null) ?items.botScheduler.cronDate.toString() : ''; + $scope.selectedMonth = items.botScheduler.selectedMonth || (items.botScheduler.cronMonth && items.botScheduler.cronMonth !==null) ? items.botScheduler.cronMonth.toString() : ''; + /*$scope.currentDate = items.botScheduler.startDate;*/ } else { $scope.defaultSelection(); } + $scope.dateChange= function () { var startDate = Date.parse($scope.schedulerStartOn); @@ -374,6 +375,7 @@ genSevs.promisePut(param).then(function (response) { if(response){ toastr.success('BOTs Scheduler successfully updated'); + $rootScope.$emit('BOTS_LIBRARY_REFRESH'); $modalInstance.dismiss('cancel'); } }); @@ -479,6 +481,7 @@ $scope.isjenkinsTaskHistoryPageLoading = false; }else if(response){ $scope.taskHistoryJenkinsData = response; + console.log($scope.taskHistoryJenkinsData); $scope.isjenkinsTaskHistoryPageLoading = false; } },100); diff --git a/client/cat3/src/partials/sections/dashboard/bots/view/botInfo.html b/client/cat3/src/partials/sections/dashboard/bots/view/botInfo.html index 21cd4e783..e60f7e55c 100644 --- a/client/cat3/src/partials/sections/dashboard/bots/view/botInfo.html +++ b/client/cat3/src/partials/sections/dashboard/bots/view/botInfo.html @@ -71,11 +71,17 @@