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

bbende pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/master by this push:
     new 2b83b7d  NIFI-6223 Expose Cluster Node Type to Controller Services
2b83b7d is described below

commit 2b83b7d9e8a090f42825ef6569d9595c95c28a33
Author: Peter Wicks <[email protected]>
AuthorDate: Thu Apr 18 15:04:56 2019 +0000

    NIFI-6223 Expose Cluster Node Type to Controller Services
    
    NIFI-6223 Enhance Mock Controller Service to allow specifying node type
    
    This closes #3444.
    
    Signed-off-by: Bryan Bende <[email protected]>
---
 .../nifi/controller/AbstractControllerService.java | 10 +++++++
 .../ControllerServiceInitializationContext.java    |  6 +++++
 ...tionControllerServiceInitializationContext.java |  6 +++++
 ...MockControllerServiceInitializationContext.java | 31 +++++++++++++++++++++-
 .../apache/nifi/controller/ExtensionBuilder.java   |  2 +-
 ...dardControllerServiceInitializationContext.java | 10 ++++++-
 ...MockControllerServiceInitializationContext.java |  6 +++++
 .../lookup/script/BaseScriptedLookupService.java   |  6 +++++
 8 files changed, 74 insertions(+), 3 deletions(-)

diff --git 
a/nifi-api/src/main/java/org/apache/nifi/controller/AbstractControllerService.java
 
b/nifi-api/src/main/java/org/apache/nifi/controller/AbstractControllerService.java
index 95f0583..30773ee 100644
--- 
a/nifi-api/src/main/java/org/apache/nifi/controller/AbstractControllerService.java
+++ 
b/nifi-api/src/main/java/org/apache/nifi/controller/AbstractControllerService.java
@@ -33,6 +33,7 @@ public abstract class AbstractControllerService extends 
AbstractConfigurableComp
     private StateManager stateManager;
     private volatile ConfigurationContext configurationContext;
     private volatile boolean enabled = false;
+    private NodeTypeProvider nodeTypeProvider;
 
     @Override
     public final void initialize(final ControllerServiceInitializationContext 
context) throws InitializationException {
@@ -40,6 +41,7 @@ public abstract class AbstractControllerService extends 
AbstractConfigurableComp
         serviceLookup = context.getControllerServiceLookup();
         logger = context.getLogger();
         stateManager = context.getStateManager();
+        nodeTypeProvider = context.getNodeTypeProvider();
         init(context);
     }
 
@@ -57,6 +59,14 @@ public abstract class AbstractControllerService extends 
AbstractConfigurableComp
     }
 
     /**
+     * @return the {@link NodeTypeProvider} that was passed to the
+     * {@link #init(ControllerServiceInitializationContext)} method
+     */
+    protected final NodeTypeProvider getNodeTypeProvider() {
+        return nodeTypeProvider;
+    }
+
+    /**
      * Provides a mechanism by which subclasses can perform initialization of
      * the Controller Service before it is scheduled to be run
      *
diff --git 
a/nifi-api/src/main/java/org/apache/nifi/controller/ControllerServiceInitializationContext.java
 
b/nifi-api/src/main/java/org/apache/nifi/controller/ControllerServiceInitializationContext.java
index f6ac9e7..c778869 100644
--- 
a/nifi-api/src/main/java/org/apache/nifi/controller/ControllerServiceInitializationContext.java
+++ 
b/nifi-api/src/main/java/org/apache/nifi/controller/ControllerServiceInitializationContext.java
@@ -44,4 +44,10 @@ public interface ControllerServiceInitializationContext 
extends KerberosContext
      * @return the StateManager that can be used to store and retrieve state 
for this component
      */
     StateManager getStateManager();
+
+    /**
+     * @return the {@link NodeTypeProvider} which can be used to detect the 
node
+     * type of this NiFi instance.
+     */
+    NodeTypeProvider getNodeTypeProvider();
 }
diff --git 
a/nifi-api/src/main/java/org/apache/nifi/documentation/init/DocumentationControllerServiceInitializationContext.java
 
