You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ni...@apache.org on 2019/03/14 05:44:10 UTC

[ranger] branch master updated: RANGER-2359: Show zone association with tag based service.

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 <ni...@apache.org>
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")
             }