You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ab...@apache.org on 2019/05/16 20:38:09 UTC

[ranger] branch master updated: RANGER-2438: Legacy PublicAPI REST API to get all policies fails

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

abhay 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 90a9960  RANGER-2438: Legacy PublicAPI REST API to get all policies fails
90a9960 is described below

commit 90a99603882494c45102d50059803535bf4d0165
Author: Abhay Kulkarni <ab...@apache.org>
AuthorDate: Thu May 16 13:37:57 2019 -0700

    RANGER-2438: Legacy PublicAPI REST API to get all policies fails
---
 .../java/org/apache/ranger/common/ServiceUtil.java |  2 +-
 .../java/org/apache/ranger/rest/ServiceREST.java   | 64 +++++++++++++---------
 2 files changed, 38 insertions(+), 28 deletions(-)

diff --git a/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java b/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java
index 2003474..7c44e6c 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java
@@ -485,7 +485,7 @@ public class ServiceUtil {
 			}
 		}
 
-		return ret;
+		return ret == null ? 0 : ret;
 	}
 	
 	private RangerBaseModelObject dataObjectToRangerObject(VXDataObject dataObject,RangerBaseModelObject rangerObject) {
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 3ff763c..0e7cd8f 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
@@ -340,15 +340,20 @@ public class ServiceREST {
 
 			bizUtil.hasAdminPermissions("Service-Def");
 			XXServiceDef xServiceDef = daoManager.getXXServiceDef().getById(id);
-			bizUtil.hasKMSPermissions("Service-Def", xServiceDef.getImplclassname());
+			if (xServiceDef != null) {
+				bizUtil.hasKMSPermissions("Service-Def", xServiceDef.getImplclassname());
+
+				String forceDeleteStr = request.getParameter("forceDelete");
+				boolean forceDelete = false;
+				if (!StringUtils.isEmpty(forceDeleteStr) && "true".equalsIgnoreCase(forceDeleteStr)) {
+					forceDelete = true;
+				}
 
-			String forceDeleteStr = request.getParameter("forceDelete");
-			boolean forceDelete = false;
-			if(!StringUtils.isEmpty(forceDeleteStr) && "true".equalsIgnoreCase(forceDeleteStr)) {
-				forceDelete = true;
+				svcStore.deleteServiceDef(id, forceDelete);
+			} else {
+				LOG.error("Cannot retrieve service-definition:[" + id + "] for deletion");
+				throw new Exception("deleteServiceDef(" + id + ") failed");
 			}
-			
-			svcStore.deleteServiceDef(id, forceDelete);
 		} catch(WebApplicationException excp) {
 			throw excp;
 		} catch(Throwable excp) {
@@ -785,30 +790,35 @@ public class ServiceREST {
 			// services including KMS
 
 			XXService service = daoManager.getXXService().getById(id);
-			EmbeddedServiceDefsUtil embeddedServiceDefsUtil = EmbeddedServiceDefsUtil.instance();
-			if (service.getType().equals(embeddedServiceDefsUtil.getTagServiceDefId())){
-				List<XXService> referringServices=daoManager.getXXService().findByTagServiceId(id);
-				if(!CollectionUtils.isEmpty(referringServices)){
-					Set<String> referringServiceNames=new HashSet<String>();
-					for(XXService xXService:referringServices){
-						referringServiceNames.add(xXService.getName());
-						if(referringServiceNames.size()>=10){
-							break;
+			if (service != null) {
+				EmbeddedServiceDefsUtil embeddedServiceDefsUtil = EmbeddedServiceDefsUtil.instance();
+				if (service.getType().equals(embeddedServiceDefsUtil.getTagServiceDefId())) {
+					List<XXService> referringServices = daoManager.getXXService().findByTagServiceId(id);
+					if (!CollectionUtils.isEmpty(referringServices)) {
+						Set<String> referringServiceNames = new HashSet<String>();
+						for (XXService xXService : referringServices) {
+							referringServiceNames.add(xXService.getName());
+							if (referringServiceNames.size() >= 10) {
+								break;
+							}
+						}
+						if (referringServices.size() <= 10) {
+							throw restErrorUtil.createRESTException("Tag service '" + service.getName() + "' is being referenced by " + referringServices.size() + " services: " + referringServiceNames, MessageEnums.OPER_NOT_ALLOWED_FOR_STATE);
+						} else {
+							throw restErrorUtil.createRESTException("Tag service '" + service.getName() + "' is being referenced by " + referringServices.size() + " services: " + referringServiceNames + " and more..", MessageEnums.OPER_NOT_ALLOWED_FOR_STATE);
 						}
-					}
-					if(referringServices.size()<=10){
-						throw restErrorUtil.createRESTException("Tag service '" + service.getName() + "' is being referenced by " + referringServices.size() + " services: "+referringServiceNames,MessageEnums.OPER_NOT_ALLOWED_FOR_STATE);
-					}else{
-						throw restErrorUtil.createRESTException("Tag service '" + service.getName() + "' is being referenced by " + referringServices.size() + " services: "+referringServiceNames+" and more..",MessageEnums.OPER_NOT_ALLOWED_FOR_STATE);
 					}
 				}
-			}
-			XXServiceDef xxServiceDef = daoManager.getXXServiceDef().getById(service.getType());
-			bizUtil.hasKMSPermissions("Service", xxServiceDef.getImplclassname());
-                        bizUtil.blockAuditorRoleUser();
-			tagStore.deleteAllTagObjectsForService(service.getName());
+				XXServiceDef xxServiceDef = daoManager.getXXServiceDef().getById(service.getType());
+				bizUtil.hasKMSPermissions("Service", xxServiceDef.getImplclassname());
+				bizUtil.blockAuditorRoleUser();
+				tagStore.deleteAllTagObjectsForService(service.getName());
 
-			svcStore.deleteService(id);
+				svcStore.deleteService(id);
+			} else {
+				LOG.error("Cannot retrieve service:[" + id + "] for deletion");
+				throw new Exception("deleteService(" + id + ") failed");
+			}
 		} catch(WebApplicationException excp) {
 			throw excp;
 		} catch(Throwable excp) {