This is an automated email from the ASF dual-hosted git repository.

dineshkumar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new 30330e871 RANGER-5456: Integrate Pending Metrics into Ranger Admin 
Metrics Response (#826)
30330e871 is described below

commit 30330e871f3d84a0e385d89b718b71f9916405db
Author: Rakesh Gupta <[email protected]>
AuthorDate: Wed Mar 18 16:56:22 2026 +0530

    RANGER-5456: Integrate Pending Metrics into Ranger Admin Metrics Response 
(#826)
---
 .../java/org/apache/ranger/db/XXPolicyDao.java     |  6 +++
 .../org/apache/ranger/db/XXUgsyncAuditInfoDao.java |  9 +++++
 .../ranger/metrics/RangerAdminMetricsWrapper.java  |  7 ++++
 .../ranger/metrics/RangerMetricsFetcher.java       | 46 +++++++++++++++++++++-
 ...Group.java => RangerAdminMetricsSourceGds.java} | 11 +++---
 ...ngerAdminMetricsSourcePolicyResourceAccess.java |  2 +
 .../source/RangerAdminMetricsSourceUserGroup.java  |  2 +
 .../main/resources/META-INF/jpa_named_queries.xml  |  8 ++++
 8 files changed, 84 insertions(+), 7 deletions(-)

diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java 
b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
index c9e9dce69..5260f20f6 100755
--- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
@@ -512,4 +512,10 @@ public List<XXPolicy> getProjectPolicies(Long projectId) {
 
         return ret;
     }
+
+    public long getSecurityZonePolicyCount(Long zoneId) {
+        return 
getEntityManager().createNamedQuery("XXPolicy.getSecurityZonePolicyCount", 
Long.class)
+                    .setParameter("zoneId", zoneId)
+                    .getSingleResult();
+    }
 }
diff --git 
a/security-admin/src/main/java/org/apache/ranger/db/XXUgsyncAuditInfoDao.java 
b/security-admin/src/main/java/org/apache/ranger/db/XXUgsyncAuditInfoDao.java
index 175fc7aac..762970c00 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/db/XXUgsyncAuditInfoDao.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/db/XXUgsyncAuditInfoDao.java
@@ -26,6 +26,7 @@
 
 import javax.persistence.NoResultException;
 
+import java.util.Date;
 import java.util.List;
 
 @Service
@@ -69,4 +70,12 @@ public List<XXUgsyncAuditInfo> findBySyncSource(String 
syncSource) {
             return null;
         }
     }
+
+    public Date getUGSyncLastUpdatedTime() {
+        try {
+            return 
getEntityManager().createNamedQuery("XXUGSyncAuditInfo.getUGSyncLastUpdatedTime",
 Date.class).getSingleResult();
+        } catch (NoResultException e) {
+            return null;
+        }
+    }
 }
diff --git 
a/security-admin/src/main/java/org/apache/ranger/metrics/RangerAdminMetricsWrapper.java
 
b/security-admin/src/main/java/org/apache/ranger/metrics/RangerAdminMetricsWrapper.java
index 42ad39efd..5709ab3f2 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/metrics/RangerAdminMetricsWrapper.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/metrics/RangerAdminMetricsWrapper.java
@@ -21,6 +21,7 @@
 
 import 
org.apache.ranger.metrics.source.RangerAdminMetricsSourceContextEnricher;
 import org.apache.ranger.metrics.source.RangerAdminMetricsSourceDenyConditions;
+import org.apache.ranger.metrics.source.RangerAdminMetricsSourceGds;
 import org.apache.ranger.metrics.source.RangerAdminMetricsSourcePolicyMasking;
 import 
org.apache.ranger.metrics.source.RangerAdminMetricsSourcePolicyResourceAccess;
 import 
