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 <[email protected]>
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)) {