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/05/27 06:44:00 UTC

[ranger] branch master updated: RANGER-2445 : Import of Tagservice for zone

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

nikhil 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 184c9b7  RANGER-2445 : Import of Tagservice for zone
184c9b7 is described below

commit 184c9b74f9999daeed51f5240ce1d47d3829283b
Author: Nikhil P <ni...@apache.org>
AuthorDate: Mon May 27 12:12:02 2019 +0530

    RANGER-2445 : Import of Tagservice for zone
---
 .../ranger/db/XXSecurityZoneRefTagServiceDao.java    | 13 +++++++++++++
 .../java/org/apache/ranger/rest/ServiceREST.java     |  5 ++++-
 .../main/resources/META-INF/jpa_named_queries.xml    |  6 ++++++
 .../main/webapp/scripts/views/UploadServicePolicy.js | 20 ++++++++++++++++++++
 .../java/org/apache/ranger/rest/TestServiceREST.java | 16 ++++++++++++++--
 5 files changed, 57 insertions(+), 3 deletions(-)

diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXSecurityZoneRefTagServiceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXSecurityZoneRefTagServiceDao.java
index 8006272..c30dba1 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXSecurityZoneRefTagServiceDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXSecurityZoneRefTagServiceDao.java
@@ -18,6 +18,7 @@
  */
 package org.apache.ranger.db;
 
+import java.util.Collections;
 import java.util.List;
 
 import javax.persistence.NoResultException;
@@ -45,4 +46,16 @@ public class XXSecurityZoneRefTagServiceDao extends BaseDao<XXSecurityZoneRefTag
             return null;
         }
     }
+
+	public List<XXSecurityZoneRefTagService> findByTagServiceNameAndZoneId(String tagServiceName, Long zoneId) {
+		if (tagServiceName == null) {
+			return Collections.emptyList();
+		}
+		try {
+			return getEntityManager().createNamedQuery("XXSecurityZoneRefTagService.findByTagServiceNameAndZoneId", tClass)
+					.setParameter("tagServiceName", tagServiceName).setParameter("zoneId", zoneId).getResultList();
+		} catch (NoResultException e) {
+			return Collections.emptyList();
+		}
+	}
 }
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
index 0e7cd8f..b5caea8 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
@@ -83,6 +83,7 @@ import org.apache.ranger.db.XXGroupUserDao;
 import org.apache.ranger.entity.XXPolicyExportAudit;
 import org.apache.ranger.entity.XXSecurityZone;
 import org.apache.ranger.entity.XXSecurityZoneRefService;
+import org.apache.ranger.entity.XXSecurityZoneRefTagService;
 import org.apache.ranger.entity.XXService;
 import org.apache.ranger.entity.XXServiceDef;
 import org.apache.ranger.entity.XXTrxLog;
@@ -2403,8 +2404,10 @@ public class ServiceREST {
 		}
 		List<XXSecurityZoneRefService> serviceZoneMapping = daoManager.getXXSecurityZoneRefService()
 				.findByServiceNameAndZoneId(serviceNameToCheck, xdestZone.getId());
+		List<XXSecurityZoneRefTagService> tagServiceZoneMapping = daoManager.getXXSecurityZoneRefTagService()
+				.findByTagServiceNameAndZoneId(serviceNameToCheck, xdestZone.getId());
 
-		if (!CollectionUtils.isEmpty(serviceZoneMapping)) {
+		if (!CollectionUtils.isEmpty(serviceZoneMapping) || !CollectionUtils.isEmpty(tagServiceZoneMapping)) {
 			isZoneServiceExistAtDestination = true;
 		}
 
diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
index e4647b1..2fa12f9 100644
--- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
+++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
@@ -1380,6 +1380,12 @@
         </query>
     </named-query>
 
+	<named-query name="XXSecurityZoneRefTagService.findByTagServiceNameAndZoneId">
+	     <query>
+	         select obj from XXSecurityZoneRefTagService obj where obj.tagServiceName = :tagServiceName and obj.zoneId = :zoneId
+	     </query>
+	 </named-query>
+
 	<named-query name="XXSecurityZoneRefUser.findByZoneId">
         <query>
             select obj from XXSecurityZoneRefUser obj where obj.zoneId = :zoneId
diff --git a/security-admin/src/main/webapp/scripts/views/UploadServicePolicy.js b/security-admin/src/main/webapp/scripts/views/UploadServicePolicy.js
index 94362bf..7371c2b 100644
--- a/security-admin/src/main/webapp/scripts/views/UploadServicePolicy.js
+++ b/security-admin/src/main/webapp/scripts/views/UploadServicePolicy.js
@@ -229,6 +229,16 @@ define(function(require){
 							selectedZoneServices.push(model);
 						}
 					})
