You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2023/12/19 17:18:36 UTC
(ranger) 07/07: RANGER-4617: updated DatasetSummary to include ACL principal counts
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 <pr...@gmail.com>
AuthorDate: Tue Dec 19 15:08:58 2023 +0530
RANGER-4617: updated DatasetSummary to include ACL principal counts
Signed-off-by: Madhan Neethiraj <ma...@apache.org>
---
.../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");