b/nifi-api/src/main/java/org/apache/nifi/documentation/init/DocumentationControllerServiceInitializationContext.java
index cdf1e8d..68637aa 100644
--- 
a/nifi-api/src/main/java/org/apache/nifi/documentation/init/DocumentationControllerServiceInitializationContext.java
+++ 
b/nifi-api/src/main/java/org/apache/nifi/documentation/init/DocumentationControllerServiceInitializationContext.java
@@ -19,6 +19,7 @@ package org.apache.nifi.documentation.init;
 import org.apache.nifi.components.state.StateManager;
 import org.apache.nifi.controller.ControllerServiceInitializationContext;
 import org.apache.nifi.controller.ControllerServiceLookup;
+import org.apache.nifi.controller.NodeTypeProvider;
 import org.apache.nifi.logging.ComponentLog;
 
 import java.io.File;
@@ -50,6 +51,11 @@ public class 
DocumentationControllerServiceInitializationContext implements Cont
     }
 
     @Override
+    public NodeTypeProvider getNodeTypeProvider() {
+        return null;
+    }
+
+    @Override
     public String getKerberosServicePrincipal() {
         return null;
     }
diff --git 
a/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceInitializationContext.java
 
b/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceInitializationContext.java
index ffa3546..e02eaba 100644
--- 
a/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceInitializationContext.java
+++ 
b/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceInitializationContext.java
@@ -21,14 +21,17 @@ import org.apache.nifi.components.state.StateManager;
 import org.apache.nifi.controller.ControllerService;
 import org.apache.nifi.controller.ControllerServiceInitializationContext;
 import org.apache.nifi.controller.ControllerServiceLookup;
+import org.apache.nifi.controller.NodeTypeProvider;
 import org.apache.nifi.logging.ComponentLog;
 import org.apache.nifi.state.MockStateManager;
 
