You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ve...@apache.org on 2016/06/17 04:12:03 UTC
[2/3] incubator-ranger git commit: RANGER-1025 : Policy search REST
API implemented in public api V1 is not returning results as expected
RANGER-1025 : Policy search REST API implemented in public api V1 is not returning results as expected
Signed-off-by: Velmurugan Periasamy <ve...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/07696a70
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/07696a70
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/07696a70
Branch: refs/heads/master
Commit: 07696a705cea966c4a0b8bfdc85f190e45bc2515
Parents: 7e5e970
Author: pradeep agrawal <pr...@freestoneinfotech.com>
Authored: Mon Jun 13 09:56:13 2016 +0530
Committer: Velmurugan Periasamy <ve...@apache.org>
Committed: Fri Jun 17 00:11:00 2016 -0400
----------------------------------------------------------------------
.../org/apache/ranger/biz/ServiceDBStore.java | 10 ++--
.../apache/ranger/common/RangerSearchUtil.java | 1 +
.../org/apache/ranger/common/ServiceUtil.java | 51 ++++++++++++--------
.../java/org/apache/ranger/rest/PublicAPIs.java | 17 +++++--
.../ranger/service/RangerPolicyServiceBase.java | 2 +
5 files changed, 51 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/07696a70/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
index 739ad05..794de71 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
@@ -3651,7 +3651,7 @@ public class ServiceDBStore extends AbstractServiceStore {
if (!CollectionUtils.isEmpty(xPolList)) {
for (XXPolicy xXPolicy : xPolList) {
if(!processedServices.contains(xXPolicy.getService())){
- loadRangerPolicies(xXPolicy.getService(),processedServices,policyMap);
+ loadRangerPolicies(xXPolicy.getService(),processedServices,policyMap,searchFilter);
}
}
}
@@ -3670,7 +3670,7 @@ public class ServiceDBStore extends AbstractServiceStore {
if(xPol2!=null){
if(!processedPolicies.contains(xPol2.getId())){
if(!processedServices.contains(xPol2.getService())){
- loadRangerPolicies(xPol2.getService(),processedServices,policyMap);
+ loadRangerPolicies(xPol2.getService(),processedServices,policyMap,searchFilter);
}
if(policyMap.containsKey(xPol2.getId())){
policyList.add(policyMap.get(xPol2.getId()));
@@ -3688,7 +3688,7 @@ public class ServiceDBStore extends AbstractServiceStore {
if(xPol!=null){
if(!processedPolicies.contains(xPol.getId())){
if(!processedServices.contains(xPol.getService())){
- loadRangerPolicies(xPol.getService(),processedServices,policyMap);
+ loadRangerPolicies(xPol.getService(),processedServices,policyMap,searchFilter);
}
if(policyMap.containsKey(xPol.getId())){
policyList.add(policyMap.get(xPol.getId()));
@@ -3703,9 +3703,9 @@ public class ServiceDBStore extends AbstractServiceStore {
return retList;
}
- private void loadRangerPolicies(Long serviceId,Set<Long> processedServices,Map<Long,RangerPolicy> policyMap){
+ private void loadRangerPolicies(Long serviceId,Set<Long> processedServices,Map<Long,RangerPolicy> policyMap,SearchFilter searchFilter){
try {
- List<RangerPolicy> tempPolicyList = getServicePolicies(serviceId,null);
+ List<RangerPolicy> tempPolicyList = getServicePolicies(serviceId,searchFilter);
if(!CollectionUtils.isEmpty(tempPolicyList)){
for (RangerPolicy rangerPolicy : tempPolicyList) {
if(!policyMap.containsKey(rangerPolicy.getId())){
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/07696a70/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java b/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
index b8f7c88..2ad5795 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
@@ -136,6 +136,7 @@ public class RangerSearchUtil extends SearchUtil {
ret.setParam(SearchFilter.GROUP, request.getParameter("groupName"));
ret.setParam(SearchFilter.IS_ENABLED, request.getParameter("isEnabled"));
ret.setParam(SearchFilter.IS_RECURSIVE, request.getParameter("isRecursive"));
+ ret.setParam(SearchFilter.POL_RESOURCE, request.getParameter(SearchFilter.POL_RESOURCE));
ret.setParam(SearchFilter.RESOURCE_PREFIX + "path", request.getParameter("resourceName"));
ret.setParam(SearchFilter.RESOURCE_PREFIX + "database", request.getParameter("databases"));
ret.setParam(SearchFilter.RESOURCE_PREFIX + "table", request.getParameter("tables"));
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/07696a70/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java
----------------------------------------------------------------------
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 0feb5db..5d0551a 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
@@ -50,6 +50,7 @@ import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemAccess;
import org.apache.ranger.plugin.model.RangerService;
import org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil;
import org.apache.ranger.plugin.util.GrantRevokeRequest;
+import org.apache.ranger.plugin.util.SearchFilter;
import org.apache.ranger.view.VXAsset;
import org.apache.ranger.view.VXAuditMap;
import org.apache.ranger.view.VXDataObject;
@@ -1153,33 +1154,43 @@ public class ServiceUtil {
}
- public VXPolicyList rangerPolicyListToPublic(List<RangerPolicy> rangerPolicyList) {
+ public VXPolicyList rangerPolicyListToPublic(List<RangerPolicy> rangerPolicyList,SearchFilter filter) {
RangerService service = null;
List<VXPolicy> vXPolicyList = new ArrayList<VXPolicy>();
- for ( RangerPolicy policy : rangerPolicyList) {
- try {
- service = svcStore.getServiceByName(policy.getService());
- } catch(Exception excp) {
- throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true);
- }
-
- if(service == null) {
- throw restErrorUtil.createRESTException(HttpServletResponse.SC_NOT_FOUND, "Not found", true);
- }
-
- VXPolicy vXPolicy = toVXPolicy(policy,service);
-
- if(vXPolicy != null) {
- vXPolicyList.add(vXPolicy);
+ VXPolicyList vXPolicyListObj = new VXPolicyList(new ArrayList<VXPolicy>());
+ if(CollectionUtils.isNotEmpty(rangerPolicyList)) {
+ int totalCount = rangerPolicyList.size();
+ int startIndex = filter == null ? 0 : filter.getStartIndex();
+ int pageSize = filter == null ? totalCount : filter.getMaxRows();
+ int toIndex = Math.min(startIndex + pageSize, totalCount);
+ String sortType = filter == null ? null : filter.getSortType();
+ String sortBy = filter == null ? null : filter.getSortBy();
+ for(int i = startIndex; i < toIndex; i++) {
+ RangerPolicy policy =rangerPolicyList.get(i);
+ try {
+ service = svcStore.getServiceByName(policy.getService());
+ } catch(Exception excp) {
+ throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true);
+ }
+ if(service == null) {
+ throw restErrorUtil.createRESTException(HttpServletResponse.SC_NOT_FOUND, "Not found", true);
+ }
+ VXPolicy vXPolicy = toVXPolicy(policy,service);
+ if(vXPolicy != null) {
+ vXPolicyList.add(vXPolicy);
+ }
}
+ vXPolicyListObj = new VXPolicyList(vXPolicyList);
+ vXPolicyListObj.setPageSize(pageSize);
+ vXPolicyListObj.setResultSize(vXPolicyList.size());
+ vXPolicyListObj.setStartIndex(startIndex);
+ vXPolicyListObj.setTotalCount(totalCount);
+ vXPolicyListObj.setSortBy(sortBy);
+ vXPolicyListObj.setSortType(sortType);
}
-
- VXPolicyList vXPolicyListObj = new VXPolicyList(vXPolicyList);
-
return vXPolicyListObj;
-
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/07696a70/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIs.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIs.java b/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIs.java
index 21fdcd1..1f465d5 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIs.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIs.java
@@ -348,19 +348,26 @@ public class PublicAPIs {
}
SearchFilter filter = searchUtil.getSearchFilterFromLegacyRequest(request, policyService.sortFields);
+ // get all policies from the store; pick the page to return after applying filter
+ int savedStartIndex = filter == null ? 0 : filter.getStartIndex();
+ int savedMaxRows = filter == null ? Integer.MAX_VALUE : filter.getMaxRows();
+ if(filter != null) {
+ filter.setStartIndex(0);
+ filter.setMaxRows(Integer.MAX_VALUE);
+ }
List<RangerPolicy> rangerPolicyList = serviceREST.getPolicies(filter);
-
+ if(filter != null) {
+ filter.setStartIndex(savedStartIndex);
+ filter.setMaxRows(savedMaxRows);
+ }
VXPolicyList vXPolicyList = null;
-
if (rangerPolicyList != null) {
- vXPolicyList = serviceUtil.rangerPolicyListToPublic(rangerPolicyList);
+ vXPolicyList = serviceUtil.rangerPolicyListToPublic(rangerPolicyList,filter);
}
-
if(logger.isDebugEnabled()) {
logger.debug("<== PublicAPIs.searchPolicies(): " + vXPolicyList );
}
-
return vXPolicyList;
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/07696a70/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java
index b7598ea..2649ff3 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java
@@ -49,6 +49,8 @@ public abstract class RangerPolicyServiceBase<T extends XXPolicyBase, V extends
"XXService xSvc", "xSvc.id = obj.service"));
searchFields
.add(new SearchField(SearchFilter.IS_ENABLED, "obj.isEnabled", DATA_TYPE.BOOLEAN, SEARCH_TYPE.FULL));
+ searchFields.add(new SearchField(SearchFilter.IS_RECURSIVE,"xPolRes.isRecursive",DATA_TYPE.BOOLEAN,SEARCH_TYPE.FULL,
+ "XXPolicyResource xPolRes","obj.id=xPolRes.policyId"));
searchFields.add(new SearchField(SearchFilter.POLICY_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
searchFields.add(new SearchField(SearchFilter.POLICY_NAME, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL));
searchFields.add(new SearchField(SearchFilter.GUID, "obj.guid", DATA_TYPE.STRING, SEARCH_TYPE.FULL));