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 919e2d6565..b460d07621 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 @@ -1506,6 +1506,13 @@ 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 dc7f90881e..169f078af4 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 @@ -2852,6 +2852,48 @@ public RangerPluginInfoList getPluginsInfo(@Context HttpServletRequest request) 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 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 void blockIfGdsService(String serviceName) { String serviceType = daoManager.getXXServiceDef().findServiceDefTypeByServiceName(serviceName); 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 08fccdb7ef..d489bb56d5 100755 --- 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 @@ -87,6 +87,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 1159207204..1c4ee11837 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 @@ -376,6 +376,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);