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");
 

Reply via email to