From 190ecd93a4e66330eb95e8e5223757f527bb5c6e Mon Sep 17 00:00:00 2001 From: Durgesh1988 Date: Mon, 12 Sep 2016 10:50:31 +0530 Subject: [PATCH 1/6] Add Planned Cost at Org Lavel and Provider Lavel --- .../private/ajax/Settings/CreateOrg.html | 8 ++++ .../ajax/Settings/CreateProviders.html | 10 ++++ client/htmls/public/js/awsCapacity.js | 2 +- .../masters/cloudprovider/awsCloudProvider.js | 13 ++++- .../model/d4dmasters/d4dmastersmodelnew.js | 5 ++ server/app/model/tags/tags.js | 2 +- server/app/routes/v1.0/routes_d4dMasters.js | 4 ++ server/app/routes/v1.0/routes_provider.js | 48 ++++--------------- 8 files changed, 50 insertions(+), 42 deletions(-) diff --git a/client/htmls/private/ajax/Settings/CreateOrg.html b/client/htmls/private/ajax/Settings/CreateOrg.html index d7ece509d..cc371df58 100755 --- a/client/htmls/private/ajax/Settings/CreateOrg.html +++ b/client/htmls/private/ajax/Settings/CreateOrg.html @@ -34,6 +34,14 @@

Create Organization

+
+ + + + + + +
+
+ +
+
@@ -191,6 +198,31 @@

Create tag name to catalyst entity mapping
+ +
+
+ + + + + + + + + +
Catalyst Business GroupBusiness Group Tag Value
+
+
+
+ + +
+
+
+
@@ -314,6 +346,7 @@

Create tag name to catalyst entity mapping

+ @@ -380,6 +413,7 @@

Create tag name to catalyst entity mapping

+ @@ -446,6 +480,7 @@

Create tag name to catalyst entity mapping

