This is an automated email from the ASF dual-hosted git repository. madhan pushed a commit to branch RANGER-3923 in repository https://gitbox.apache.org/repos/asf/ranger.git
commit ebfc4c11f33f64deab11ecbe3fc6c75733196a59 Author: prashant <[email protected]> AuthorDate: Tue Dec 19 15:08:58 2023 +0530 RANGER-4617: updated DatasetSummary to include ACL principal counts Signed-off-by: Madhan Neethiraj <[email protected]> --- .../org/apache/ranger/plugin/model/RangerGds.java | 10 ++++++++ .../java/org/apache/ranger/biz/GdsDBStore.java | 28 ++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java index d10a70f23..e4943d740 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java @@ -552,6 +552,7 @@ public class RangerGds { private String description; private GdsPermission permissionForCaller; private Map<PrincipalType, Integer> principalsCount; + private Map<PrincipalType, Integer> aclPrincipalsCount; private Long projectsCount; private Long totalResourceCount; private List<DataShareInDatasetSummary> dataShares; @@ -610,6 +611,14 @@ public class RangerGds { this.dataShares = dataShares; } + public Map<PrincipalType, Integer> getAclPrincipalsCount() { + return aclPrincipalsCount; + } + + public void setAclPrincipalsCount(Map<PrincipalType, Integer> aclPrincipalsCount) { + this.aclPrincipalsCount = aclPrincipalsCount; + } + @Override public String toString() { return toString(new StringBuilder()).toString(); @@ -625,6 +634,7 @@ public class RangerGds { .append("permissionForCaller={").append(permissionForCaller).append("} ") .append("principalsCount={").append(principalsCount).append("} ") .append("projectsCount={").append(projectsCount).append("} ") + .append("aclPrincipalsCount={").append(aclPrincipalsCount).append("} ") .append("totalResourceCount={").append(totalResourceCount).append("} ") .append("dataShares={").append(dataShares).append("} ") .append("}"); diff --git a/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java index bf348e4ed..e38d0d15c 100755 --- a/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java @@ -1282,6 +1282,7 @@ public class GdsDBStore extends AbstractGdsStore { datasetSummary.setProjectsCount(getDIPCountForDataset(dataset.getId())); datasetSummary.setPrincipalsCount(getPrincipalCountForDataset(dataset)); + datasetSummary.setAclPrincipalsCount(getAclPrincipalCountForDataset(dataset)); SearchFilter filter = new SearchFilter(SearchFilter.DATASET_ID, dataset.getId().toString()); RangerDataShareList dataShares = dataShareService.searchDataShares(filter); @@ -1376,6 +1377,33 @@ public class GdsDBStore extends AbstractGdsStore { return ret; } + private Map<PrincipalType, Integer> getAclPrincipalCountForDataset(RangerDataset dataset) { + Map<PrincipalType, Integer> ret = new HashMap<>(); + + ret.put(PrincipalType.USER, 0); + ret.put(PrincipalType.GROUP, 0); + ret.put(PrincipalType.ROLE, 0); + + RangerGdsObjectACL acl = dataset.getAcl(); + + if (acl != null) { + if (acl.getUsers() != null) { + ret.put(PrincipalType.USER, acl.getUsers().size()); + } + + if (acl.getGroups() != null) { + ret.put(PrincipalType.GROUP, acl.getGroups().size()); + } + + if (acl.getRoles() != null) { + ret.put(PrincipalType.ROLE, acl.getRoles().size()); + } + } + + return ret; + } + + private PList<RangerProject> getUnscrubbedProjects(SearchFilter filter) { filter.setParam(SearchFilter.RETRIEVE_ALL_PAGES, "true");
