This is an automated email from the ASF dual-hosted git repository.

ni3galave pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new cd9c2fd  RANGER-2359: Show zone association with tag based service.
cd9c2fd is described below

commit cd9c2fd6bc013a2e5c2d66cf6ad7843c97a513cb
Author: Nitin Galave <[email protected]>
AuthorDate: Wed Mar 13 19:12:05 2019 +0530

    RANGER-2359: Show zone association with tag based service.
---
 .../src/main/webapp/scripts/modules/XALinks.js     | 17 +++--
 .../scripts/views/policies/RangerPolicyCreate.js   |  4 +-
 .../scripts/views/policies/RangerPolicyForm.js     |  3 +-
 .../views/policies/RangerPolicyTableLayout.js      | 24 ++++---
 .../scripts/views/policymanager/ServiceLayout.js   | 74 ++++++++++++++++------
 5 files changed, 80 insertions(+), 42 deletions(-)

diff --git a/security-admin/src/main/webapp/scripts/modules/XALinks.js 
b/security-admin/src/main/webapp/scripts/modules/XALinks.js
index 7885b72..ab0fe7a 100755
--- a/security-admin/src/main/webapp/scripts/modules/XALinks.js
+++ b/security-admin/src/main/webapp/scripts/modules/XALinks.js
@@ -51,17 +51,20 @@ define(function(require) {
                                title: 'h.repositoryManager'
                        },
                        ServiceManager : function(options){
-                               var textVal = !_.isEmpty(options) ? 'Service 
Manager : ' + options + ' zone' : 'Service Manager';
+                               var textVal = 'h.serviceManager';
                                return {
                                        href : '#!/policymanager/resource',
-                                       text : textVal,
-                                       title : textVal,
+                                       text :  !_.isEmpty(options) ? 'Service 
Manager : ' + options + ' zone' : textVal,
+                                       title : !_.isEmpty(options) ? 'Service 
Manager : ' + options + ' zone' : textVal,
                                }
                        },
-                       TagBasedServiceManager :{
-                               href : '#!/policymanager/tag', 
-                               text : 'h.serviceManager',
-                               title: 'h.serviceManager'
+                       TagBasedServiceManager : function(options){
+                               var textVal = 'h.serviceManager';
+                               return{
+                                       href : '#!/policymanager/tag',
+                                       text : !_.isEmpty(options) ? 'Service 
Manager : ' + options + ' zone' : textVal,
+                                       title: !_.isEmpty(options) ? 'Service 
Manager : ' + options + ' zone' : textVal,
+                               }
                        },
                        Users : { 
                                href : '#!/users/usertab',
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
index e369aa8..8f23e84 100644
--- 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
+++ 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
@@ -72,7 +72,7 @@ define(function(require){
        breadCrumbs :function(){
                var name  = this.rangerServiceDefModel.get('name') != 
XAEnums.ServiceType.SERVICE_TAG.label ? 'ServiceManager' : 
'TagBasedServiceManager';
                if(this.model.isNew()){
-                if(App.vZone && App.vZone.vZoneName && 
this.rangerServiceDefModel.get('name') != 
XAEnums.ServiceType.SERVICE_TAG.label){
+                if(App.vZone && App.vZone.vZoneName){
                    return [XALinks.get(name, App.vZone.vZoneName), 
                         XALinks.get('ManagePolicies',{model : 
this.rangerService}), XALinks.get('PolicyCreate')];
                 }else{
@@ -80,7 +80,7 @@ define(function(require){
                         XALinks.get('PolicyCreate')];
                 }
             } else {
-                if(App.vZone && App.vZone.vZoneName && 
this.rangerServiceDefModel.get('name') != 
XAEnums.ServiceType.SERVICE_TAG.label){
+                if(App.vZone && App.vZone.vZoneName){
                     return [XALinks.get(name, App.vZone.vZoneName),
                         XALinks.get('ManagePolicies',{model : 
this.rangerService}), XALinks.get('PolicyEdit')];
                 }else{
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
index 22cc7d1..931babf 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
@@ -495,8 +495,7 @@ define(function(require){
                 policyLabel= this.model.get('policyLabels').split(',');
                 this.model.set('policyLabels', policyLabel);
             }
-            if(!_.isUndefined(App.vZone) && App.vZone.vZoneName
-                    && this.rangerService.get('type') !== 
XAEnums.ServiceType.SERVICE_TAG.label){
+            if(!_.isUndefined(App.vZone) && App.vZone.vZoneName){
                 this.model.set('zoneName', App.vZone.vZoneName);
             }
                        this.model.set('resources',resources);
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
index 7369a3b..c18cfaa 100644
--- 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
+++ 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
@@ -60,17 +60,22 @@ define(function(require){
                        };
                },
         
-       breadCrumbs : function(){
+        breadCrumbs : function(){
             if(this.rangerService.get('type') == 
XAEnums.ServiceType.SERVICE_TAG.label){
-                return 
[XALinks.get('TagBasedServiceManager'),XALinks.get('ManagePolicies',{model : 
this.rangerService})];
-            }
-            if(App.vZone && App.vZone.vZoneName){
-                return [XALinks.get('ServiceManager', App.vZone.vZoneName),
-                    XALinks.get('ManagePolicies',{model : 
this.rangerService})];
+                if(App.vZone && App.vZone.vZoneName){
+                    return [XALinks.get('TagBasedServiceManager', 
App.vZone.vZoneName),XALinks.get('ManagePolicies',{model : 
this.rangerService})];
+                }else{
+                    return 
[XALinks.get('TagBasedServiceManager'),XALinks.get('ManagePolicies',{model : 
this.rangerService})];
+                }
             }else{
-                return 
[XALinks.get('ServiceManager'),XALinks.get('ManagePolicies',{model : 
this.rangerService})];
+                if(App.vZone && App.vZone.vZoneName){
+                    return [XALinks.get('ServiceManager', App.vZone.vZoneName),
+                        XALinks.get('ManagePolicies',{model : 
this.rangerService})];
+                }else{
+                    return 
[XALinks.get('ServiceManager'),XALinks.get('ManagePolicies',{model : 
this.rangerService})];
+                }
             }
-               },        
+        },
 
                /** Layout sub regions */
        regions: {
@@ -129,8 +134,7 @@ define(function(require){
                        if(!_.isUndefined(policyType)){
                                this.collection.queryParams['policyType'] = 
policyType;
                        }
-            if(!_.isUndefined(App.vZone) && App.vZone.vZoneName
-                    && this.rangerService.get('type') !== 
XAEnums.ServiceType.SERVICE_TAG.label){
+            if(!_.isUndefined(App.vZone) && App.vZone.vZoneName){
                 this.collection.queryParams['zoneName'] = App.vZone.vZoneName;
             }
                        this.collection.fetch({
diff --git 
a/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js 
b/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js
index d2d1627..d3eb026 100644
--- 
a/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js
+++ 
b/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js
@@ -48,20 +48,25 @@ define(function(require){
                 serviceDefs : 
this.componentCollectionModels(App.vZone.vZoneName),
                 services    : 
this.componentServicesModels(App.vZone.vZoneName),
                 showImportExportBtn : (SessionMgr.isUser() || 
XAUtil.isAuditorOrKMSAuditor(SessionMgr)) ? false : true,
-                isZoneAdministration : ((SessionMgr.isSystemAdmin()|| 
SessionMgr.isUser() || SessionMgr.isAuditor()) && this.type !== 
XAEnums.ServiceType.SERVICE_TAG.label) ? true : false,
+                isZoneAdministration : (SessionMgr.isSystemAdmin()|| 
SessionMgr.isUser() || SessionMgr.isAuditor()) ? true : false,
                        };
                        
                },
        breadCrumbs :function(){
-               if(this.type == "tag"){
-                       return [XALinks.get('TagBasedServiceManager')];
-               }
-               if(App.vZone && App.vZone.vZoneName && 
!_.isEmpty(App.vZone.vZoneName)){
-                       return [XALinks.get('ServiceManager', 
App.vZone.vZoneName)];
-               }else{
-                               return [XALinks.get('ServiceManager')];
-               }
-       },
+            if(this.type == "tag"){
+                if(App.vZone && App.vZone.vZoneName && 
!_.isEmpty(App.vZone.vZoneName)){
+                    return [XALinks.get('TagBasedServiceManager', 
App.vZone.vZoneName)];
+                }else{
+                    return [XALinks.get('TagBasedServiceManager')];
+                }
+            }else{
+                if(App.vZone && App.vZone.vZoneName && 
!_.isEmpty(App.vZone.vZoneName)){
+                    return [XALinks.get('ServiceManager', 
App.vZone.vZoneName)];
+                }else{
+                    return [XALinks.get('ServiceManager')];
+                }
+            }
+        },
 
                /** Layout sub regions */
        regions: {},
@@ -332,19 +337,46 @@ define(function(require){
                     return zoneName === m.get('name');
                 });
             }
-            if (this.type !== XAEnums.ServiceType.SERVICE_TAG.label && 
selectedZone && !_.isEmpty(selectedZone)) {
+            if (selectedZone && !_.isEmpty(selectedZone)) {
                 var selectedZoneServices = [];
-                _.each(selectedZone.get('services'), function(value, key) {
-                    var model = that.services.find(function(m) {
-                        return m.get('name') == key
+                if(this.type !== XAEnums.ServiceType.SERVICE_TAG.label){
+                    _.each(selectedZone.get('services'), function(value, key) {
+                        var model = that.services.find(function(m) {
+                            return m.get('name') == key
+                        })
+                        if (model) {
+                            selectedZoneServices.push(model);
+                        }
+                    });
+                    return _.groupBy(selectedZoneServices, function(m) {
+                        return m.get('type')
+                    });
+                }else{
+                    var tagAssociatedServices = _.filter(this.services.models, 
function(m, key){
+                        return m.get('tagService') && 
!_.isEmpty(m.get('tagService'))
+                    }),
+                    zoneServiceList = _.keys (selectedZone.get('services')),
+                    tagServiceGrp = _.groupBy(tagAssociatedServices, 
function(m){return m.get('tagService')});
+                    //Compare tag associate service with zone services and 
return tag name that services match to zone services.
+                    _.each(tagServiceGrp, function(m, key){
+                        var hasTag = _.some(m, function(model){
+                            return zoneServiceList.indexOf(model.get("name")) 
!== -1;
+                        })
+                        if (hasTag) {
+                            var models = 
that.services.models.filter(function(obj){
+                                return obj.get("name") === key
+                            })
+                            if (models.length > 0) {
+                                selectedZoneServices = 
_.union(selectedZoneServices,models);
+                            }
+                        }
+                    });
+                    //Tag services listed by create time of that services
+                    selectedZoneServices = 
_.sortBy(selectedZoneServices,function(service){return 
service.get('createTime')});
+                    return _.groupBy(selectedZoneServices, function(obj){
+                        return obj.get("type");
                     })
-                    if (model) {
-                        selectedZoneServices.push(model);
-                    }
-                });
-                return _.groupBy(selectedZoneServices, function(m) {
-                    return m.get('type')
-                });
+                }
             } else {
                 return that.services.groupBy("type")
             }

Reply via email to