+					if(selectedZone.has('tagServices') && !_.isEmpty(selectedZone.get('tagServices'))){
+						_.filter(selectedZone.get('tagServices'), function(tag){
+							var zoneServiceModelTags = that.serviceNames.find(function(serviceModel){
+								return serviceModel.get('name') === tag
+							})
+							if(zoneServiceModelTags){
+								selectedZoneServices.push(zoneServiceModelTags);
+							}
+						})
+					}
 				}else{
 					selectedZoneServices = this.serviceNames;
 				}
@@ -370,6 +380,16 @@ define(function(require){
 							zoneServiceList.push(zoneServiceModel);
 						}
 					});
+					if(selectedZone.has('tagServices') && !_.isEmpty(selectedZone.get('tagServices'))){
+						_.filter(selectedZone.get('tagServices'), function(tag){
+							var zoneServiceModelTags = that.serviceNames.find(function(serviceModel){
+								return serviceModel.get('name') === tag
+							})
+							if(zoneServiceModelTags){
+								zoneServiceList.push(zoneServiceModelTags);
+							}
+						})
+					}
 					that.serviceNames = zoneServiceList;
 					that.setServiceSourceData();
 				}else{
diff --git a/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java b/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
index 19f162b..321d1c5 100644
--- a/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
+++ b/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
@@ -55,12 +55,14 @@ import org.apache.ranger.common.UserSessionBase;
 import org.apache.ranger.db.RangerDaoManager;
 import org.apache.ranger.db.XXSecurityZoneDao;
 import org.apache.ranger.db.XXSecurityZoneRefServiceDao;
+import org.apache.ranger.db.XXSecurityZoneRefTagServiceDao;
 import org.apache.ranger.db.XXGroupUserDao;
 import org.apache.ranger.db.XXServiceDao;
 import org.apache.ranger.db.XXServiceDefDao;
 import org.apache.ranger.entity.XXPortalUser;
 import org.apache.ranger.entity.XXSecurityZone;
 import org.apache.ranger.entity.XXSecurityZoneRefService;
+import org.apache.ranger.entity.XXSecurityZoneRefTagService;
 import org.apache.ranger.entity.XXService;
 import org.apache.ranger.entity.XXServiceDef;
 import org.apache.ranger.plugin.model.RangerPluginInfo;
@@ -1670,11 +1672,15 @@ public class TestServiceREST {
 		XXServiceDef xServiceDef = serviceDef();
 		XXServiceDefDao xServiceDefDao = Mockito.mock(XXServiceDefDao.class);
 		XXSecurityZoneRefServiceDao xSecZoneRefServiceDao = Mockito.mock(XXSecurityZoneRefServiceDao.class);
+		XXSecurityZoneRefTagServiceDao xSecZoneRefTagServiceDao = Mockito.mock(XXSecurityZoneRefTagServiceDao.class);
 		XXSecurityZoneRefService xSecZoneRefService = Mockito.mock(XXSecurityZoneRefService.class);
+		XXSecurityZoneRefTagService xSecZoneRefTagService = Mockito.mock(XXSecurityZoneRefTagService.class);
 		XXSecurityZoneDao xSecZoneDao = Mockito.mock(XXSecurityZoneDao.class);
 		XXSecurityZone xSecZone = Mockito.mock(XXSecurityZone.class);
 		List<XXSecurityZoneRefService> zoneServiceList = new ArrayList<>();
+		List<XXSecurityZoneRefTagService> zoneTagServiceList = new ArrayList<>();
 		zoneServiceList.add(xSecZoneRefService);
+		zoneTagServiceList.add(xSecZoneRefTagService);
 		Map<String, String> zoneMappingMap = new LinkedHashMap<String, String>();
 		zoneMappingMap.put("ZoneSource", "ZoneDestination");
 
@@ -1710,7 +1716,8 @@ public class TestServiceREST {
 		Mockito.when(xSecZoneDao.findByZoneName(Mockito.anyString())).thenReturn(xSecZone);
 		Mockito.when(daoManager.getXXSecurityZoneRefService()).thenReturn(xSecZoneRefServiceDao);
 		Mockito.when(xSecZoneRefServiceDao.findByServiceNameAndZoneId(Mockito.anyString(),Mockito.anyLong())).thenReturn(zoneServiceList);
-
+		Mockito.when(daoManager.getXXSecurityZoneRefTagService()).thenReturn(xSecZoneRefTagServiceDao);
+		Mockito.when(xSecZoneRefTagServiceDao.findByTagServiceNameAndZoneId(Mockito.anyString(),Mockito.anyLong())).thenReturn(zoneTagServiceList);
 		serviceREST.importPoliciesFromFile(request, null, zoneInputStream, uploadedInputStream, fileDetail, isOverride , "unzoneToZone");
 
 		Mockito.verify(svcStore).createPolicy(rangerPolicy);
@@ -1729,11 +1736,15 @@ public class TestServiceREST {
 		XXServiceDef xServiceDef = serviceDef();
 		XXServiceDefDao xServiceDefDao = Mockito.mock(XXServiceDefDao.class);
 		XXSecurityZoneRefServiceDao xSecZoneRefServiceDao = Mockito.mock(XXSecurityZoneRefServiceDao.class);
+		XXSecurityZoneRefTagServiceDao xSecZoneRefTagServiceDao = Mockito.mock(XXSecurityZoneRefTagServiceDao.class);
 		XXSecurityZoneRefService xSecZoneRefService = Mockito.mock(XXSecurityZoneRefService.class);
+		XXSecurityZoneRefTagService xSecZoneRefTagService = Mockito.mock(XXSecurityZoneRefTagService.class);
 		XXSecurityZoneDao xSecZoneDao = Mockito.mock(XXSecurityZoneDao.class);
 		XXSecurityZone xSecZone = Mockito.mock(XXSecurityZone.class);
 		List<XXSecurityZoneRefService> zoneServiceList = new ArrayList<>();
+		List<XXSecurityZoneRefTagService> zoneTagServiceList = new ArrayList<>();
 		zoneServiceList.add(xSecZoneRefService);
+		zoneTagServiceList.add(xSecZoneRefTagService);
 		Map<String, String> zoneMappingMap = new LinkedHashMap<String, String>();
 		zoneMappingMap.put("ZoneSource", "ZoneDestination");
 
@@ -1769,7 +1780,8 @@ public class TestServiceREST {
 		Mockito.when(xSecZoneDao.findByZoneName(Mockito.anyString())).thenReturn(xSecZone);
 		Mockito.when(daoManager.getXXSecurityZoneRefService()).thenReturn(xSecZoneRefServiceDao);
 		Mockito.when(xSecZoneRefServiceDao.findByServiceNameAndZoneId(Mockito.anyString(),Mockito.anyLong())).thenReturn(zoneServiceList);
-
+		Mockito.when(daoManager.getXXSecurityZoneRefTagService()).thenReturn(xSecZoneRefTagServiceDao);
+		Mockito.when(xSecZoneRefTagServiceDao.findByTagServiceNameAndZoneId(Mockito.anyString(),Mockito.anyLong())).thenReturn(zoneTagServiceList);
 		serviceREST.importPoliciesFromFile(request, null, zoneInputStream, uploadedInputStream, fileDetail, isOverride, "unzoneToUnZone");
 		Mockito.verify(svcStore).createPolicy(rangerPolicy);