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

Reply via email to