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