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

madhan pushed a commit to branch ranger-2.8
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit f6a566bcfff7e9ed8f5fa14986dbc716119daea8
Author: PradeeP AgrawaL <[email protected]>
AuthorDate: Fri Oct 3 12:01:17 2025 +0530

    RANGER-5259: Add REST API to delete stale entries of Plugin info (#683)
    
    (cherry picked from commit d97fa296951e51c358117d5b710c808735ede9db)
---
 .../main/java/org/apache/ranger/biz/AssetMgr.java  |  8 +++++
 .../java/org/apache/ranger/rest/ServiceREST.java   | 42 ++++++++++++++++++++++
 .../ranger/security/context/RangerAPIList.java     |  1 +
 .../ranger/security/context/RangerAPIMapping.java  |  1 +
 4 files changed, 52 insertions(+)

diff --git a/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java 
b/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
index f1eac0865..a09c64ef3 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
@@ -1023,6 +1023,14 @@ private void doDeleteXXPluginInfo(RangerPluginInfo 
pluginInfo) {
                }
        }
 
+
+       public void doDeleteXXPluginInfo(Long id) {
+               XXPluginInfo xObj = 
rangerDaoManager.getXXPluginInfo().getById(id);
+               if (xObj != null) {
+                       rangerDaoManager.getXXPluginInfo().remove(xObj.getId());
+               }
+       }
+
        private String getRemoteAddress(final HttpServletRequest request) {
                String ret = null;
 
diff --git 
a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java 
b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
index fbe3463c1..8fe2552cb 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
@@ -3969,6 +3969,48 @@ public List<RangerPurgeResult> 
purgeRecords(@QueryParam("type") String recordTyp
                return ret;
        }
 
+       @DELETE
+       @Path("/plugins/info")
+       @Produces("application/json")
+       @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+       public void deletePluginsInfo(@Context HttpServletRequest request) {
+               LOG.debug("==> ServiceREST.deletePluginsInfo()");
+
+               RangerPluginInfoList ret    = null;
+               SearchFilter         filter = 
searchUtil.getSearchFilter(request, pluginInfoService.getSortFields());
+
+               try {
+                       PList<RangerPluginInfo> paginatedPluginsInfo = 
pluginInfoService.searchRangerPluginInfo(filter);
+                       if (paginatedPluginsInfo != null) {
+                               for (RangerPluginInfo rangerPluginInfo : 
paginatedPluginsInfo.getList()) {
+                                       if (rangerPluginInfo != null) {
+                                               
deletePluginsInfo(rangerPluginInfo.getId());
+                                               LOG.debug("Deleted 
rangerPluginInfo:[{}]", rangerPluginInfo);
+                                       }
+                               }
+                       }
+               } catch (WebApplicationException excp) {
+                       throw excp;
+               } catch (Throwable excp) {
+                       LOG.error("deletePluginsInfo() failed", excp);
+
+                       throw 
restErrorUtil.createRESTException(excp.getMessage());
+               }
+
+               LOG.debug("<== ServiceREST.deletePluginsInfo()");
+       }
+
+       @DELETE
+       @Path("/plugins/info/{id}")
+       @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+       public void deletePluginsInfo(@PathParam("id") Long id) {
+               LOG.debug("==> ServiceREST.deletePluginsInfo({})", id);
+
+               assetMgr.doDeleteXXPluginInfo(id);
+
+               LOG.debug("<== ServiceREST.deletePluginsInfo() - [id={}]", id);
+       }
+
        public List<RangerPolicy> getBulkPolicies(@Context HttpServletRequest 
request) {
                LOG.debug("==> ServiceREST.getBulkPolicies()");
 
diff --git 
a/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIList.java
 
b/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIList.java
index dad047c93..7c901627b 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIList.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIList.java
@@ -88,6 +88,7 @@ public class RangerAPIList {
        public static final String GET_POLICY_VERSION_LIST = 
"ServiceREST.getPolicyVersionList";
        public static final String GET_POLICY_FOR_VERSION_NO = 
"ServiceREST.getPolicyForVersionNumber";
        public static final String GET_PLUGINS_INFO = 
"ServiceREST.getPluginsInfo";
+       public static final String DELETE_PLUGINS_INFO = 
"ServiceREST.deletePluginsInfo";
        public static final String GET_METRICS_BY_TYPE = 
"ServiceREST.getMetricByType";
        public static final String DELETE_CLUSTER_SERVICES = 
"ServiceREST.deleteClusterServices";
 
diff --git 
a/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIMapping.java
 
b/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIMapping.java
index cbfcabf6e..2558e5246 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIMapping.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/security/context/RangerAPIMapping.java
@@ -367,6 +367,7 @@ private void mapAuditWithAPIs() {
                
apiAssociatedWithAudit.add(RangerAPIList.GET_POLICY_FROM_EVENT_TIME);
                
apiAssociatedWithAudit.add(RangerAPIList.GET_POLICY_VERSION_LIST);
                apiAssociatedWithAudit.add(RangerAPIList.GET_PLUGINS_INFO);
+               apiAssociatedWithAudit.add(RangerAPIList.DELETE_PLUGINS_INFO);
                apiAssociatedWithAudit.add(RangerAPIList.GET_SERVICE);
                apiAssociatedWithAudit.add(RangerAPIList.GET_SERVICE_BY_NAME);
                apiAssociatedWithAudit.add(RangerAPIList.GET_SERVICE_DEF);

Reply via email to