This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch RANGER-3923
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/RANGER-3923 by this push:
     new 97b7f669e RANGER-4267: moved GDS service creation to init, instead of 
at resource services creation
97b7f669e is described below

commit 97b7f669e9bc3a5035a58ebc060325a4fdaf970a
Author: Madhan Neethiraj <[email protected]>
AuthorDate: Tue Dec 26 00:28:34 2023 -0800

    RANGER-4267: moved GDS service creation to init, instead of at resource 
services creation
---
 .../plugin/store/EmbeddedServiceDefsUtil.java      | 38 ++++++++++++++++++++++
 .../java/org/apache/ranger/rest/ServiceREST.java   | 18 ----------
 2 files changed, 38 insertions(+), 18 deletions(-)

diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/store/EmbeddedServiceDefsUtil.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/store/EmbeddedServiceDefsUtil.java
index 75be1e70e..92ce183bb 100755
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/store/EmbeddedServiceDefsUtil.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/store/EmbeddedServiceDefsUtil.java
@@ -27,7 +27,9 @@ import java.util.Set;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
+import org.apache.ranger.plugin.model.RangerService;
 import org.apache.ranger.plugin.model.RangerServiceDef;
+import org.apache.ranger.plugin.policyengine.gds.GdsPolicyEngine;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -180,6 +182,8 @@ public class EmbeddedServiceDefsUtil {
 
                        // Ensure that tag service def is updated with access 
types of all service defs
                        store.updateTagServiceDefForAccessTypes();
+
+                       getOrCreateService(store, EMBEDDED_SERVICEDEF_GDS_NAME, 
GdsPolicyEngine.GDS_SERVICE_NAME);
                } catch(Throwable excp) {
                        LOG.error("EmbeddedServiceDefsUtil.init(): failed", 
excp);
                }
@@ -377,4 +381,38 @@ public class EmbeddedServiceDefsUtil {
                }
                return supportedServiceDef;
        }
+
+       private RangerService getOrCreateService(ServiceStore store, String 
serviceType, String serviceName) {
+               if(LOG.isDebugEnabled()) {
+                       LOG.debug("==> 
EmbeddedServiceDefsUtil.getOrCreateService(" + serviceType + ", " + serviceName 
+ ")");
+               }
+
+               RangerService ret = null;
+
+               try {
+                       ret = store.getServiceByName(serviceName);
+
+                       if(ret == null) {
+                               LOG.info("Creating service " + serviceName + " 
of type " + serviceType);
+
+                               ret = new RangerService();
+
+                               ret.setName(serviceName);
+                               ret.setDisplayName(serviceName);
+                               ret.setType(serviceType);
+
+                               ret = store.createService(ret);
+
+                               LOG.info("Created service " + serviceName + ". 
ID=" + (ret != null ? ret.getId() : null));
+                       }
+               } catch(Exception excp) {
+                       
LOG.error("EmbeddedServiceDefsUtil.getOrCreateService(): failed to load/create 
service " + serviceName, excp);
+               }
+
+               if(LOG.isDebugEnabled()) {
+                       LOG.debug("<== 
EmbeddedServiceDefsUtil.getOrCreateService(" + serviceType + ", " + serviceName 
+ "): " + ret);
+               }
+
+               return ret;
+       }
 }
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 a14c7a910..49386d08c 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
@@ -4329,17 +4329,7 @@ public class ServiceREST {
                        }
                };
 
-               Runnable createGdsServiceTask = new Runnable() {
-                       @Override
-                       public void run() {
-                               final LinkedServiceCreator creator = new 
LinkedServiceCreator(resourceService.getName(), EMBEDDED_SERVICEDEF_GDS_NAME, 
ServiceDBStore.GDS_SERVICE_NAME, true, false);
-
-                               creator.doCreateAndLinkService();
-                       }
-               };
-
                
rangerTransactionSynchronizationAdapter.executeOnTransactionCommit(createAndLinkTagServiceTask);
-               
rangerTransactionSynchronizationAdapter.executeOnTransactionCommit(createGdsServiceTask);
 
                if (LOG.isDebugEnabled()) {
                        LOG.debug("<== 
createOrGetLinkedServices(resourceService=" + resourceService.getName() + ")");
@@ -4363,14 +4353,6 @@ public class ServiceREST {
                        this.isAutoLink          = config.getBoolean("ranger." 
+ linkedServiceType + "service.auto.link", true);
                }
 
-               LinkedServiceCreator(@Nonnull String resourceServiceName, 
@Nonnull String linkedServiceType, String linkedServiceName, boolean 
autoCreate, boolean autoLink) {
-                       this.resourceServiceName = resourceServiceName;
-                       this.linkedServiceType   = linkedServiceType;
-                       this.linkedServiceName   = linkedServiceName;
-                       this.isAutoCreate        = autoCreate;
-                       this.isAutoLink          = autoLink;
-               }
-
                void doCreateAndLinkService() {
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("==> doCreateAndLinkService()");

Reply via email to