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