You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by pr...@apache.org on 2019/07/30 03:56:45 UTC

[ranger] branch master updated: RANGER-2519: Import policy may fail if a policy exists with same guid in another service

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

pradeep 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 34d233a  RANGER-2519: Import policy may fail if a policy exists with same guid in another service
34d233a is described below

commit 34d233ad00aeb37c5ede84552433c9c2c0e10264
Author: Pradeep <pr...@apache.org>
AuthorDate: Fri Jul 26 15:15:38 2019 +0530

    RANGER-2519: Import policy may fail if a policy exists with same guid in another service
---
 .../java/org/apache/ranger/rest/ServiceREST.java   | 59 ++++++++++++----------
 1 file changed, 32 insertions(+), 27 deletions(-)

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 e59845f..deb8b43 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
@@ -1578,36 +1578,37 @@ public class ServiceREST {
 				boolean updateIfExists=("true".equalsIgnoreCase(StringUtils.trimToEmpty(request.getParameter(PARAM_UPDATE_IF_EXISTS)))) ? true : false ;
 				if(updateIfExists) {
 					RangerPolicy existingPolicy = null;
-					if(StringUtils.isNotEmpty(policy.getGuid())) {
-						existingPolicy = getPolicyByGuid(policy.getGuid());
+					String serviceName = request.getParameter(PARAM_SERVICE_NAME);
+					if (serviceName == null) {
+						serviceName = (String) request.getAttribute(PARAM_SERVICE_NAME);
 					}
-					if (existingPolicy == null) {
-						String serviceName = request.getParameter(PARAM_SERVICE_NAME);
-						if (serviceName == null) {
-							serviceName = (String) request.getAttribute(PARAM_SERVICE_NAME);
-						}
-						if(StringUtils.isNotEmpty(serviceName)) {
-							policy.setService(serviceName);
-						}
-						String policyName = request.getParameter(PARAM_POLICY_NAME);
-						if (policyName == null) {
-							policyName = (String) request.getAttribute(PARAM_POLICY_NAME);
+					if(StringUtils.isNotEmpty(serviceName)) {
+						policy.setService(serviceName);
+					}
+					String policyName = request.getParameter(PARAM_POLICY_NAME);
+					if (policyName == null) {
+						policyName = (String) request.getAttribute(PARAM_POLICY_NAME);
+					}
+					if(StringUtils.isNotEmpty(policyName)) {
+						policy.setName(StringUtils.trim(policyName));
+					}
+					if (StringUtils.isNotEmpty(serviceName) && StringUtils.isNotEmpty(policyName)) {
+						String zoneName = request.getParameter(PARAM_ZONE_NAME);
+						if(StringUtils.isBlank(zoneName)) {
+							zoneName = (String) request.getAttribute(PARAM_ZONE_NAME);
 						}
-						if(StringUtils.isNotEmpty(policyName)) {
-							policy.setName(StringUtils.trim(policyName));
+						if (StringUtils.isNotBlank(zoneName)) {
+							policy.setZoneName(StringUtils.trim(zoneName));
 						}
-						if (StringUtils.isNotEmpty(serviceName) && StringUtils.isNotEmpty(policyName)) {
-							String zoneName = request.getParameter(PARAM_ZONE_NAME);
-							if(StringUtils.isBlank(zoneName)) {
-								zoneName = (String) request.getAttribute(PARAM_ZONE_NAME);
-							}
-							if (StringUtils.isNotBlank(zoneName)) {
-								policy.setZoneName(StringUtils.trim(zoneName));
+						if (StringUtils.isNotBlank(zoneName)) {
+							existingPolicy = getPolicyByNameAndZone(policy.getService(), policy.getName(), policy.getZoneName());
+							if(existingPolicy==null) {
+								existingPolicy = getPolicyByGuid(policy.getGuid(), policy.getService(), policy.getZoneName());
 							}
-							if (StringUtils.isNotBlank(zoneName)) {
-								existingPolicy = getPolicyByNameAndZone(policy.getService(), policy.getName(), policy.getZoneName());
-							} else {
-								existingPolicy = getPolicyByName(policy.getService(), policy.getName());
+						} else {
+							existingPolicy = getPolicyByName(policy.getService(), policy.getName());
+							if(existingPolicy==null) {
+								existingPolicy = getPolicyByGuid(policy.getGuid(), policy.getService(), null);
 							}
 						}
 					}
@@ -3370,7 +3371,7 @@ public class ServiceREST {
 		return ret;
 	}
 
-	private RangerPolicy getPolicyByGuid(String guid) {
+	private RangerPolicy getPolicyByGuid(String guid, String serviceName, String zoneName) {
 		RangerPolicy ret = null;
 
 		if(LOG.isDebugEnabled()) {
@@ -3379,6 +3380,10 @@ public class ServiceREST {
 
 		SearchFilter filter = new SearchFilter();
 		filter.setParam(SearchFilter.GUID, guid);
+		filter.setParam(SearchFilter.SERVICE_NAME, serviceName);
+		if(StringUtils.isNotEmpty(zoneName)) {
+			filter.setParam(SearchFilter.ZONE_NAME, zoneName);
+		}
 		List<RangerPolicy> policies = getPolicies(filter);
 
 		if (CollectionUtils.isNotEmpty(policies)) {