+ @@ -606,6 +641,20 @@ }] }); } + if (!$.fn.dataTable.isDataTable('#mappingBgTable')) { + var $mappingbgDatatable = $('#mappingBgTable').DataTable({ + "pagingType": "full_numbers", + "bInfo": false, + "bLengthChange": false, + "paging": false, + "bFilter": false, + "aoColumns": [{ + "bSortable": false + }, { + "bSortable": false + }] + }); + } if (!$.fn.dataTable.isDataTable('#mappingprojectTable')) { var $mappingprojectDatatable = $('#mappingprojectTable').DataTable({ "pagingType": "full_numbers", @@ -805,18 +854,21 @@ function loadTagsTabData(tagsListData,providerId) { var $projecttagsList = $('#tagsProjectSelect'); var $envtagsList = $('#tagsEnvSelect'); + var $bgtagsList = $('#tagsBgSelect'); $projecttagsList.empty(); $envtagsList.empty(); + $bgtagsList.empty(); $tagsDatatable.clear().draw(); $projecttagsList.append($('').val("").html("Choose Project")); $envtagsList.append($('').val("").html("Choose Environment")); + $bgtagsList.append($('').val("").html("Choose Business Group")); for (var i = 0; i < tagsListData.length; i++) { var $tbody = $('#tagsTable tbody').empty(); //For Dropdown - $projecttagsList.append($('').val(tagsListData[i].name).html(tagsListData[i].name)); $envtagsList.append($('').val(tagsListData[i].name).html(tagsListData[i].name)); + $bgtagsList.append($('').val(tagsListData[i].name).html(tagsListData[i].name)); //For Table var $tr = $(''); @@ -899,8 +951,10 @@ //For tags tab..... var $projecttagsList = $('#tagsProjectSelect'); var $envtagsList = $('#tagsEnvSelect'); + var $bgtagsList = $('#tagsBgSelect'); var catalystEntityProjName = $('#projectnameLabelId').attr('catalystEntitytype'); var catalystEntityEnvName = $('#envnameLabelId').attr('catalystEntitytype'); + var catalystEntityBgName = $('#bgNameLabelId').attr('catalystEntitytype'); for(var i=0;iImporting Instances var tagValues = tagsListSelected[i].tagValues; var catalystEntityMapping = tagsListSelected[i].catalystEntityMapping; + if(objcatalystEntityType == catalystEntityBgName){ + $bgtagsList.val(objtagName); + } if(objcatalystEntityType == catalystEntityProjName){ $projecttagsList.val(objtagName); //For Mapping tab..... @@ -961,27 +1018,32 @@ $('.btntagsFormSave').on('click',function(){ var $projecttagsList = $('#tagsProjectSelect'); var $envtagsList = $('#tagsEnvSelect'); + var $bgtagsList = $('#tagsBgSelect'); var catalystEntityProjName = $('#projectnameLabelId').attr('catalystEntitytype'); var catalystEntityEnvName = $('#envnameLabelId').attr('catalystEntitytype'); + var catalystEntityBgName = $('#bgNameLabelId').attr('catalystEntitytype'); var tagsProjSelectedVal = $projecttagsList.val(); var tagsenvSelectedVal = $envtagsList.val(); + var tagsbgSelectedVal = $bgtagsList.val(); - if(tagsProjSelectedVal == tagsenvSelectedVal){ + if((tagsbgSelectedVal == tagsProjSelectedVal) && (tagsbgSelectedVal == tagsenvSelectedVal)){ bootbox.alert("Tag name cannot be same to create catalyst entity mapping"); return; } //Creating the data to Post for Save tags. var tagsData = [{ + "catalystEntityType": catalystEntityBgName, + "tagName": tagsbgSelectedVal + },{ "catalystEntityType": catalystEntityProjName, "tagName": tagsProjSelectedVal - }, - { + },{ "catalystEntityType": catalystEntityEnvName, "tagName": tagsenvSelectedVal - }]; + }]; $.ajax({ url: '/providers/'+urlproviderId+'/tag-mappings', method: 'POST', @@ -1001,8 +1063,30 @@ }); //Mapping tabs operation starts.... + getBgData(); getprojectData(); getenvironmentData(); + //For Business Group Mapping + function getBgData(){ + $.get('/d4dMasters/readmasterjsonnew/2', function(bgList) { + var orgId = urlorgName; + var bgListArr = []; + for (var i = 0; i < bgList.length; i++) { + if(orgId == bgList[i].orgname){ + bgListArr.push(bgList[i]); + } + }; + bgMappingList(bgListArr); + }).fail(function(jxhr) { + var msg = "Getting Business Group List Behaved Unexpectedly."; + if (jxhr.responseJSON && jxhr.responseJSON.message) { + msg = jxhr.responseJSON.message; + } else if (jxhr.responseText) { + msg = jxhr.responseText; + } + bootbox.alert(msg); + }); + } //For Project Mapping function getprojectData(){ $.get('/d4dMasters/readmasterjsonnew/4', function(projectist) { @@ -1091,6 +1175,47 @@ }); } + function bgMappingList(bgList){ + $mappingbgDatatable.clear().draw(); + + $.get('/providers/'+urlproviderId+'/tag-mappings/bgName', function(data) { + if(data){ + var $tbody = $('#mappingBgTable tbody').empty(); + for(var i = 0; i < bgList.length; i++){ + //For Table + var $tr = $(''); + + var $tdbgName = $('').append(bgList[i].productgroupname); + $tr.append($tdbgName); + + var $mappingbgSelectList= $(''); + $mappingbgSelectList.empty(); + $mappingbgSelectList.append($('').val('').html('-- None --')); + for(var j=0; j< data.tagValues.length; j++){ + if(data.tagValues[j] != ''){ + $mappingbgSelectList.append($('').val(data.tagValues[j]).html(data.tagValues[j])); + } + } + + var $tdbgTagName = $('').append($mappingbgSelectList); + $tr.append($tdbgTagName); + + + $tbody.append($tr); + $mappingbgDatatable.row.add($tr).draw(); + + for(var k = 0; k < data.catalystEntityMapping.length; k++){ + if(bgList[i].rowid == data.catalystEntityMapping[k].catalystEntityId){ + $mappingbgSelectList.val(data.catalystEntityMapping[k].tagValue); + } + } + } + } + }).fail(function(jxhr) { + + }); + } + $('.btnprojectMappingSave').on('click',function(){ var projectMappingObj = { "catalystEntityMapping": [] @@ -1386,6 +1511,7 @@ var envProjectMappingObject = {}; var catalystEntityProjName = $('#projectnameLabelId').attr('catalystEntitytype'); var catalystEntityEnvName = $('#envnameLabelId').attr('catalystEntitytype'); + var catalystEntitybgName = $('#bgNameLabelId').attr('catalystEntitytype'); for(var i=0;iImporting Instances if(objcatalystEntityType == catalystEntityEnvName){ envProjectMappingObject['environment'] = objtagName; } + if(objcatalystEntityType == catalystEntitybgName){ + envProjectMappingObject['bgName'] = objtagName; + } } if(key==='EC2'){ getUnassignedInstancesWithProjectAndEnv(envProjectMappingObject); @@ -1433,8 +1562,12 @@ {"data": "platformId","orderable" : true }, {"data": "os","orderable" : false }, {"data": "ip","orderable" : true, - "render": function(data){ - return data?data:''; + "render": function(data, type, full) { + if (data !== null) { + return data; + } else { + return full.privateIpAddress; + } } }, {"data": "","orderable" : true, @@ -1470,19 +1603,28 @@ {"data": "resourceDetails.dbName", "orderable" : true}, {"data": "resourceDetails.dbEngine","orderable" : true }, {"data": "resourceDetails.region","orderable" : false }, - {"data": "projectTag" ,"orderable" : false, + {"data": "" ,"orderable" : false, + "render": function(data, type, full) { + if(full.bgTag && full.bgTag !== null) { + return ''; + }else{ + return ''; + } + } + }, + {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(data !== null) { - return ''; + if(full.projectTag && full.projectTag !== null) { + return ''; }else{ return ''; } } }, - {"data": "environmentTag" ,"orderable" : false, + {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(data !== null) { - return ''; + if(full.environmentTag && full.environmentTag !== null) { + return ''; }else{ return ''; } @@ -1515,19 +1657,28 @@ {"data": "resourceDetails.bucketName", "orderable" : true}, {"data": "resourceDetails.bucketOwnerName" ,"orderable" : false }, {"data": "resourceDetails.bucketSize","orderable" : true }, - {"data": "projectTag" ,"orderable" : false, + {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(data !== null) { - return ''; + if(full.bgTag && full.bgTag !== null) { + return ''; + }else{ + return ''; + } + } + }, + {"data": "" ,"orderable" : false, + "render": function(data, type, full) { + if(full.projectTag && full.projectTag !== null) { + return ''; }else{ return ''; } } }, - {"data": "environmentTag" ,"orderable" : false, + {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(data !== null) { - return ''; + if(full.environmentTag && full.environmentTag !== null) { + return ''; }else{ return ''; } @@ -1560,15 +1711,28 @@ {"data": "platformId","orderable" : true }, {"data": "os","orderable" : false }, {"data": "ip","orderable" : true, - "render": function(data){ - if(data){ + "render": function(data, type, full) { + if (data !== null) { return data; - }else{ - return ''; + } else { + return full.privateIpAddress; } } }, {"data": "state","orderable" : true }, + {"data": "" ,"orderable" : false, + "render": function(data, type, full) { + if(full.bgTag !== null){ + var tagValue = full.bgTag; + return ''; + }else if(envProjectMappingObject.bgName && full.tags[envProjectMappingObject.bgName]) { + var tagValue = full.tags[envProjectMappingObject.bgName]; + return ''; + }else{ + return ''; + } + } + }, {"data": "" ,"orderable" : false, "render": function(data, type, full) { if(full.projectTag !== null){ diff --git a/client/htmls/public/awsCapacity.html b/client/htmls/public/awsCapacity.html index 9b94820b6..0701f76a4 100644 --- a/client/htmls/public/awsCapacity.html +++ b/client/htmls/public/awsCapacity.html @@ -169,6 +169,7 @@

0

+ diff --git a/client/htmls/public/js/awsCapacity.js b/client/htmls/public/js/awsCapacity.js index 0b7bb42e0..91c1ddaf9 100644 --- a/client/htmls/public/js/awsCapacity.js +++ b/client/htmls/public/js/awsCapacity.js @@ -303,7 +303,14 @@ $(document).ready(function() { } }, { "data": "ip", - "orderable": true + "orderable": true, + "render": function(data, type, full) { + if (data !== null) { + return data; + } else { + return full.privateIpAddress; + } + } }, { "data": "state", "orderable": true @@ -339,17 +346,28 @@ $(document).ready(function() { }, { "data": "ip", "orderable": true, - "render": function(data) { - if (data) { + "render": function(data, type, full) { + if (data !== null) { return data; } else { - return ''; + return full.privateIpAddress; } } }, { "data": "state", "orderable": true - }, { + }, + {"data": "" ,"orderable" : false, + "render": function(data, type, full) { + if(full.bgTag !== null){ + var tagValue = full.bgTag; + return ''; + }else{ + return ''; + } + } + }, + { "data": "", "orderable": false, "render": function(data, type, full) { diff --git a/server/app/cronjobs/provider-sync/AWSProviderSync.js b/server/app/cronjobs/provider-sync/AWSProviderSync.js index 66df9d849..bfb439bef 100644 --- a/server/app/cronjobs/provider-sync/AWSProviderSync.js +++ b/server/app/cronjobs/provider-sync/AWSProviderSync.js @@ -198,12 +198,15 @@ function tagMappingForInstances(instances,provider,next){ } var projectTag = null; var environmentTag = null; + var bgTag = null; if(tagDetails.length > 0) { for (var i = 0; i < tagDetails.length; i++) { if (('catalystEntityType' in tagDetails[i]) && tagDetails[i].catalystEntityType == 'project') { projectTag = tagDetails[i]; - } else if (('catalystEntityType' in tagDetails[i]) && tagDetails[i].catalystEntityType == 'environment') { + }else if (('catalystEntityType' in tagDetails[i]) && tagDetails[i].catalystEntityType == 'environment') { environmentTag = tagDetails[i]; + }else if (('catalystEntityType' in tagDetails[i]) && tagDetails[i].catalystEntityType == 'bgName') { + bgTag = tagDetails[i]; } } }else{ @@ -218,10 +221,20 @@ function tagMappingForInstances(instances,provider,next){ var catalystProjectName = null; var catalystEnvironmentId = null; var catalystEnvironmentName = null; + var catalystBgId = null; + var catalystBgName = null; var assignmentFound = false; if(instance.tags) { - if (projectTag && environmentTag && (instance.isDeleted === false) - && (projectTag.name in instance.tags) && (environmentTag.name in instance.tags)) { + if ((bgTag || projectTag || environmentTag) && (instance.isDeleted === false) + && ((bgTag.name in instance.tags) || (projectTag.name in instance.tags) || (environmentTag.name in instance.tags))) { + + for (var y = 0; y < bgTag.catalystEntityMapping.length; y++) { + if (bgTag.catalystEntityMapping[y].tagValue === instance.bgTag || bgTag.catalystEntityMapping[y].tagValue === instance.tags[bgTag.name]) { + catalystBgId = bgTag.catalystEntityMapping[y].catalystEntityId; + catalystBgName = bgTag.catalystEntityMapping[y].catalystEntityName; + break; + } + } for (var y = 0; y < projectTag.catalystEntityMapping.length; y++) { if (projectTag.catalystEntityMapping[y].tagValue === instance.projectTag || projectTag.catalystEntityMapping[y].tagValue === instance.tags[projectTag.name]) { catalystProjectId = projectTag.catalystEntityMapping[y].catalystEntityId; @@ -236,7 +249,7 @@ function tagMappingForInstances(instances,provider,next){ break; } } - if (catalystProjectId && catalystEnvironmentId) { + if (catalystBgId || catalystProjectId || catalystEnvironmentId) { assignmentFound = true; } if (assignmentFound === true) { @@ -249,6 +262,8 @@ function tagMappingForInstances(instances,provider,next){ var assignedInstanceObj = { orgId: instance.orgId, orgName: instance.orgName, + bgId: catalystBgId, + bgName: catalystBgName, projectId: catalystProjectId, projectName: catalystProjectName, environmentId: catalystEnvironmentId, diff --git a/server/app/model/classes/instance/instance.js b/server/app/model/classes/instance/instance.js index 528ad62c9..2aa178a72 100755 --- a/server/app/model/classes/instance/instance.js +++ b/server/app/model/classes/instance/instance.js @@ -2110,14 +2110,10 @@ var InstancesDao = function() { updateObj['instanceState'] = instance.state; updateObj['isDeleted'] = true; updateObj['tags'] = instance.tags; - updateObj['environmentTag'] = instance.environmentTag; - updateObj['projectTag'] = instance.projectTag; }else { updateObj['instanceState'] = instance.state; updateObj['isDeleted'] = false; updateObj['tags'] = instance.tags; - updateObj['environmentTag'] = instance.environmentTag; - updateObj['projectTag'] = instance.projectTag; } Instances.update({ "_id": ObjectId(instanceId) diff --git a/server/app/model/resources/base-resources.js b/server/app/model/resources/base-resources.js index 38bf5918a..4214c6044 100644 --- a/server/app/model/resources/base-resources.js +++ b/server/app/model/resources/base-resources.js @@ -49,6 +49,12 @@ var AWSResourcesSchema = function AWSResources() { type:String, default:Date.now }, + bgTag: { + type: String, + required: false, + trim: true, + default: null + }, projectTag: { type: String, required: false, diff --git a/server/app/model/unassigned-instances/unassigned-instances.js b/server/app/model/unassigned-instances/unassigned-instances.js index 829a02d83..442b43836 100644 --- a/server/app/model/unassigned-instances/unassigned-instances.js +++ b/server/app/model/unassigned-instances/unassigned-instances.js @@ -38,6 +38,12 @@ var UnassignedInstancesSchema = new Schema({ }, providerType: String, providerData: Schema.Types.Mixed, + bgTag: { + type: String, + required: false, + trim: true, + default: null + }, projectTag: { type: String, required: false, @@ -195,12 +201,14 @@ UnassignedInstancesSchema.statics.updateInstanceStatus = function updateInstance updateObj['state'] = instance.state; updateObj['isDeleted'] = true; updateObj['tags'] = instance.tags; + updateObj['bgTag'] = instance.bgTag; updateObj['environmentTag'] = instance.environmentTag; updateObj['projectTag'] = instance.projectTag; }else{ updateObj['state'] = instance.state; updateObj['isDeleted'] = false; updateObj['tags'] = instance.tags; + updateObj['bgTag'] = instance.bgTag; updateObj['environmentTag'] = instance.environmentTag; updateObj['projectTag'] = instance.projectTag; } diff --git a/server/app/model/unmanaged-instance/unmanaged-instance.js b/server/app/model/unmanaged-instance/unmanaged-instance.js index f97887ff3..bc27904d1 100644 --- a/server/app/model/unmanaged-instance/unmanaged-instance.js +++ b/server/app/model/unmanaged-instance/unmanaged-instance.js @@ -16,6 +16,8 @@ var UnmanagedInstanceSchema = new Schema({ trim: true }, orgName: String, + bgId: String, + bgName: String, projectId: String, projectName: String, environmentId: String, @@ -278,14 +280,10 @@ UnmanagedInstanceSchema.statics.updateInstanceStatus = function updateInstanceSt updateObj['state'] = instance.state; updateObj['isDeleted'] = true; updateObj['tags'] = instance.tags; - updateObj['environmentTag'] = instance.environmentTag; - updateObj['projectTag'] = instance.projectTag; }else{ updateObj['state'] = instance.state; updateObj['isDeleted'] = false; updateObj['tags'] = instance.tags; - updateObj['environmentTag'] = instance.environmentTag; - updateObj['projectTag'] = instance.projectTag; } UnmanagedInstance.update({ "_id": ObjectId(instanceId) diff --git a/server/app/services/providerService.js b/server/app/services/providerService.js index a3acecf3c..6dcab6b74 100644 --- a/server/app/services/providerService.js +++ b/server/app/services/providerService.js @@ -307,7 +307,7 @@ providerService.getTagMappingsByProviderId providerService.getTagByCatalystEntityTypeAndProvider = function getTagByCatalystEntityTypeAndProvider(providerId, catalystEntityType, callback) { // @TODO entity types to be moved to config - if((catalystEntityType != 'project') && (catalystEntityType != 'environment')) { + if((catalystEntityType != 'project') && (catalystEntityType != 'environment') && (catalystEntityType != 'bgName')) { var err = new Error('Malformed Request'); err.status = 400; return callback(err); @@ -387,7 +387,7 @@ providerService.addMultipleTagMappings = function addMultipleTagMappings(provide // @TODO entity types to be moved to config if ((tagMapping.catalystEntityType != 'project') - && (tagMapping.catalystEntityType != 'environment')) { + && (tagMapping.catalystEntityType != 'environment') && (tagMapping.catalystEntityType != 'bgName')) { var err = new Error('Malformed Request'); err.status = 400; return callback(err); diff --git a/server/app/services/resourceService.js b/server/app/services/resourceService.js index baeb50bea..f67d62a0e 100644 --- a/server/app/services/resourceService.js +++ b/server/app/services/resourceService.js @@ -866,6 +866,7 @@ function getEC2InstancesInfo(provider,orgName,callback) { vpc:instance.VpcId }, tags:tagInfo, + bgTag:tagInfo.Name, environmentTag:tagInfo.Environment, projectTag:tagInfo.Owner } From 40679ff0eeb3ef2c82206f91db1260f9c64cfdf2 Mon Sep 17 00:00:00 2001 From: Durgesh1988 Date: Tue, 13 Sep 2016 13:56:41 +0530 Subject: [PATCH 3/6] Add BU Level Tag Mapping in Provider Sync --- .../private/ajax/Settings/providerSync.html | 143 +++++++++++--- client/htmls/public/awsCapacity.html | 3 +- client/htmls/public/js/awsCapacity.js | 175 ++++++++++-------- .../AWSRDSS3ProviderSync.js | 109 ++++++----- .../cronjobs/provider-sync/AWSProviderSync.js | 10 +- server/app/model/resources/base-resources.js | 18 -- .../unassigned-instances.js | 24 --- .../app/routes/v1.0/routes_providercommon.js | 1 - server/app/services/resourceService.js | 3 - 9 files changed, 286 insertions(+), 200 deletions(-) diff --git a/client/htmls/private/ajax/Settings/providerSync.html b/client/htmls/private/ajax/Settings/providerSync.html index 44083e620..0e68b30ad 100644 --- a/client/htmls/private/ajax/Settings/providerSync.html +++ b/client/htmls/private/ajax/Settings/providerSync.html @@ -295,6 +295,8 @@

Create tag name to catalyst entity mapping

+ + @@ -318,6 +320,8 @@

Create tag name to catalyst entity mapping

+ + @@ -391,6 +395,8 @@

Create tag name to catalyst entity mapping

+ + @@ -458,7 +464,8 @@

Create tag name to catalyst entity mapping

- + + @@ -716,6 +723,7 @@ {"data": "resourceDetails.bucketName", "orderable" : true}, {"data": "resourceDetails.bucketOwnerName" ,"orderable" : false }, {"data": "masterDetails.orgName","orderable" : false }, + {"data": "masterDetails.bgName","orderable" : false }, {"data": "masterDetails.projectName" ,"orderable" : false }, {"data": "masterDetails.envName" ,"orderable" : false }, {"data": "resourceDetails.bucketSize","orderable" : true }, @@ -747,8 +755,22 @@ } }, {"data": "instanceState","orderable" : true }, - {"data": "projectName" ,"orderable" : false }, - {"data": "","orderable" : true , + {"data": "" ,"orderable" : true , + "render":function(data, type, full, meta) { + return full.orgName?full.orgName:'-'; + } + }, + {"data": "" ,"orderable" : true , + "render":function(data, type, full, meta) { + return full.bgName?full.bgName:'-'; + } + }, + {"data": "" ,"orderable" : true, + "render":function(data, type, full, meta) { + return full.projectName?full.projectName:'-'; + } + }, + {"data": "","orderable" : true, "render":function(data, type, full, meta) { return full.environmentName?full.environmentName:'-'; } @@ -808,6 +830,8 @@ {"data": "resourceDetails.dbName", "orderable" : true}, {"data": "resourceDetails.dbEngine","orderable" : true }, {"data": "resourceDetails.dbInstanceStatus","orderable" : true }, + {"data": "masterDetails.orgName","orderable" : true }, + {"data": "masterDetails.bgName","orderable" : true }, {"data": "masterDetails.projectName","orderable" : true }, {"data": "masterDetails.envName","orderable" : true }, {"data": "resourceDetails.region","orderable" : false }, @@ -1053,6 +1077,7 @@ $('#spantagsformSaveId').fadeIn(); $('#spantagsformSaveId').html("Saved successfully"); $('#spantagsformSaveId').delay(2000).fadeOut(); + getBgData(); getprojectData(); getenvironmentData(); }, @@ -1215,6 +1240,51 @@ }); } + $('.btnbgMappingSave').on('click',function(){ + var bgMappingObj = { + "catalystEntityMapping": [] + }; + var counter =0; + var bgMappingSequence = []; + $('#mappingBgTable tbody tr').each(function() { + counter++; + $tr = $(this); + var bgmappingcatalystEntityId = $tr.attr('id'); + var mappingbgSelectTagName = $tr.find('.mappingbgSelectId :selected').val(); + var mappingbgName = $tr.find('.mappingbgName').text(); + + var objbgMapping = {}; + objbgMapping["catalystEntityId"] = bgmappingcatalystEntityId; + objbgMapping["catalystEntityName"] = mappingbgName; + objbgMapping["tagValue"] = mappingbgSelectTagName; + + bgMappingObj.catalystEntityMapping.push(objbgMapping); + if(counter == $('#mappingBgTable tbody tr').length){ + $.ajax({ + url: '/providers/'+urlproviderId+'/tag-mappings/bgName', + data: JSON.stringify(bgMappingObj), + type: 'PATCH', + contentType: "application/json", + success: function(data) { + $('#spanbgMappingSaveId').fadeIn(); + $('#spanbgMappingSaveId').html('Saved successfully'); + $('#spanbgMappingSaveId').delay(2000).fadeOut(); + }, + error: function(jqxhr) { + var msg = " "; + if (jxhr.responseJSON && jxhr.responseJSON.message) { + msg = jxhr.responseJSON.message; + } else if (jxhr.responseText) { + msg = jxhr.responseText; + } + $('#spanbgMappingSaveId').fadeIn(); + $('#spanbgMappingSaveId').html(msg); + $('#spanbgMappingSaveId').delay(2000).fadeOut(); + } + }); + } + }); + }); $('.btnprojectMappingSave').on('click',function(){ var projectMappingObj = { @@ -1576,8 +1646,26 @@ } }, {"data": "state","orderable" : true }, - {"data": "projectName" ,"orderable" : false }, - {"data": "environmentName","orderable" : true }, + {"data": "" ,"orderable" : true , + "render":function(data, type, full, meta) { + return full.orgName?full.orgName:'-'; + } + }, + {"data": "" ,"orderable" : true , + "render":function(data, type, full, meta) { + return full.bgName?full.bgName:'-'; + } + }, + {"data": "" ,"orderable" : true, + "render":function(data, type, full, meta) { + return full.projectName?full.projectName:'-'; + } + }, + {"data": "","orderable" : true, + "render":function(data, type, full, meta) { + return full.environmentName?full.environmentName:'-'; + } + }, {"data": "","orderable" : false, "render":function(data, type, full, meta) { if (full.state === 'running') { @@ -1605,8 +1693,9 @@ {"data": "resourceDetails.region","orderable" : false }, {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(full.bgTag && full.bgTag !== null) { - return ''; + if(full.tags && envProjectMappingObject.bgName && full.tags[envProjectMappingObject.bgName]) { + var tagValue = full.tags[envProjectMappingObject.bgName]; + return ''; }else{ return ''; } @@ -1614,8 +1703,9 @@ }, {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(full.projectTag && full.projectTag !== null) { - return ''; + if(full.tags && envProjectMappingObject.project && full.tags[envProjectMappingObject.project]) { + var tagValue = full.tags[envProjectMappingObject.project]; + return ''; }else{ return ''; } @@ -1623,8 +1713,9 @@ }, {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(full.environmentTag && full.environmentTag !== null) { - return ''; + if(full.tags && envProjectMappingObject.environment && full.tags[envProjectMappingObject.environment]) { + var tagValue = full.tags[envProjectMappingObject.environment]; + return ''; }else{ return ''; } @@ -1659,8 +1750,9 @@ {"data": "resourceDetails.bucketSize","orderable" : true }, {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(full.bgTag && full.bgTag !== null) { - return ''; + if(full.tags && envProjectMappingObject.bgName && full.tags[envProjectMappingObject.bgName]) { + var tagValue = full.tags[envProjectMappingObject.bgName]; + return ''; }else{ return ''; } @@ -1668,8 +1760,9 @@ }, {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(full.projectTag && full.projectTag !== null) { - return ''; + if(full.tags && envProjectMappingObject.project && full.tags[envProjectMappingObject.project]) { + var tagValue = full.tags[envProjectMappingObject.project]; + return ''; }else{ return ''; } @@ -1677,8 +1770,9 @@ }, {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(full.environmentTag && full.environmentTag !== null) { - return ''; + if(full.tags && envProjectMappingObject.environment && full.tags[envProjectMappingObject.environment]) { + var tagValue = full.tags[envProjectMappingObject.environment]; + return ''; }else{ return ''; } @@ -1722,10 +1816,7 @@ {"data": "state","orderable" : true }, {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(full.bgTag !== null){ - var tagValue = full.bgTag; - return ''; - }else if(envProjectMappingObject.bgName && full.tags[envProjectMappingObject.bgName]) { + if(full.tags && envProjectMappingObject.bgName && full.tags[envProjectMappingObject.bgName]) { var tagValue = full.tags[envProjectMappingObject.bgName]; return ''; }else{ @@ -1735,10 +1826,7 @@ }, {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(full.projectTag !== null){ - var tagValue = full.projectTag; - return ''; - }else if(envProjectMappingObject.project && full.tags[envProjectMappingObject.project]) { + if(full.tags && envProjectMappingObject.project && full.tags[envProjectMappingObject.project]) { var tagValue = full.tags[envProjectMappingObject.project]; return ''; }else{ @@ -1748,10 +1836,7 @@ }, {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(full.environmentTag !== null){ - var tagValue = full.environmentTag; - return ''; - }else if(envProjectMappingObject.environment && full.tags[envProjectMappingObject.environment]) { + if(full.tags && envProjectMappingObject.environment && full.tags[envProjectMappingObject.environment]) { var tagValue = full.tags[envProjectMappingObject.environment]; return ''; }else{ diff --git a/client/htmls/public/awsCapacity.html b/client/htmls/public/awsCapacity.html index 0701f76a4..95cc81804 100644 --- a/client/htmls/public/awsCapacity.html +++ b/client/htmls/public/awsCapacity.html @@ -106,7 +106,7 @@

0

- + @@ -124,6 +124,7 @@

0

+ diff --git a/client/htmls/public/js/awsCapacity.js b/client/htmls/public/js/awsCapacity.js index 91c1ddaf9..8a57e93aa 100644 --- a/client/htmls/public/js/awsCapacity.js +++ b/client/htmls/public/js/awsCapacity.js @@ -233,31 +233,27 @@ $(document).ready(function() { "columns": [{ "data": "platformId", "orderable": true - }, { - "data": "orgName", - "orderable": false, - "render": function(data) { - return data ? data : ''; - } - }, { - "data": "bgName", - "orderable": false, - "render": function(data) { - return data ? data : ''; - } - }, { - "data": "projectName", - "orderable": false, - "render": function(data) { - return data ? data : ''; + }, {"data": "" ,"orderable" : true , + "render":function(data, type, full, meta) { + return full.orgName?full.orgName:'-'; } - }, { - "data": "environmentName", - "orderable": true, - "render": function(data) { - return data ? data : ''; + }, + {"data": "" ,"orderable" : true , + "render":function(data, type, full, meta) { + return full.bgName?full.bgName:'-'; + } + }, + {"data": "" ,"orderable" : true, + "render":function(data, type, full, meta) { + return full.projectName?full.projectName:'-'; + } + }, + {"data": "","orderable" : true, + "render":function(data, type, full, meta) { + return full.environmentName?full.environmentName:'-'; + } } - }, { + , { "data": "instanceIP", "orderable": true }, { @@ -283,25 +279,27 @@ $(document).ready(function() { "columns": [{ "data": "platformId", "orderable": true - }, { - "data": "orgName", - "orderable": false, - "render": function(data) { - return data ? data : ''; + }, {"data": "" ,"orderable" : true , + "render":function(data, type, full, meta) { + return full.orgName?full.orgName:'-'; } - }, { - "data": "projectName", - "orderable": false, - "render": function(data) { - return data ? data : ''; - } - }, { - "data": "environmentName", - "orderable": true, - "render": function(data) { - return data ? data : ''; - } - }, { + }, + {"data": "" ,"orderable" : true , + "render":function(data, type, full, meta) { + return full.bgName?full.bgName:'-'; + } + }, + {"data": "" ,"orderable" : true, + "render":function(data, type, full, meta) { + return full.projectName?full.projectName:'-'; + } + }, + {"data": "","orderable" : true, + "render":function(data, type, full, meta) { + return full.environmentName?full.environmentName:'-'; + } + }, + { "data": "ip", "orderable": true, "render": function(data, type, full) { @@ -320,17 +318,48 @@ $(document).ready(function() { function getUnassignedInstancesWithProjectAndEnv() { var urlManagedNoProvider, urlManagedProvider; + var envProjectMappingObject = {}; if (orgProviderId) { urlManagedNoProvider = "../tracked-instances?category=unassigned&filterBy=orgId:" + orgId + ' ' + "providerId:" + orgProviderId; + $.get('/providers/'+ orgProviderId +'/tag-mappings', function(tagsListSelected) { + if (tagsListSelected) { + for (var i = 0; i < tagsListSelected.length; i++) { + var objcatalystEntityType = tagsListSelected[i].catalystEntityType; + var objtagName = tagsListSelected[i].tagName; + if (objcatalystEntityType == 'project') { + envProjectMappingObject['project'] = objtagName; + } + if (objcatalystEntityType == 'environment') { + envProjectMappingObject['environment'] = objtagName; + } + if (objcatalystEntityType == 'bgName') { + envProjectMappingObject['bgName'] = objtagName; + } + } + getUnassignedInstancesWithTagMapping(envProjectMappingObject,urlManagedNoProvider); + } + }).fail(function(jxhr) { + var msg = "Tag mappings not loaded as behaved unexpectedly."; + if (jxhr.responseJSON && jxhr.responseJSON.message) { + msg = jxhr.responseJSON.message; + } else if (jxhr.responseText) { + msg = jxhr.responseText; + } + bootbox.alert(msg); + }); } else { urlManagedProvider = "../tracked-instances?category=unassigned&filterBy=orgId:" + orgId; + getUnassignedInstancesWithTagMapping(envProjectMappingObject,urlManagedProvider); } + } + + function getUnassignedInstancesWithTagMapping(envProjectMappingObject,url){ $('.footer').removeClass('hidden'); $('#instanceUnassignedTable').DataTable({ "processing": true, "serverSide": true, "destroy": true, - "ajax": (urlManagedNoProvider) ? urlManagedNoProvider : urlManagedProvider, + "ajax": url, "createdRow": function(row, data) { $(row).attr({ "instanceId": data._id, @@ -359,45 +388,43 @@ $(document).ready(function() { }, {"data": "" ,"orderable" : false, "render": function(data, type, full) { - if(full.bgTag !== null){ - var tagValue = full.bgTag; - return ''; + if(full.tags && envProjectMappingObject.bgName && full.tags[envProjectMappingObject.bgName]) { + var tagValue = full.tags[envProjectMappingObject.bgName]; + return ''; }else{ - return ''; + return ''; } } }, - { - "data": "", - "orderable": false, - "render": function(data, type, full) { - if (full.projectTag !== null) { - var tagValue = full.projectTag; - return ''; - } else { - return ''; + {"data": "" ,"orderable" : false, + "render": function(data, type, full) { + if(full.tags && envProjectMappingObject.project && full.tags[envProjectMappingObject.project]) { + var tagValue = full.tags[envProjectMappingObject.project]; + return ''; + }else{ + return ''; + } } - } - }, { - "data": "", - "orderable": false, - "render": function(data, type, full) { - if (full.environmentTag !== null) { - var tagValue = full.environmentTag; - return ''; - } else { - return ''; + }, + {"data": "" ,"orderable" : false, + "render": function(data, type, full) { + if(full.tags && envProjectMappingObject.environment && full.tags[envProjectMappingObject.environment]) { + var tagValue = full.tags[envProjectMappingObject.environment]; + return ''; + }else{ + return ''; + } } - } - }, { - "data": "platformId", - "orderable": false, - "render": function(data, type, full, meta) { - if (full.platformId) { - return ''; + }, + { + "data": "platformId", + "orderable": false, + "render": function(data, type, full, meta) { + if (full.platformId) { + return ''; + } } - } - }] + }] }); } diff --git a/server/app/cronjobs/provider-rds-s3-sync/AWSRDSS3ProviderSync.js b/server/app/cronjobs/provider-rds-s3-sync/AWSRDSS3ProviderSync.js index d42cef64b..684e446bf 100644 --- a/server/app/cronjobs/provider-rds-s3-sync/AWSRDSS3ProviderSync.js +++ b/server/app/cronjobs/provider-rds-s3-sync/AWSRDSS3ProviderSync.js @@ -285,12 +285,15 @@ function tagMappingForResources(resources,provider,next){ } var projectTag = null; var environmentTag = null; + var bgTag = null; if(tagDetails.length > 0) { for (var i = 0; i < tagDetails.length; i++) { if (('catalystEntityType' in tagDetails[i]) && tagDetails[i].catalystEntityType == 'project') { projectTag = tagDetails[i]; - } else if (('catalystEntityType' in tagDetails[i]) && tagDetails[i].catalystEntityType == 'environment') { + }else if (('catalystEntityType' in tagDetails[i]) && tagDetails[i].catalystEntityType == 'environment') { environmentTag = tagDetails[i]; + }else if (('catalystEntityType' in tagDetails[i]) && tagDetails[i].catalystEntityType == 'bgName') { + bgTag = tagDetails[i]; } } }else{ @@ -299,56 +302,74 @@ function tagMappingForResources(resources,provider,next){ var count = 0; if(resources.length > 0) { for (var j = 0; j < resources.length; j++) { - var catalystProjectId = null; - var catalystProjectName = null; - var catalystEnvironmentId = null; - var catalystEnvironmentName = null; - var assignmentFound = false; - if (projectTag && environmentTag && (resources[j].isDeleted === false) - && (resources[j].projectTag) && (resources[j].environmentTag)) { - for (var y = 0; y < projectTag.catalystEntityMapping.length; y++) { - if (projectTag.catalystEntityMapping[y].tagValue == resources[j].projectTag) { - catalystProjectId = projectTag.catalystEntityMapping[y].catalystEntityId; - catalystProjectName = projectTag.catalystEntityMapping[y].catalystEntityName; - break; + if (resources[j].tags) { + var catalystProjectId = null; + var catalystProjectName = null; + var catalystEnvironmentId = null; + var catalystEnvironmentName = null; + var catalystBgtId = null; + var catalystBgName = null; + var assignmentFound = false; + if ((bgTag || projectTag || environmentTag) && (resources[j].isDeleted === false) + && ((bgTag.name in resources[j].tags) || (projectTag.name in resources[j].tags) || (environmentTag.name in resources[j].tags))) { + for (var y = 0; y < bgTag.catalystEntityMapping.length; y++) { + if (bgTag.catalystEntityMapping[y].tagValue == resources[j].tags[bgTag.name]) { + catalystBgtId = bgTag.catalystEntityMapping[y].catalystEntityId; + catalystBgName = bgTag.catalystEntityMapping[y].catalystEntityName; + break; + } } - } - for (var y = 0; y < environmentTag.catalystEntityMapping.length; y++) { - if (environmentTag.catalystEntityMapping[y].tagValue == resources[j].environmentTag) { - catalystEnvironmentId = environmentTag.catalystEntityMapping[y].catalystEntityId; - catalystEnvironmentName = environmentTag.catalystEntityMapping[y].catalystEntityName; - break; + for (var y = 0; y < projectTag.catalystEntityMapping.length; y++) { + if (projectTag.catalystEntityMapping[y].tagValue == resources[j].tags[projectTag.name]) { + catalystProjectId = projectTag.catalystEntityMapping[y].catalystEntityId; + catalystProjectName = projectTag.catalystEntityMapping[y].catalystEntityName; + break; + } } - } - if (catalystProjectId && catalystEnvironmentId) { - assignmentFound = true; - } - if(assignmentFound === true){ - count++; - var masterDetails={ - orgId:resources[j].masterDetails.orgId, - orgName:resources[j].masterDetails.orgName, - projectId:catalystProjectId, - projectName:catalystProjectName, - envId:catalystEnvironmentId, - envName:catalystEnvironmentName + for (var y = 0; y < environmentTag.catalystEntityMapping.length; y++) { + if (environmentTag.catalystEntityMapping[y].tagValue == resources[j].tags[environmentTag.name]) { + catalystEnvironmentId = environmentTag.catalystEntityMapping[y].catalystEntityId; + catalystEnvironmentName = environmentTag.catalystEntityMapping[y].catalystEntityName; + break; + } } - resourceModel.updateResourcesForAssigned(resources[j]._id,masterDetails,function(err,data){ - if(err){ - logger.error(err); - return; - }else{ - masterDetails={}; + if (catalystProjectId || catalystEnvironmentId || catalystBgtId) { + assignmentFound = true; + } + if (assignmentFound === true) { + count++; + var masterDetails = { + orgId: resources[j].masterDetails.orgId, + orgName: resources[j].masterDetails.orgName, + bgId: catalystBgtId, + bgName: catalystBgName, + projectId: catalystProjectId, + projectName: catalystProjectName, + envId: catalystEnvironmentId, + envName: catalystEnvironmentName } - }) - }else{ + resourceModel.updateResourcesForAssigned(resources[j]._id, masterDetails, function (err, data) { + if (err) { + logger.error(err); + return; + } else { + masterDetails = {}; + } + }) + } else { + count++; + } + } else { count++; } - } else{ + if (count === resources.length) { + next(null, resources); + } + }else{ count++; - } - if(count === resources.length){ - next(null,resources); + if (count === resources.length) { + next(null, resources); + } } } }else{ diff --git a/server/app/cronjobs/provider-sync/AWSProviderSync.js b/server/app/cronjobs/provider-sync/AWSProviderSync.js index bfb439bef..0b99bd056 100644 --- a/server/app/cronjobs/provider-sync/AWSProviderSync.js +++ b/server/app/cronjobs/provider-sync/AWSProviderSync.js @@ -229,21 +229,21 @@ function tagMappingForInstances(instances,provider,next){ && ((bgTag.name in instance.tags) || (projectTag.name in instance.tags) || (environmentTag.name in instance.tags))) { for (var y = 0; y < bgTag.catalystEntityMapping.length; y++) { - if (bgTag.catalystEntityMapping[y].tagValue === instance.bgTag || bgTag.catalystEntityMapping[y].tagValue === instance.tags[bgTag.name]) { + if (bgTag.catalystEntityMapping[y].tagValue === instance.tags[bgTag.name]) { catalystBgId = bgTag.catalystEntityMapping[y].catalystEntityId; catalystBgName = bgTag.catalystEntityMapping[y].catalystEntityName; break; } } for (var y = 0; y < projectTag.catalystEntityMapping.length; y++) { - if (projectTag.catalystEntityMapping[y].tagValue === instance.projectTag || projectTag.catalystEntityMapping[y].tagValue === instance.tags[projectTag.name]) { + if ( projectTag.catalystEntityMapping[y].tagValue === instance.tags[projectTag.name]) { catalystProjectId = projectTag.catalystEntityMapping[y].catalystEntityId; catalystProjectName = projectTag.catalystEntityMapping[y].catalystEntityName; break; } } for (var y = 0; y < environmentTag.catalystEntityMapping.length; y++) { - if (environmentTag.catalystEntityMapping[y].tagValue === instance.environmentTag || environmentTag.catalystEntityMapping[y].tagValue === instance.tags[environmentTag.name]) { + if (environmentTag.catalystEntityMapping[y].tagValue === instance.tags[environmentTag.name]) { catalystEnvironmentId = environmentTag.catalystEntityMapping[y].catalystEntityId; catalystEnvironmentName = environmentTag.catalystEntityMapping[y].catalystEntityName; break; @@ -276,9 +276,7 @@ function tagMappingForInstances(instances,provider,next){ os: instance.os, state: instance.state, network: instance.network, - tags: instance.tags, - environmentTag: instance.environmentTag, - projectTag: instance.projectTag + tags: instance.tags } assignedInstanceList.push(assignedInstanceObj); assignedInstanceObj = {}; diff --git a/server/app/model/resources/base-resources.js b/server/app/model/resources/base-resources.js index 4214c6044..e548cb176 100644 --- a/server/app/model/resources/base-resources.js +++ b/server/app/model/resources/base-resources.js @@ -49,24 +49,6 @@ var AWSResourcesSchema = function AWSResources() { type:String, default:Date.now }, - bgTag: { - type: String, - required: false, - trim: true, - default: null - }, - projectTag: { - type: String, - required: false, - trim: true, - default: null - }, - environmentTag: { - type: String, - required: false, - trim: true, - default: null - }, tags:Schema.Types.Mixed, usage:Schema.Types.Mixed, cost:Schema.Types.Mixed, diff --git a/server/app/model/unassigned-instances/unassigned-instances.js b/server/app/model/unassigned-instances/unassigned-instances.js index 442b43836..cc0627411 100644 --- a/server/app/model/unassigned-instances/unassigned-instances.js +++ b/server/app/model/unassigned-instances/unassigned-instances.js @@ -38,24 +38,6 @@ var UnassignedInstancesSchema = new Schema({ }, providerType: String, providerData: Schema.Types.Mixed, - bgTag: { - type: String, - required: false, - trim: true, - default: null - }, - projectTag: { - type: String, - required: false, - trim: true, - default: null - }, - environmentTag: { - type: String, - required: false, - trim: true, - default: null - }, platformId: String, ip: { type: String, @@ -201,16 +183,10 @@ UnassignedInstancesSchema.statics.updateInstanceStatus = function updateInstance updateObj['state'] = instance.state; updateObj['isDeleted'] = true; updateObj['tags'] = instance.tags; - updateObj['bgTag'] = instance.bgTag; - updateObj['environmentTag'] = instance.environmentTag; - updateObj['projectTag'] = instance.projectTag; }else{ updateObj['state'] = instance.state; updateObj['isDeleted'] = false; updateObj['tags'] = instance.tags; - updateObj['bgTag'] = instance.bgTag; - updateObj['environmentTag'] = instance.environmentTag; - updateObj['projectTag'] = instance.projectTag; } UnassignedInstances.update({ "_id": ObjectId(instanceId) diff --git a/server/app/routes/v1.0/routes_providercommon.js b/server/app/routes/v1.0/routes_providercommon.js index a719e85a5..489ff7d5b 100644 --- a/server/app/routes/v1.0/routes_providercommon.js +++ b/server/app/routes/v1.0/routes_providercommon.js @@ -1679,7 +1679,6 @@ module.exports.setRoutes = function(app, sessionVerificationFunc) { function updateTagMapping(req, res, next) { async.waterfall( [ - function(next) { providerService.checkIfProviderExists(req.params.providerId, next); }, diff --git a/server/app/services/resourceService.js b/server/app/services/resourceService.js index f67d62a0e..ebd66ba9f 100644 --- a/server/app/services/resourceService.js +++ b/server/app/services/resourceService.js @@ -866,9 +866,6 @@ function getEC2InstancesInfo(provider,orgName,callback) { vpc:instance.VpcId }, tags:tagInfo, - bgTag:tagInfo.Name, - environmentTag:tagInfo.Environment, - projectTag:tagInfo.Owner } awsInstanceList.push(instanceObj); instanceObj = {}; From 6b3ebe901c3047c1ed84e0f65373c022af8fb9c0 Mon Sep 17 00:00:00 2001 From: Durgesh1988 Date: Tue, 13 Sep 2016 15:16:30 +0530 Subject: [PATCH 4/6] Add BU Level Tag Mapping in Provider Sync --- .../app/routes/v1.0/routes_organizations.js | 127 +++++++++--------- 1 file changed, 60 insertions(+), 67 deletions(-) diff --git a/server/app/routes/v1.0/routes_organizations.js b/server/app/routes/v1.0/routes_organizations.js index 15d40c729..5a356614e 100755 --- a/server/app/routes/v1.0/routes_organizations.js +++ b/server/app/routes/v1.0/routes_organizations.js @@ -1446,73 +1446,6 @@ module.exports.setRoutes = function(app, sessionVerification) { }); }; - - - 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; - jsonData['projectId'] = req.params.projectId; - jsonData['envId'] = req.params.envId; - 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'){ - jsonData['providerType'] = 'aws'; - }else{ - jsonData['providerType'] = req.params.provider; - } - 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; - } - 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); - } - }, - 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 { - res.status(401).send("User not part of team to see project"); - return; - } - } else { - res.status(500).send("Internal Server Error"); - return; - } - }); - }); - - - - - - 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) { @@ -2460,6 +2393,66 @@ module.exports.setRoutes = function(app, sessionVerification) { }); }); + 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; + jsonData['projectId'] = req.params.projectId; + jsonData['envId'] = req.params.envId; + 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'){ + jsonData['providerType'] = 'aws'; + }else{ + jsonData['providerType'] = req.params.provider; + } + 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; + } + 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); + } + }, + 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 { + res.status(401).send("User not part of team to see project"); + return; + } + } else { + res.status(500).send("Internal Server Error"); + return; + } + }); + }); + // 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) { From 2a59c3f393edb16407d144bdba6b042e22dae028 Mon Sep 17 00:00:00 2001 From: Durgesh1988 Date: Tue, 13 Sep 2016 15:16:51 +0530 Subject: [PATCH 5/6] Add BU Level Tag Mapping in Provider Sync --- .../private/ajax/Settings/providerSync.html | 80 +++++++++++++++++-- 1 file changed, 72 insertions(+), 8 deletions(-) diff --git a/client/htmls/private/ajax/Settings/providerSync.html b/client/htmls/private/ajax/Settings/providerSync.html index 8aa6819cb..7fe13d5d3 100644 --- a/client/htmls/private/ajax/Settings/providerSync.html +++ b/client/htmls/private/ajax/Settings/providerSync.html @@ -722,10 +722,42 @@ "columns": [ {"data": "resourceDetails.bucketName", "orderable" : true}, {"data": "resourceDetails.bucketOwnerName" ,"orderable" : false }, - {"data": "masterDetails.orgName","orderable" : false }, - {"data": "masterDetails.bgName","orderable" : false }, - {"data": "masterDetails.projectName" ,"orderable" : false }, - {"data": "masterDetails.envName" ,"orderable" : false }, + {"data": "masterDetails.orgName","orderable" : false, + "render": function (data) { + if(data !== null){ + return data; + }else{ + return '-'; + } + } + }, + {"data": "masterDetails.bgName","orderable" : false, + "render": function (data) { + if(data !== null){ + return data; + }else{ + return '-'; + } + } + }, + {"data": "masterDetails.projectName" ,"orderable" : false, + "render": function (data) { + if(data !== null){ + return data; + }else{ + return '-'; + } + } + }, + {"data": "masterDetails.envName" ,"orderable" : false, + "render": function (data) { + if(data !== null){ + return data; + }else{ + return '-'; + } + } + }, {"data": "resourceDetails.bucketSize","orderable" : true }, {"data": "resourceDetails.bucketCreatedOn","orderable" : true, "render": function (data) { @@ -830,10 +862,42 @@ {"data": "resourceDetails.dbName", "orderable" : true}, {"data": "resourceDetails.dbEngine","orderable" : true }, {"data": "resourceDetails.dbInstanceStatus","orderable" : true }, - {"data": "masterDetails.orgName","orderable" : true }, - {"data": "masterDetails.bgName","orderable" : true }, - {"data": "masterDetails.projectName","orderable" : true }, - {"data": "masterDetails.envName","orderable" : true }, + {"data": "masterDetails.orgName","orderable" : true, + "render": function (data) { + if(data !== null){ + return data; + }else{ + return '-'; + } + } + }, + {"data": "masterDetails.bgName","orderable" : true , + "render": function (data) { + if(data !== null){ + return data; + }else{ + return '-'; + } + } + }, + {"data": "masterDetails.projectName","orderable" :true , + "render": function (data) { + if(data !== null){ + return data; + }else{ + return '-'; + } + } + }, + {"data": "masterDetails.envName","orderable" : true , + "render": function (data) { + if(data !== null){ + return data; + }else{ + return '-'; + } + } + }, {"data": "resourceDetails.region","orderable" : false }, {"data": "resourceDetails.dbInstanceClass","orderable" : false }, {"data": "resourceDetails.multiAZ","orderable" : false, From 4bba1a9bd0a9adbf2ca32875492e2e88288051cf Mon Sep 17 00:00:00 2001 From: Durgesh1988 Date: Tue, 13 Sep 2016 16:27:09 +0530 Subject: [PATCH 6/6] Add BU Level Tag Mapping in Provider Sync --- .../private/ajax/Settings/providerSync.html | 21 ++++++++++----- client/htmls/public/Dashboard.html | 2 ++ client/htmls/public/js/awsCapacity.js | 14 +++++----- client/htmls/public/js/dashboard.js | 26 +++++++++++++------ .../AWSRDSS3ProviderSync.js | 9 ++++--- .../cronjobs/provider-sync/AWSProviderSync.js | 10 ++++--- 6 files changed, 54 insertions(+), 28 deletions(-) diff --git a/client/htmls/private/ajax/Settings/providerSync.html b/client/htmls/private/ajax/Settings/providerSync.html index 7fe13d5d3..ed94fd566 100644 --- a/client/htmls/private/ajax/Settings/providerSync.html +++ b/client/htmls/private/ajax/Settings/providerSync.html @@ -1749,7 +1749,7 @@ "destroy":true, "ajax": '/resources?filterBy=providerId:'+ urlproviderId +'+resourceType:RDS+category:unassigned', "createdRow": function( row, data ) { - $( row ).attr({"resourceId" : data._id,"resourceType":data.resourceType, "projectTagsMapName" : envProjectMappingObject.project, "envTagsMapName" : envProjectMappingObject.environment}) + $( row ).attr({"resourceId" : data._id,"resourceType":data.resourceType,"bgTagsMapName" : envProjectMappingObject.bgName, "projectTagsMapName" : envProjectMappingObject.project, "envTagsMapName" : envProjectMappingObject.environment}) }, "columns": [ {"data": "resourceDetails.dbName", "orderable" : true}, @@ -1806,7 +1806,7 @@ "destroy":true, "ajax": '/resources?filterBy=providerId:'+ urlproviderId +'+resourceType:S3+category:unassigned', "createdRow": function( row, data ) { - $( row ).attr({"resourceId" : data._id,"resourceType":data.resourceType, "projectTagsMapName" : envProjectMappingObject.project, "envTagsMapName" : envProjectMappingObject.environment}) + $( row ).attr({"resourceId" : data._id,"resourceType":data.resourceType,"bgTagsMapName" : envProjectMappingObject.bgName, "projectTagsMapName" : envProjectMappingObject.project, "envTagsMapName" : envProjectMappingObject.environment}) }, "columns": [ {"data": "resourceDetails.bucketName", "orderable" : true}, @@ -1863,7 +1863,7 @@ "destroy":true, "ajax": '/providers/' + urlproviderId + '/unassigned-instances', "createdRow": function( row, data ) { - $( row ).attr({"instanceId" : data._id, "projectTagsMapName" : envProjectMappingObject.project, "envTagsMapName" : envProjectMappingObject.environment}) + $( row ).attr({"instanceId" : data._id,"bgTagsMapName" : envProjectMappingObject.bgName, "projectTagsMapName" : envProjectMappingObject.project, "envTagsMapName" : envProjectMappingObject.environment}) }, "columns": [ {"data": "platformId","orderable" : true }, @@ -1932,12 +1932,15 @@ var instanceId = $(this).attr("instanceId"); var projectTagsMapName = $(this).attr("projectTagsMapName"); var envTagsMapName = $(this).attr("envTagsMapName"); + var bgTagsMapName = $(this).attr("bgTagsMapName"); var projectTagName = $(this).find('.projectTagName').val(); var envTagName = $(this).find('.envTagName').val(); + var bgTagName = $(this).find('.bgTagName').val(); updateUniqueInstanceTagsObj["id"] = instanceId; updateUniqueInstanceTagsObj["tags"] = {}; updateUniqueInstanceTagsObj["tags"][projectTagsMapName] = projectTagName; updateUniqueInstanceTagsObj["tags"][envTagsMapName] = envTagName; + updateUniqueInstanceTagsObj["tags"][bgTagsMapName] = bgTagName; updateInstanceTagsArr.push(updateUniqueInstanceTagsObj); }); updateInstanceTagsObj["instances"] = updateInstanceTagsArr; @@ -1976,13 +1979,15 @@ var resourceType = $(this).attr("resourceType"); var projectTagsMapName = $(this).attr("projectTagsMapName"); var envTagsMapName = $(this).attr("envTagsMapName"); + var bgTagsMapName = $(this).attr("bgTagsMapName"); var projectTagName = $(this).find('.projectTagName').val(); var envTagName = $(this).find('.envTagName').val(); - updateUniqueBucketTagsObj["id"] = resourceId; - updateUniqueBucketTagsObj["resourceType"] = resourceType; + var bgTagName = $(this).find('.bgTagName').val(); + updateUniqueBucketTagsObj["id"] = instanceId; updateUniqueBucketTagsObj["tags"] = {}; updateUniqueBucketTagsObj["tags"][projectTagsMapName] = projectTagName; updateUniqueBucketTagsObj["tags"][envTagsMapName] = envTagName; + updateUniqueBucketTagsObj["tags"][bgTagsMapName] = bgTagName; updateBucketTagsArr.push(updateUniqueBucketTagsObj); }); updateBucketTagsObj["resources"] = updateBucketTagsArr; @@ -2019,13 +2024,15 @@ var resourceType = $(this).attr("resourceType"); var projectTagsMapName = $(this).attr("projectTagsMapName"); var envTagsMapName = $(this).attr("envTagsMapName"); + var bgTagsMapName = $(this).attr("bgTagsMapName"); var projectTagName = $(this).find('.projectTagName').val(); var envTagName = $(this).find('.envTagName').val(); - updateUniqueDBTagsObj["id"] = resourceId; - updateUniqueDBTagsObj["resourceType"] = resourceType; + var bgTagName = $(this).find('.bgTagName').val(); + updateUniqueDBTagsObj["id"] = instanceId; updateUniqueDBTagsObj["tags"] = {}; updateUniqueDBTagsObj["tags"][projectTagsMapName] = projectTagName; updateUniqueDBTagsObj["tags"][envTagsMapName] = envTagName; + updateUniqueDBTagsObj["tags"][bgTagsMapName] = bgTagName; updateDBTagsArr.push(updateUniqueDBTagsObj); }); updateDBTagsObj["resources"] = updateDBTagsArr; diff --git a/client/htmls/public/Dashboard.html b/client/htmls/public/Dashboard.html index a0443f230..5e3d4fecf 100644 --- a/client/htmls/public/Dashboard.html +++ b/client/htmls/public/Dashboard.html @@ -229,6 +229,7 @@

+ @@ -262,6 +263,7 @@

+ diff --git a/client/htmls/public/js/awsCapacity.js b/client/htmls/public/js/awsCapacity.js index 8a57e93aa..9f38a0174 100644 --- a/client/htmls/public/js/awsCapacity.js +++ b/client/htmls/public/js/awsCapacity.js @@ -431,7 +431,7 @@ $(document).ready(function() { $('#unassignedSyncBtn').on('click', function(e) { var updateInstanceTagsObj = {}; var updateInstanceTagsArr = []; - var providerId, projectTagsMapName, envTagsMapName; + var providerId='', projectTagsMapName='', envTagsMapName='',bgTagsMapName=''; var $checkBox_checked = $('#instanceUnassignedTable').find('tbody tr').filter(':has(:checkbox:checked)'); if ($checkBox_checked.length > 0) { $('#instanceUnassignedTable').find('tbody tr').filter(':has(:checkbox:checked)').each(function() { @@ -440,9 +440,9 @@ $(document).ready(function() { var updateUniqueInstanceTagsObj = {}; providerId = $(this).attr("urlproviderId"); var instanceId = $(this).attr("instanceId"); - var envProjectMappingObject = {}; var projectTagName = $(this).find('.projectTagName').val(); var envTagName = $(this).find('.envTagName').val(); + var bgTagName = $(this).find('.bgTagName').val(); $.get('/providers/' + providerId + '/tag-mappings', function(tagsListSelected) { if (tagsListSelected) { for (var i = 0; i < tagsListSelected.length; i++) { @@ -450,18 +450,20 @@ $(document).ready(function() { var objtagName = tagsListSelected[i].tagName; //Creating an object to map with unassigned instances(To get data for project and environment in every row) if (objcatalystEntityType == 'project') { - envProjectMappingObject['project'] = objtagName; + projectTagsMapName = objtagName; } if (objcatalystEntityType == 'environment') { - envProjectMappingObject['environment'] = objtagName; + envTagsMapName = objtagName; + } + if (objcatalystEntityType == 'bgName') { + bgTagsMapName = objtagName; } - projectTagsMapName = envProjectMappingObject.project; - envTagsMapName = envProjectMappingObject.environment; } updateUniqueInstanceTagsObj["id"] = instanceId; updateUniqueInstanceTagsObj["tags"] = {}; updateUniqueInstanceTagsObj["tags"][projectTagsMapName] = projectTagName; updateUniqueInstanceTagsObj["tags"][envTagsMapName] = envTagName; + updateUniqueInstanceTagsObj["tags"][bgTagsMapName] = bgTagName; updateInstanceTagsArr.push(updateUniqueInstanceTagsObj); updateInstanceTagsObj["instances"] = updateInstanceTagsArr; $.ajax({ diff --git a/client/htmls/public/js/dashboard.js b/client/htmls/public/js/dashboard.js index 3ca135fe1..0c53d2c9d 100644 --- a/client/htmls/public/js/dashboard.js +++ b/client/htmls/public/js/dashboard.js @@ -229,22 +229,27 @@ $(document).ready(function () { {"data": "platformId", "orderable": true}, {"data": "orgName", "orderable": false, "render": function (data) { - return data ? data : ''; + return data ? data : '-'; + } + }, + {"data": "bgName", "orderable": false, + "render": function (data) { + return data ? data : '-'; } }, {"data": "projectName", "orderable": false, "render": function (data) { - return data ? data : ''; + return data ? data : '-'; } }, {"data": "environmentName", "orderable": true, "render": function (data) { - return data ? data : ''; + return data ? data : '-'; } }, {"data": "hardware.os", "orderable": false, "render": function (data) { - return data ? data : ''; + return data ? data : '-'; } }, {"data": "instanceIP", "orderable": true}, @@ -329,22 +334,27 @@ $(document).ready(function () { {"data": "platformId", "orderable": true}, {"data": "orgName", "orderable": false, "render": function (data) { - return data ? data : ''; + return data ? data : '-'; + } + }, + {"data": "bgName", "orderable": false, + "render": function (data) { + return data ? data : '-'; } }, {"data": "projectName", "orderable": false, "render": function (data) { - return data ? data : ''; + return data ? data : '-'; } }, {"data": "environmentName", "orderable": true, "render": function (data) { - return data ? data : ''; + return data ? data : '-'; } }, {"data": "os", "orderable": false, "render": function (data) { - return data ? data : ''; + return data ? data : '-'; } }, {"data": "ip", "orderable": true, diff --git a/server/app/cronjobs/provider-rds-s3-sync/AWSRDSS3ProviderSync.js b/server/app/cronjobs/provider-rds-s3-sync/AWSRDSS3ProviderSync.js index 684e446bf..30efbed80 100644 --- a/server/app/cronjobs/provider-rds-s3-sync/AWSRDSS3ProviderSync.js +++ b/server/app/cronjobs/provider-rds-s3-sync/AWSRDSS3ProviderSync.js @@ -313,21 +313,24 @@ function tagMappingForResources(resources,provider,next){ if ((bgTag || projectTag || environmentTag) && (resources[j].isDeleted === false) && ((bgTag.name in resources[j].tags) || (projectTag.name in resources[j].tags) || (environmentTag.name in resources[j].tags))) { for (var y = 0; y < bgTag.catalystEntityMapping.length; y++) { - if (bgTag.catalystEntityMapping[y].tagValue == resources[j].tags[bgTag.name]) { + if (bgTag.catalystEntityMapping[y].tagValue !== '' && resources[j].tags[bgTag.name] !== '' && + bgTag.catalystEntityMapping[y].tagValue === resources[j].tags[bgTag.name]) { catalystBgtId = bgTag.catalystEntityMapping[y].catalystEntityId; catalystBgName = bgTag.catalystEntityMapping[y].catalystEntityName; break; } } for (var y = 0; y < projectTag.catalystEntityMapping.length; y++) { - if (projectTag.catalystEntityMapping[y].tagValue == resources[j].tags[projectTag.name]) { + if (projectTag.catalystEntityMapping[y].tagValue !== '' && resources[j].tags[projectTag.name] !== '' && + projectTag.catalystEntityMapping[y].tagValue === resources[j].tags[projectTag.name]) { catalystProjectId = projectTag.catalystEntityMapping[y].catalystEntityId; catalystProjectName = projectTag.catalystEntityMapping[y].catalystEntityName; break; } } for (var y = 0; y < environmentTag.catalystEntityMapping.length; y++) { - if (environmentTag.catalystEntityMapping[y].tagValue == resources[j].tags[environmentTag.name]) { + if (environmentTag.catalystEntityMapping[y].tagValue !== '' && resources[j].tags[environmentTag.name] !== '' && + environmentTag.catalystEntityMapping[y].tagValue === resources[j].tags[environmentTag.name]) { catalystEnvironmentId = environmentTag.catalystEntityMapping[y].catalystEntityId; catalystEnvironmentName = environmentTag.catalystEntityMapping[y].catalystEntityName; break; diff --git a/server/app/cronjobs/provider-sync/AWSProviderSync.js b/server/app/cronjobs/provider-sync/AWSProviderSync.js index 3b376192a..062c046a9 100644 --- a/server/app/cronjobs/provider-sync/AWSProviderSync.js +++ b/server/app/cronjobs/provider-sync/AWSProviderSync.js @@ -227,23 +227,25 @@ function tagMappingForInstances(instances,provider,next){ if(instance.tags) { if ((bgTag || projectTag || environmentTag) && (instance.isDeleted === false) && ((bgTag.name in instance.tags) || (projectTag.name in instance.tags) || (environmentTag.name in instance.tags))) { - for (var y = 0; y < bgTag.catalystEntityMapping.length; y++) { - if (bgTag.catalystEntityMapping[y].tagValue === instance.tags[bgTag.name]) { + if (bgTag.catalystEntityMapping[y].tagValue !== '' && instance.tags[bgTag.name] !== '' + && bgTag.catalystEntityMapping[y].tagValue === instance.tags[bgTag.name]) { catalystBgId = bgTag.catalystEntityMapping[y].catalystEntityId; catalystBgName = bgTag.catalystEntityMapping[y].catalystEntityName; break; } } for (var y = 0; y < projectTag.catalystEntityMapping.length; y++) { - if ( projectTag.catalystEntityMapping[y].tagValue === instance.tags[projectTag.name]) { + if (projectTag.catalystEntityMapping[y].tagValue !== '' && instance.tags[projectTag.name] !== '' && + projectTag.catalystEntityMapping[y].tagValue === instance.tags[projectTag.name]) { catalystProjectId = projectTag.catalystEntityMapping[y].catalystEntityId; catalystProjectName = projectTag.catalystEntityMapping[y].catalystEntityName; break; } } for (var y = 0; y < environmentTag.catalystEntityMapping.length; y++) { - if (environmentTag.catalystEntityMapping[y].tagValue === instance.tags[environmentTag.name]) { + if (environmentTag.catalystEntityMapping[y].tagValue !== '' && instance.tags[environmentTag.name] !== '' && + environmentTag.catalystEntityMapping[y].tagValue === instance.tags[environmentTag.name]) { catalystEnvironmentId = environmentTag.catalystEntityMapping[y].catalystEntityId; catalystEnvironmentName = environmentTag.catalystEntityMapping[y].catalystEntityName; break;
OS IP Address StatusBg Tag Value Project Tag Value Env. Tag Value ActionsInstance Type RegionBg Tag Value Project Tag Value Env. Tag Value ActionsBucket Name Bucket Owner Size(MB)Bg Tag Value Project Tag Value Env. Tag Value Actions
OS IP Address StatusBg Tag Value Project Tag Value Env. Tag Value ActionIP Address Region StatusOrgBg Project Environment ActionsIP Address Region StatusOrgBg Project Environment ActionsInstance Type StatusOrgBg Project Environment Region
Bucket Name Bucket OwnerOrg NameOrgBg Project Environment Size(MB)
Instance Id OrgBUBg Project Env Instance IP
Instance Id OrgBg Project Env Instance IP
InstanceId OrgBg Project Env OS
InstanceId OrgBg Project Env OS