This is an automated email from the ASF dual-hosted git repository. spolavarapu pushed a commit to branch ranger-2.2 in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/ranger-2.2 by this push: new e01d39c RANGER-3227-Add-GenericType-for-response-handling e01d39c is described below commit e01d39c954fa196c321f7f91ef15a518b34bde49 Author: Abhishek Kumar <abhishek.ku...@cloudera.com> AuthorDate: Wed May 12 21:15:29 2021 -0400 RANGER-3227-Add-GenericType-for-response-handling Signed-off-by: Sailaja Polavarapu <spolavar...@cloudera.com> --- .../main/java/org/apache/ranger/RangerClient.java | 114 ++++++++++++++------- .../ranger/examples/sampleclient/SampleClient.java | 15 +++ 2 files changed, 91 insertions(+), 38 deletions(-) diff --git a/intg/src/main/java/org/apache/ranger/RangerClient.java b/intg/src/main/java/org/apache/ranger/RangerClient.java index c7e32dc..a1e1c7a 100644 --- a/intg/src/main/java/org/apache/ranger/RangerClient.java +++ b/intg/src/main/java/org/apache/ranger/RangerClient.java @@ -18,6 +18,7 @@ */ package org.apache.ranger; +import com.sun.jersey.api.client.GenericType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.sun.jersey.api.client.ClientResponse; @@ -179,11 +180,11 @@ public class RangerClient { } public void deleteServiceDef(long serviceDefId) throws RangerServiceException { - callAPI(DELETE_SERVICEDEF_BY_ID.applyUrlFormat(serviceDefId), null, null, null); + callAPI(DELETE_SERVICEDEF_BY_ID.applyUrlFormat(serviceDefId), null); } public void deleteServiceDef(String serviceDefName) throws RangerServiceException { - callAPI(DELETE_SERVICEDEF_BY_NAME.applyUrlFormat(serviceDefName), null, null, null); + callAPI(DELETE_SERVICEDEF_BY_NAME.applyUrlFormat(serviceDefName), null); } public RangerServiceDef getServiceDef(long serviceDefId) throws RangerServiceException { @@ -195,7 +196,7 @@ public class RangerClient { } public List<RangerServiceDef> findServiceDefs(Map<String, String> filter) throws RangerServiceException { - return callAPI(FIND_SERVICEDEFS, filter, null, List.class); + return callAPI(FIND_SERVICEDEFS, filter, null, new GenericType<List<RangerServiceDef>>(){}); } @@ -215,11 +216,11 @@ public class RangerClient { } public void deleteService(long serviceId) throws RangerServiceException { - callAPI(DELETE_SERVICE_BY_ID.applyUrlFormat(serviceId), null, null, null); + callAPI(DELETE_SERVICE_BY_ID.applyUrlFormat(serviceId), null); } public void deleteService(String serviceName) throws RangerServiceException { - callAPI(DELETE_SERVICE_BY_NAME.applyUrlFormat(serviceName), null, null, null); + callAPI(DELETE_SERVICE_BY_NAME.applyUrlFormat(serviceName), null); } public RangerService getService(long serviceId) throws RangerServiceException { @@ -231,7 +232,7 @@ public class RangerClient { } public List<RangerService> findServices(Map<String, String> filter) throws RangerServiceException { - return callAPI(FIND_SERVICES, filter, null, List.class); + return callAPI(FIND_SERVICES, filter, null, new GenericType<List<RangerService>>(){}); } @@ -255,7 +256,7 @@ public class RangerClient { } public void deletePolicy(long policyId) throws RangerServiceException { - callAPI(DELETE_POLICY_BY_ID.applyUrlFormat(policyId), null, null, null); + callAPI(DELETE_POLICY_BY_ID.applyUrlFormat(policyId), null); } public void deletePolicy(String serviceName, String policyName) throws RangerServiceException { @@ -264,7 +265,7 @@ public class RangerClient { queryParams.put(PARAM_POLICY_NAME, policyName); queryParams.put("servicename", serviceName); - callAPI(DELETE_POLICY_BY_NAME, queryParams, null, null); + callAPI(DELETE_POLICY_BY_NAME, queryParams); } public RangerPolicy getPolicy(long policyId) throws RangerServiceException { @@ -276,11 +277,11 @@ public class RangerClient { } public List<RangerPolicy> getPoliciesInService(String serviceName) throws RangerServiceException { - return callAPI(GET_POLICIES_IN_SERVICE.applyUrlFormat(serviceName), null, null, List.class); + return callAPI(GET_POLICIES_IN_SERVICE.applyUrlFormat(serviceName), null, null, new GenericType<List<RangerPolicy>>(){}); } public List<RangerPolicy> findPolicies(Map<String, String> filter) throws RangerServiceException { - return callAPI(FIND_POLICIES, filter, null, List.class); + return callAPI(FIND_POLICIES, filter, null, new GenericType<List<RangerPolicy>>(){}); } @@ -300,11 +301,11 @@ public class RangerClient { } public void deleteSecurityZone(long zoneId) throws RangerServiceException { - callAPI(DELETE_ZONE_BY_ID.applyUrlFormat(zoneId), null, null, null); + callAPI(DELETE_ZONE_BY_ID.applyUrlFormat(zoneId), null); } public void deleteSecurityZone(String zoneName) throws RangerServiceException { - callAPI(DELETE_ZONE_BY_NAME.applyUrlFormat(zoneName), null, null, null); + callAPI(DELETE_ZONE_BY_NAME.applyUrlFormat(zoneName), null); } public RangerSecurityZone getSecurityZone(long zoneId) throws RangerServiceException { @@ -316,7 +317,7 @@ public class RangerClient { } public List<RangerSecurityZone> findSecurityZones(Map<String, String> filter) throws RangerServiceException { - return callAPI(FIND_ZONES, filter, null, List.class); + return callAPI(FIND_ZONES, filter, null, new GenericType<List<RangerSecurityZone>>(){}); } /* @@ -331,7 +332,7 @@ public class RangerClient { } public void deleteRole(long roleId) throws RangerServiceException { - callAPI(DELETE_ROLE_BY_ID.applyUrlFormat(roleId), null, null, null); + callAPI(DELETE_ROLE_BY_ID.applyUrlFormat(roleId), null); } public void deleteRole(String roleName, String execUser, String serviceName) throws RangerServiceException { @@ -340,7 +341,7 @@ public class RangerClient { queryParams.put(PARAM_EXEC_USER, execUser); queryParams.put(PARAM_SERVICE_NAME, serviceName); - callAPI(DELETE_ROLE_BY_NAME.applyUrlFormat(roleName), queryParams, null, null); + callAPI(DELETE_ROLE_BY_NAME.applyUrlFormat(roleName), queryParams); } public RangerRole getRole(long roleId) throws RangerServiceException { @@ -362,15 +363,15 @@ public class RangerClient { queryParams.put(PARAM_EXEC_USER, execUser); queryParams.put(PARAM_SERVICE_NAME, serviceName); - return callAPI(GET_ALL_ROLE_NAMES.applyUrlFormat(serviceName), queryParams, null, List.class); + return callAPI(GET_ALL_ROLE_NAMES.applyUrlFormat(serviceName), queryParams, null, new GenericType<List<String>>(){}); } public List<String> getUserRoles(String user) throws RangerServiceException { - return callAPI(GET_USER_ROLES.applyUrlFormat(user), null, null, List.class); + return callAPI(GET_USER_ROLES.applyUrlFormat(user), null, null, new GenericType<List<String>>(){}); } public List<RangerRole> findRoles(Map<String, String> filter) throws RangerServiceException { - return callAPI(FIND_ROLES, filter, null, List.class); + return callAPI(FIND_ROLES, filter, null, new GenericType<List<RangerRole>>(){}); } public RESTResponse grantRole(String serviceName, GrantRevokeRoleRequest request) throws RangerServiceException { @@ -386,7 +387,7 @@ public class RangerClient { * Admin APIs */ public List<RangerPluginInfo> getPluginsInfo() throws RangerServiceException { - return callAPI(GET_PLUGIN_INFO, null, null, List.class); + return callAPI(GET_PLUGIN_INFO, null, null, new GenericType<List<RangerPluginInfo>>(){}); } public void deletePolicyDeltas(int days, boolean reloadServicePoliciesCache) throws RangerServiceException { @@ -395,7 +396,7 @@ public class RangerClient { queryParams.put(PARAM_DAYS, String.valueOf(days)); queryParams.put(PARAM_RELOAD_SERVICE_POLICIES_CACHE, String.valueOf(reloadServicePoliciesCache)); - callAPI(DELETE_POLICY_DELTAS, queryParams, null, null); + callAPI(DELETE_POLICY_DELTAS, queryParams); } private ClientResponse invokeREST(API api, Map<String, String> params, Object request) throws RangerServiceException { @@ -429,12 +430,10 @@ public class RangerClient { return clientResponse; } - private <T> T callAPI(API api, Map<String, String> params, Object request, Class<T> responseType) throws RangerServiceException { - T ret = null; + private ClientResponse responseHandler(API api, Map<String, String> params, Object request) throws RangerServiceException { + final ClientResponse clientResponse; - if (LOG.isDebugEnabled()) { - LOG.debug("==> callAPI({},{},{},{})",api, params, request, responseType); - LOG.debug("------------------------------------------------------"); + if (LOG.isDebugEnabled()){ LOG.debug("Call : {} {}", api.getMethod(), api.getNormalizedPath()); LOG.debug("Content-type : {} ", api.getConsumes()); LOG.debug("Accept : {} ", api.getProduces()); @@ -443,8 +442,6 @@ public class RangerClient { } } - final ClientResponse clientResponse; - if (isSecureMode) { clientResponse = Subject.doAs(sub, (PrivilegedAction<ClientResponse>) () -> { try { @@ -454,7 +451,9 @@ public class RangerClient { } return null; }); - } else clientResponse = invokeREST(api,params,request); + } else { + clientResponse = invokeREST(api,params,request); + } if (LOG.isDebugEnabled()) { LOG.debug("method={}, path={}, contentType={}, accept={}, httpStatus={}", api.getMethod(), api.getNormalizedPath(), api.getConsumes(), api.getProduces(), (clientResponse != null ? clientResponse.getStatus() : "null")); @@ -463,22 +462,61 @@ public class RangerClient { if (clientResponse == null) { throw new RangerServiceException(api, null); } else if (clientResponse.getStatus() == api.getExpectedStatus().getStatusCode()) { - if (responseType != null) { - ret = clientResponse.getEntity(responseType); - - if (LOG.isDebugEnabled()) { - LOG.debug("Response: {}", restClient.toJson(ret)); - LOG.debug("------------------------------------------------------"); - } - } + return clientResponse; } else if (clientResponse.getStatus() == ClientResponse.Status.SERVICE_UNAVAILABLE.getStatusCode()) { LOG.error("Ranger Admin unavailable. HTTP Status: {}", clientResponse.getStatus()); } else { throw new RangerServiceException(api, clientResponse); } + return clientResponse; + } - if(LOG.isDebugEnabled()){ - LOG.debug("<== callAPI({},{},{},{}), result = {}", api, params, request, responseType, ret); + private void callAPI(API api, Map<String, String> params) throws RangerServiceException { + if (LOG.isDebugEnabled()) { + LOG.debug("==> callAPI({},{})",api, params); + } + + responseHandler(api, params, null); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== callAPI({},{})", api, params); + } + } + + private <T> T callAPI(API api, Map<String, String> params, Object request, GenericType<T> responseType) throws RangerServiceException { + T ret = null; + if (LOG.isDebugEnabled()) { + LOG.debug("==> callAPI({},{},{})",api, params, request); + LOG.debug("------------------------------------------------------"); + } + final ClientResponse clientResponse = responseHandler(api, params, request); + if (responseType != null) { + ret = clientResponse.getEntity(responseType); + + if (LOG.isDebugEnabled()) { + LOG.debug("Response: {}", restClient.toJson(ret)); + LOG.debug("------------------------------------------------------"); + LOG.debug("<== callAPI({},{},{},{}), result = {}", api, params, request, responseType, ret); + } + } + return ret; + } + + private <T> T callAPI(API api, Map<String, String> params, Object request, Class<T> responseType) throws RangerServiceException { + T ret = null; + if (LOG.isDebugEnabled()) { + LOG.debug("==> callAPI({},{},{})",api, params, request); + LOG.debug("------------------------------------------------------"); + } + final ClientResponse clientResponse = responseHandler(api, params, request); + if (responseType != null) { + ret = clientResponse.getEntity(responseType); + + if (LOG.isDebugEnabled()) { + LOG.debug("Response: {}", restClient.toJson(ret)); + LOG.debug("------------------------------------------------------"); + LOG.debug("<== callAPI({},{},{},{}), result = {}", api, params, request, responseType, ret); + } } return ret; } diff --git a/ranger-examples/sample-client/src/main/java/org/apache/ranger/examples/sampleclient/SampleClient.java b/ranger-examples/sample-client/src/main/java/org/apache/ranger/examples/sampleclient/SampleClient.java index b380127..7d57950 100644 --- a/ranger-examples/sample-client/src/main/java/org/apache/ranger/examples/sampleclient/SampleClient.java +++ b/ranger-examples/sample-client/src/main/java/org/apache/ranger/examples/sampleclient/SampleClient.java @@ -118,6 +118,16 @@ public class SampleClient { LOG.info("New Service created successfully {}", gsonBuilder.toJson(createdService)); /* + All Services + */ + List<RangerService> services = rangerClient.findServices(filter); + String allServiceNames = ""; + for (RangerService svc: services) { + allServiceNames = allServiceNames.concat(svc.getName() + " "); + } + LOG.info("List of Services : {}", allServiceNames); + + /* Policy Management */ @@ -189,6 +199,11 @@ public class SampleClient { */ List<RangerRole> allRoles = rangerClient.findRoles(filter); LOG.info("List of Roles {}", gsonBuilder.toJson(allRoles)); + String allRoleNames = ""; + for (RangerRole role: allRoles) { + allRoleNames = allRoleNames.concat(role.getName() + " "); + } + LOG.info("List of Roles : {}", allRoleNames); /* Delete a role in Ranger