This is an automated email from the ASF dual-hosted git repository.
madhan 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 12a1bf51c RANGER-4634: on service deletion, delete associated GDS
objects as well
12a1bf51c is described below
commit 12a1bf51c6857c9105228ac933a801e6388fbf73
Author: prashant <[email protected]>
AuthorDate: Mon Jan 8 12:45:01 2024 +0530
RANGER-4634: on service deletion, delete associated GDS objects as well
Signed-off-by: Madhan Neethiraj <[email protected]>
---
.../org/apache/ranger/plugin/store/GdsStore.java | 2 ++
.../java/org/apache/ranger/biz/GdsDBStore.java | 25 ++++++++++++++++++++++
.../java/org/apache/ranger/rest/ServiceREST.java | 9 +++++++-
3 files changed, 35 insertions(+), 1 deletion(-)
diff --git
a/agents-common/src/main/java/org/apache/ranger/plugin/store/GdsStore.java
b/agents-common/src/main/java/org/apache/ranger/plugin/store/GdsStore.java
index 63a6f91b7..afbce78a1 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/store/GdsStore.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/GdsStore.java
@@ -131,4 +131,6 @@ public interface GdsStore {
RangerDatasetInProject getDatasetInProject(Long datasetInProjectId) throws
Exception;
PList<RangerDatasetInProject> searchDatasetInProjects(SearchFilter filter)
throws Exception;
+
+ void deleteAllGdsObjectsForService(Long serviceId) throws Exception;
}
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 d9c056a8d..701165f9d 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
@@ -1190,6 +1190,31 @@ public class GdsDBStore extends AbstractGdsStore {
return ret;
}
+ @Override
+ public void deleteAllGdsObjectsForService(Long serviceId) throws Exception
{
+ LOG.debug("==> deleteAllGdsObjectsForService({})", serviceId);
+
+ List<XXGdsDataShare> dataShares =
daoMgr.getXXGdsDataShare().findByServiceId(serviceId);
+
+ if (CollectionUtils.isNotEmpty(dataShares)) {
+ LOG.info("Deleting {} dataShares associated with service id={}",
dataShares.size(), serviceId);
+
+ dataShares.forEach(dataShare -> {
+ try {
+ LOG.info("Deleting dataShare id={}, name={}",
dataShare.getId(), dataShare.getName());
+
+ deleteDataShare(dataShare.getId(), true);
+ } catch (Exception excp) {
+ LOG.error("failed to delete dataShare id={}, name={}",
dataShare.getId(), dataShare.getName(), excp);
+
+ throw excp;
+ }
+ });
+ }
+
+ LOG.debug("<== deleteAllGdsObjectsForService({})", serviceId);
+ }
+
public ServiceGdsInfo getGdsInfoIfUpdated(String serviceName, Long
lastKnownVersion) throws Exception {
LOG.debug("==> GdsDBStore.getGdsInfoIfUpdated({}, {})", serviceName ,
lastKnownVersion);
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 49386d08c..e7e0abbc8 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
@@ -54,6 +54,7 @@ import org.apache.ranger.admin.client.datatype.RESTResponse;
import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.authorization.utils.StringUtil;
import org.apache.ranger.biz.AssetMgr;
+import org.apache.ranger.biz.GdsDBStore;
import org.apache.ranger.biz.PolicyRefUpdater;
import org.apache.ranger.biz.RangerPolicyAdmin;
import org.apache.ranger.biz.RangerBizUtil;
@@ -239,9 +240,12 @@ public class ServiceREST {
@Autowired
TagDBStore tagStore;
+ @Autowired
+ GdsDBStore gdsStore;
+
@Autowired
RangerTransactionSynchronizationAdapter
rangerTransactionSynchronizationAdapter;
-
+
private RangerPolicyEngineOptions delegateAdminOptions;
private RangerPolicyEngineOptions policySearchAdminOptions;
private RangerPolicyEngineOptions defaultAdminOptions;
@@ -4643,7 +4647,10 @@ public class ServiceREST {
bizUtil.hasKMSPermissions("Service", xxServiceDef.getImplclassname());
bizUtil.blockAuditorRoleUser();
}
+
tagStore.deleteAllTagObjectsForService(service.getName());
+
gdsStore.deleteAllGdsObjectsForService(id);
+
deletedServiceName = service.getName();
svcStore.deleteService(id);