-public class MockControllerServiceInitializationContext extends 
MockControllerServiceLookup implements ControllerServiceInitializationContext, 
ControllerServiceLookup {
+public class MockControllerServiceInitializationContext extends 
MockControllerServiceLookup implements ControllerServiceInitializationContext, 
ControllerServiceLookup, NodeTypeProvider {
 
     private final String identifier;
     private final ComponentLog logger;
     private final StateManager stateManager;
+    private volatile boolean isClustered;
+    private volatile boolean isPrimaryNode;
 
     public MockControllerServiceInitializationContext(final ControllerService 
controllerService, final String identifier) {
         this(controllerService, identifier, new 
MockStateManager(controllerService));
@@ -71,6 +74,11 @@ public class MockControllerServiceInitializationContext 
extends MockControllerSe
     }
 
     @Override
+    public NodeTypeProvider getNodeTypeProvider() {
+        return this;
+    }
+
+    @Override
     public String getKerberosServicePrincipal() {
         return null; //this needs to be wired in.
     }
@@ -84,4 +92,25 @@ public class MockControllerServiceInitializationContext 
extends MockControllerSe
     public File getKerberosConfigurationFile() {
         return null; //this needs to be wired in.
     }
+
+    @Override
+    public boolean isClustered() {
+        return isClustered;
+    }
+
+    @Override
+    public boolean isPrimary() {
+        return isPrimaryNode;
+    }
+
+    public void setClustered(boolean clustered) {
+        isClustered = clustered;
+    }
+
+    public void setPrimaryNode(boolean primaryNode) {
+        if (!isClustered && primaryNode) {
+            throw new IllegalArgumentException("Primary node is only available 
in cluster. Use setClustered(true) first.");
+        }
+        isPrimaryNode = primaryNode;
+    }
 }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/ExtensionBuilder.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/ExtensionBuilder.java
index 65985ad..5fb2331 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/ExtensionBuilder.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/ExtensionBuilder.java
@@ -381,7 +381,7 @@ public class ExtensionBuilder {
 
             final StateManager stateManager = 
stateManagerProvider.getStateManager(identifier);
             final ControllerServiceInitializationContext initContext = new 
StandardControllerServiceInitializationContext(identifier, 
terminationAwareLogger,
-                    serviceProvider, stateManager, kerberosConfig);
+                    serviceProvider, stateManager, kerberosConfig, 
nodeTypeProvider);
             serviceImpl.initialize(initContext);
 
             final LoggableComponent<ControllerService> 
originalLoggableComponent = new LoggableComponent<>(serviceImpl, 
bundleCoordinate, terminationAwareLogger);
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceInitializationContext.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceInitializationContext.java
index 4d2bbee..fd41a5a 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceInitializationContext.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceInitializationContext.java
@@ -20,6 +20,7 @@ import org.apache.nifi.components.state.StateManager;
 import org.apache.nifi.controller.ControllerService;
 import org.apache.nifi.controller.ControllerServiceInitializationContext;
 import org.apache.nifi.controller.ControllerServiceLookup;
+import org.apache.nifi.controller.NodeTypeProvider;
 import org.apache.nifi.controller.kerberos.KerberosConfig;
 import org.apache.nifi.logging.ComponentLog;
 
@@ -33,16 +34,18 @@ public class StandardControllerServiceInitializationContext 
implements Controlle
     private final ComponentLog logger;
     private final StateManager stateManager;
     private final KerberosConfig kerberosConfig;
+    private NodeTypeProvider nodeTypeProvider;
 
     public StandardControllerServiceInitializationContext(
             final String identifier, final ComponentLog logger,
             final ControllerServiceProvider serviceProvider, final 
StateManager stateManager,
-            final KerberosConfig kerberosConfig) {
+            final KerberosConfig kerberosConfig, final NodeTypeProvider 
nodeTypeProvider) {
         this.id = identifier;
         this.logger = logger;
         this.serviceProvider = serviceProvider;
         this.stateManager = stateManager;
         this.kerberosConfig = kerberosConfig;
+        this.nodeTypeProvider = nodeTypeProvider;
     }
 
     @Override
@@ -96,6 +99,11 @@ public class StandardControllerServiceInitializationContext 
implements Controlle
     }
 
     @Override
+    public NodeTypeProvider getNodeTypeProvider() {
+        return nodeTypeProvider;
+    }
+
+    @Override
     public String getKerberosServicePrincipal() {
         return kerberosConfig.getPrincipal();
     }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-nar-utils/src/main/java/org/apache/nifi/mock/MockControllerServiceInitializationContext.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-nar-utils/src/main/java/org/apache/nifi/mock/MockControllerServiceInitializationContext.java
index b111ad2..61bec29 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-nar-utils/src/main/java/org/apache/nifi/mock/MockControllerServiceInitializationContext.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-nar-utils/src/main/java/org/apache/nifi/mock/MockControllerServiceInitializationContext.java
@@ -19,6 +19,7 @@ package org.apache.nifi.mock;
 import org.apache.nifi.components.state.StateManager;
 import org.apache.nifi.controller.ControllerServiceInitializationContext;
 import org.apache.nifi.controller.ControllerServiceLookup;
+import org.apache.nifi.controller.NodeTypeProvider;
 import org.apache.nifi.logging.ComponentLog;
 
 import java.io.File;
@@ -52,6 +53,11 @@ public class MockControllerServiceInitializationContext 
implements ControllerSer
     }
 
     @Override
+    public NodeTypeProvider getNodeTypeProvider() {
+        return null;
+    }
+
+    @Override
     public String getKerberosServicePrincipal() {
         return null;
     }
diff --git 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/BaseScriptedLookupService.java
 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/BaseScriptedLookupService.java
index 1f00ad3..c67e8e8 100644
--- 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/BaseScriptedLookupService.java
+++ 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/BaseScriptedLookupService.java
@@ -26,6 +26,7 @@ import org.apache.nifi.components.state.StateManager;
 import org.apache.nifi.controller.ConfigurationContext;
 import org.apache.nifi.controller.ControllerServiceInitializationContext;
 import org.apache.nifi.controller.ControllerServiceLookup;
+import org.apache.nifi.controller.NodeTypeProvider;
 import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.logging.ComponentLog;
 import org.apache.nifi.lookup.LookupService;
@@ -315,6 +316,11 @@ public class BaseScriptedLookupService extends 
AbstractScriptedControllerService
                                 }
 
                                 @Override
+                                public NodeTypeProvider getNodeTypeProvider() {
+                                    return 
BaseScriptedLookupService.this.getNodeTypeProvider();
+                                }
+
+                                @Override
                                 public ControllerServiceLookup 
getControllerServiceLookup() {
                                     return 
BaseScriptedLookupService.super.getControllerServiceLookup();
                                 }

Reply via email to