org.apache.ranger.metrics.source.RangerAdminMetricsSourcePolicyRowFiltering;
@@ -72,6 +73,9 @@ public class RangerAdminMetricsWrapper {
     @Autowired
     private RangerAdminMetricsSourceSummary summarySource;
 
+    @Autowired
+    private RangerAdminMetricsSourceGds gdsSource;
+
     @PostConstruct
     public void init() {
         LOG.info("===>> RangerAdminMetricsWrapper.init()");
@@ -100,6 +104,9 @@ public void init() {
             //Source: Summary
             sourceWrappers.add(new 
RangerMetricsSourceWrapper("RangerAdminMetricsSourceSummary", "Summary in 
Ranger Admin", context, summarySource));
 
+            //Source: Gds
+            sourceWrappers.add(new 
RangerMetricsSourceWrapper("RangerAdminMetricsSourceGds", "Gds in Ranger 
Admin", context, gdsSource));
+
             rangerMetricsSystemWrapper.init(context, sourceWrappers, 
Collections.emptyList());
         } catch (Exception e) {
             LOG.error("RangerAdminMetricsWrapper: Exception occured while 
initializing Metric Starter:", e);
diff --git 
a/security-admin/src/main/java/org/apache/ranger/metrics/RangerMetricsFetcher.java
 
b/security-admin/src/main/java/org/apache/ranger/metrics/RangerMetricsFetcher.java
index d8ec1426b..c01de6012 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/metrics/RangerMetricsFetcher.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/metrics/RangerMetricsFetcher.java
@@ -23,6 +23,7 @@
 import org.apache.ranger.biz.XUserMgr;
 import org.apache.ranger.common.RangerConstants;
 import org.apache.ranger.db.RangerDaoManager;
+import org.apache.ranger.plugin.model.RangerSecurityZone;
 import org.apache.ranger.service.XGroupService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,6 +32,7 @@
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -94,7 +96,6 @@ public Map<String, Long> getUserMetrics() {
 
         ret.put("Total", total);
         summaryReusable.put("TotalUsers", total);
-        summaryReusable.put("TotalRoles", (ret.size() - 1L));
 
         return ret;
     }
@@ -173,6 +174,12 @@ public Map<String, Long> getSummary() {
         //policies
         ret.put("TotalPolicies", 
summaryPolicy.values().stream().mapToLong(Long::longValue).sum());
 
+        //roles
+        ret.put("TotalRoles", daoMgr.getXXRole().getAllCount());
+
+        //securityzones (exclude the default "Unzoned" zone)
+        ret.put("TotalSecurityZones", Math.max(0, 
daoMgr.getXXSecurityZoneDao().getAllCount() - 1));
+
         //x_trx_log_v2
         ret.put("TotalAdminAudits", daoMgr.getXXTrxLogV2().getAllCount());
 
@@ -187,4 +194,41 @@ public Map<String, Long> getSummary() {
 
         return ret;
     }
+
+    public Map<String, Long> getGdsMetrics() {
+        Map<String, Long> ret   = new HashMap<>();
+
+        //x_gds_dataset
+        ret.put("Dataset", daoMgr.getXXGdsDataset().getAllCount());
+
+        //x_gds_data_share
+        ret.put("DataShare", daoMgr.getXXGdsDataShare().getAllCount());
+
+        //x_gds_shared_resource
+        ret.put("SharedResource", 
daoMgr.getXXGdsSharedResource().getAllCount());
+
+        //x_gds_project
+        ret.put("Project", daoMgr.getXXGdsProject().getAllCount());
+
+        return ret;
+    }
+
+    public Map<String, Long> getSecurityZonePolicyMetrics() {
+        Map<String, Long> ret   = new HashMap<>();
+
+        //securityzonepolicy
+        ret.put("Count", 
daoMgr.getXXPolicy().getSecurityZonePolicyCount(RangerSecurityZone.RANGER_UNZONED_SECURITY_ZONE_ID));
+
+        return ret;
+    }
+
+    public Map<String, Long> getUserSyncMetrics() {
+        Map<String, Long> ret = new HashMap<>();
+
+        Date lastUpdated = 
daoMgr.getXXUgsyncAuditInfo().getUGSyncLastUpdatedTime();
+
+        ret.put("SyncTime", lastUpdated != null ? lastUpdated.getTime() : 0L);
+
+        return ret;
+    }
 }
diff --git 
a/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
 
b/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceGds.java
similarity index 75%
copy from 
security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
copy to 
security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceGds.java
index d2d3b9831..1fc75d6fc 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceGds.java
@@ -26,19 +26,18 @@
 import java.util.Map;
 
 @Component
-public class RangerAdminMetricsSourceUserGroup extends 
RangerAdminMetricsSourceBase {
+public class RangerAdminMetricsSourceGds extends RangerAdminMetricsSourceBase {
     @Autowired
     private RangerMetricsFetcher rangerMetricsFetcher;
 
-    public RangerAdminMetricsSourceUserGroup() {
-        super("admin", "UserGroup");
+    public RangerAdminMetricsSourceGds() {
+        super("admin", "Gds");
     }
 
     @Override
     protected void refresh() {
-        Map<String, Long> userGroupMetrics = 
rangerMetricsFetcher.getUserMetrics();
+        Map<String, Long> gdsMetrics = rangerMetricsFetcher.getGdsMetrics();
 
-        addMetricEntries("UserCount", userGroupMetrics);
-        addMetricEntry("GroupCount", "", rangerMetricsFetcher.getGroupCount());
+        addMetricEntries("GdsCount", gdsMetrics);
     }
 }
diff --git 
a/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourcePolicyResourceAccess.java
 
b/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourcePolicyResourceAccess.java
index 7d66a0189..b475a4f1c 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourcePolicyResourceAccess.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourcePolicyResourceAccess.java
@@ -38,7 +38,9 @@ public RangerAdminMetricsSourcePolicyResourceAccess() {
     @Override
     protected void refresh() {
         Map<String, Long> accessPolicyMetrics = 
rangerMetricsFetcher.getPolicyMetrics(RangerPolicy.POLICY_TYPE_ACCESS);
+        Map<String, Long> securityZonePolicyMetrics = 
rangerMetricsFetcher.getSecurityZonePolicyMetrics();
 
         addMetricEntries("ResourceAccessCount", accessPolicyMetrics);
+        addMetricEntries("SecurityZonePolicy", securityZonePolicyMetrics);
     }
 }
diff --git 
a/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
 
b/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
index d2d3b9831..73244cc0c 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
@@ -37,8 +37,10 @@ public RangerAdminMetricsSourceUserGroup() {
     @Override
     protected void refresh() {
         Map<String, Long> userGroupMetrics = 
rangerMetricsFetcher.getUserMetrics();
+        Map<String, Long> userSyncMetrics = 
rangerMetricsFetcher.getUserSyncMetrics();
 
         addMetricEntries("UserCount", userGroupMetrics);
         addMetricEntry("GroupCount", "", rangerMetricsFetcher.getGroupCount());
+        addMetricEntries("UserSyncLastUpdated", userSyncMetrics);
     }
 }
diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml 
b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
index 7931bb1ab..7ae05973d 100755
--- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
+++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
@@ -1707,6 +1707,10 @@
                </query>
        </named-query>
 
+       <named-query name="XXUGSyncAuditInfo.getUGSyncLastUpdatedTime">
+               <query>SELECT MAX(obj.eventTime) from XXUgsyncAuditInfo 
obj</query>
+       </named-query>
+
        <!-- SecurityZone  -->
     <named-query name="XXSecurityZone.findByZoneId">
         <query>
@@ -2204,6 +2208,10 @@
                        WHERE xsd.name = :serviceType</query>
        </named-query>
 
+       <named-query name="XXPolicy.getSecurityZonePolicyCount">
+               <query>SELECT count(obj.id) FROM XXPolicy obj where obj.zoneId 
IS NOT NULL AND obj.zoneId != :zoneId</query>
+       </named-query>
+
        <named-query name="XXGdsDataset.findByGuid">
                <query>select obj from XXGdsDataset obj where obj.guid = 
:guid</query>
        </named-query>

Reply via email to