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 87b7bb96c RANGER-4697: increment GDS version of services when a 
security zone is updated
87b7bb96c is described below

commit 87b7bb96c9653b6bae3e35804083ed066909f59a
Author: Anand Nadar <[email protected]>
AuthorDate: Wed Feb 14 13:29:46 2024 -0800

    RANGER-4697: increment GDS version of services when a security zone is 
updated
    
    Signed-off-by: Madhan Neethiraj <[email protected]>
---
 .../org/apache/ranger/plugin/store/GdsStore.java   |  2 +-
 .../java/org/apache/ranger/biz/GdsDBStore.java     | 34 +++++++++++++++++-----
 .../service/RangerSecurityZoneServiceService.java  |  2 +-
 3 files changed, 28 insertions(+), 10 deletions(-)

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
old mode 100644
new mode 100755
index 0dad263d9..976fa4989
--- 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
@@ -137,5 +137,5 @@ public interface GdsStore {
 
     void deleteAllGdsObjectsForSecurityZone(Long zoneId) throws Exception;
 
-    void deleteAllGdsObjectsForServicesInSecurityZone(Collection<String> 
serviceNames, Long zoneId) throws Exception;
+    void onSecurityZoneUpdate(Long zoneId, Collection<String> updatedServices, 
Collection<String> removedServices) 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 4fa9c48df..a1a2f9920 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
@@ -1230,19 +1230,37 @@ public class GdsDBStore extends AbstractGdsStore {
     }
 
     @Override
-    public void 
deleteAllGdsObjectsForServicesInSecurityZone(Collection<String> serviceNames, 
Long zoneId) {
-        LOG.debug("==> deleteAllGdsObjectsForServicesInSecurityZone({}, {})", 
serviceNames, zoneId);
+    public void onSecurityZoneUpdate(Long zoneId, Collection<String> 
updatedServices, Collection<String> removedServices) {
+        LOG.debug("==> onSecurityZoneUpdate({}, {}, {})", zoneId, 
updatedServices, removedServices);
 
-        if (zoneId != null && CollectionUtils.isNotEmpty(serviceNames)) {
-            XXServiceDao      serviceDao   = daoMgr.getXXService();
-            XXGdsDataShareDao dataShareDao = daoMgr.getXXGdsDataShare();
+        XXServiceDao      serviceDao   = daoMgr.getXXService();
+        XXGdsDataShareDao dataShareDao = daoMgr.getXXGdsDataShare();
 
-            for (String serviceName : serviceNames) {
+        if (zoneId != null && CollectionUtils.isNotEmpty(updatedServices)) {
+            for (String serviceName : updatedServices) {
                 Long serviceId = serviceDao.findIdByName(serviceName);
 
                 if (serviceId == null) {
-                    LOG.warn("deleteAllGdsObjectsForServicesInSecurityZone(): 
invalid service name={}. Ignored", serviceName);
+                    LOG.warn("onSecurityZoneUpdate(): updatedServices invalid 
service name={}. Ignored", serviceName);
+                    continue;
+                }
+
+                List<XXGdsDataShare> dataShares = 
dataShareDao.findByServiceIdAndZoneId(serviceId, zoneId);
+
+                if (CollectionUtils.isEmpty(dataShares)) {
+                    continue;
+                }
+
+                updateGdsVersionForService(serviceId);
+            }
+        }
 
+        if (zoneId != null && CollectionUtils.isNotEmpty(removedServices)) {
+            for (String serviceName : removedServices) {
+                Long serviceId = serviceDao.findIdByName(serviceName);
+
+                if (serviceId == null) {
+                    LOG.warn("onSecurityZoneUpdate(): removedServices invalid 
service name={}. Ignored", serviceName);
                     continue;
                 }
 
@@ -1262,7 +1280,7 @@ public class GdsDBStore extends AbstractGdsStore {
             }
         }
 
-        LOG.debug("<== deleteAllGdsObjectsForServicesInSecurityZone({}, {})", 
serviceNames, zoneId);
+        LOG.debug("<== onSecurityZoneUpdate({}, {}, {})", zoneId, 
updatedServices, removedServices);
     }
 
     public ServiceGdsInfo getGdsInfoIfUpdated(String serviceName, Long 
lastKnownVersion) throws Exception {
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerSecurityZoneServiceService.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerSecurityZoneServiceService.java
old mode 100644
new mode 100755
index 25567c727..a6cb2ae74
--- 
a/security-admin/src/main/java/org/apache/ranger/service/RangerSecurityZoneServiceService.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerSecurityZoneServiceService.java
@@ -231,7 +231,7 @@ public class RangerSecurityZoneServiceService extends 
RangerSecurityZoneServiceB
 
             serviceDBStore.deleteZonePolicies(deletedTagServiceNames, 
ret.getId());
 
-            
gdsStore.deleteAllGdsObjectsForServicesInSecurityZone(deletedServiceNames, 
ret.getId());
+            gdsStore.onSecurityZoneUpdate(ret.getId(), updatedServiceNames, 
deletedServiceNames);
 
             oldServiceNames.addAll(updatedServiceNames);
             updateServiceInfos(oldServiceNames);

Reply via email to