RANGER-274: tag-based-policies: updated policy-download to include tag-based-policies
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/79a4f9db Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/79a4f9db Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/79a4f9db Branch: refs/heads/tag-policy Commit: 79a4f9dbd62900459959a7183fe173ffb8d95865 Parents: 49d1fdb Author: Madhan Neethiraj <[email protected]> Authored: Mon May 18 15:06:00 2015 -0700 Committer: Madhan Neethiraj <[email protected]> Committed: Mon May 18 15:06:00 2015 -0700 ---------------------------------------------------------------------- .../apache/ranger/plugin/util/SearchFilter.java | 2 + .../ranger/plugin/util/ServicePolicies.java | 113 ++++++++++++++++++- .../org/apache/ranger/biz/ServiceDBStore.java | 24 ++++ .../service/RangerServiceServiceBase.java | 3 + 4 files changed, 141 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/79a4f9db/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java ---------------------------------------------------------------------- diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java index 17738be..ae6b7a8 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java @@ -36,6 +36,8 @@ public class SearchFilter { public static final String POLICY_ID = "policyId"; // search, sort public static final String IS_ENABLED = "isEnabled"; // search public static final String IS_RECURSIVE = "isRecursive"; // search + public static final String TAG_SERVICE_NAME = "tagServiceName"; // search + public static final String TAG_SERVICE_ID = "tagServiceId"; // search public static final String USER = "user"; // search public static final String GROUP = "group"; // search public static final String RESOURCE_PREFIX = "resource:"; // search http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/79a4f9db/agents-common/src/main/java/org/apache/ranger/plugin/util/ServicePolicies.java ---------------------------------------------------------------------- diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/ServicePolicies.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/ServicePolicies.java index 015c081..a1c6397 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/util/ServicePolicies.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/ServicePolicies.java @@ -50,7 +50,7 @@ public class ServicePolicies implements java.io.Serializable { private Date policyUpdateTime; private List<RangerPolicy> policies; private RangerServiceDef serviceDef; - + private TagPolicies tagPolicies; /** * @return the serviceName @@ -124,6 +124,18 @@ public class ServicePolicies implements java.io.Serializable { public void setServiceDef(RangerServiceDef serviceDef) { this.serviceDef = serviceDef; } + /** + * @return the tagPolicies + */ + public ServicePolicies.TagPolicies getTagPolicies() { + return tagPolicies; + } + /** + * @param tagPolicies the tagPolicies to set + */ + public void setTagPolicies(ServicePolicies.TagPolicies tagPolicies) { + this.tagPolicies = tagPolicies; + } @Override public String toString() { @@ -134,6 +146,105 @@ public class ServicePolicies implements java.io.Serializable { .add("policyUpdateTime", policyUpdateTime) .add("policies", policies) .add("serviceDef", serviceDef) + .add("tagPolicies", tagPolicies) .toString(); } + + @JsonAutoDetect(getterVisibility=Visibility.NONE, setterVisibility=Visibility.NONE, fieldVisibility=Visibility.ANY) + @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL ) + @JsonIgnoreProperties(ignoreUnknown=true) + @XmlRootElement + @XmlAccessorType(XmlAccessType.FIELD) + public static class TagPolicies { + private String serviceName; + private Long serviceId; + private Long policyVersion; + private Date policyUpdateTime; + private List<RangerPolicy> policies; + private RangerServiceDef serviceDef; + /** + * @return the serviceName + */ + public String getServiceName() { + return serviceName; + } + /** + * @param serviceName the serviceName to set + */ + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + /** + * @return the serviceId + */ + public Long getServiceId() { + return serviceId; + } + /** + * @param serviceId the serviceId to set + */ + public void setServiceId(Long serviceId) { + this.serviceId = serviceId; + } + /** + * @return the policyVersion + */ + public Long getPolicyVersion() { + return policyVersion; + } + /** + * @param policyVersion the policyVersion to set + */ + public void setPolicyVersion(Long policyVersion) { + this.policyVersion = policyVersion; + } + /** + * @return the policyUpdateTime + */ + public Date getPolicyUpdateTime() { + return policyUpdateTime; + } + /** + * @param policyUpdateTime the policyUpdateTime to set + */ + public void setPolicyUpdateTime(Date policyUpdateTime) { + this.policyUpdateTime = policyUpdateTime; + } + /** + * @return the policies + */ + public List<RangerPolicy> getPolicies() { + return policies; + } + /** + * @param policies the policies to set + */ + public void setPolicies(List<RangerPolicy> policies) { + this.policies = policies; + } + /** + * @return the serviceDef + */ + public RangerServiceDef getServiceDef() { + return serviceDef; + } + /** + * @param serviceDef the serviceDef to set + */ + public void setServiceDef(RangerServiceDef serviceDef) { + this.serviceDef = serviceDef; + } + + @Override + public String toString() { + return Objects.toStringHelper(this.getClass()) + .add("serviceName", serviceName) + .add("serviceId", serviceId) + .add("policyVersion", policyVersion) + .add("policyUpdateTime", policyUpdateTime) + .add("policies", policies) + .add("serviceDef", serviceDef) + .toString(); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/79a4f9db/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 009cbf8..91fafa4 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 @@ -1608,6 +1608,29 @@ public class ServiceDBStore implements ServiceStore { throw new Exception("service-def does not exist. id=" + serviceDbObj.getType()); } + ServicePolicies.TagPolicies tagPolicies = null; + + if(serviceDbObj.getTagService() != null) { + XXService tagServiceDbObj = daoMgr.getXXService().getById(serviceDbObj.getTagService()); + + if(tagServiceDbObj != null) { + RangerServiceDef tagServiceDef = getServiceDef(tagServiceDbObj.getType()); + + if(tagServiceDef == null) { + throw new Exception("service-def does not exist. id=" + tagServiceDbObj.getType()); + } + + tagPolicies = new ServicePolicies.TagPolicies(); + + tagPolicies.setServiceId(tagServiceDbObj.getId()); + tagPolicies.setServiceName(tagServiceDbObj.getName()); + tagPolicies.setPolicyVersion(tagServiceDbObj.getPolicyVersion()); + tagPolicies.setPolicyUpdateTime(tagServiceDbObj.getPolicyUpdateTime()); + tagPolicies.setPolicies(getServicePolicies(tagServiceDbObj.getName(), null)); + tagPolicies.setServiceDef(tagServiceDef); + } + } + List<RangerPolicy> policies = getServicePolicies(serviceName, null); ret = new ServicePolicies(); @@ -1618,6 +1641,7 @@ public class ServiceDBStore implements ServiceStore { ret.setPolicyUpdateTime(serviceDbObj.getPolicyUpdateTime()); ret.setPolicies(policies); ret.setServiceDef(serviceDef); + ret.setTagPolicies(tagPolicies); } if(LOG.isDebugEnabled()) { http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/79a4f9db/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java index 4388a78..57e6ac8 100755 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java @@ -50,6 +50,9 @@ public abstract class RangerServiceServiceBase<T extends XXServiceBase, V extend searchFields.add(new SearchField(SearchFilter.SERVICE_NAME, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL)); searchFields.add(new SearchField(SearchFilter.SERVICE_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); searchFields.add(new SearchField(SearchFilter.IS_ENABLED, "obj.isEnabled", DATA_TYPE.BOOLEAN, SEARCH_TYPE.FULL)); + searchFields.add(new SearchField(SearchFilter.TAG_SERVICE_ID, "obj.tag_service", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); + searchFields.add(new SearchField(SearchFilter.TAG_SERVICE_NAME, "xTagSvc.name", DATA_TYPE.STRING, + SEARCH_TYPE.FULL, "XXServiceBase xTagSvc", "obj.tag_service = xTagSvc.id")); sortFields.add(new SortField(SearchFilter.CREATE_TIME, "obj.createTime")); sortFields.add(new SortField(SearchFilter.UPDATE_TIME, "obj.updateTime"));
