NIFI-3657 This closes #1634. Fix HTTP S2S to use local address.

- Fixed SiteInfoProvider and HttpClient to use specified local address with its 
SiteToSiteRestApiClient
- Removed setupRequestConfig method call from connection and read timeout 
setter methods at SiteToSiteRestApiClient, because it created config object 
before local address was set
- Null clear StandardRemoteProcessGroup localAddress when user clears Local 
Network Interface

Signed-off-by: joewitt <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/8ce2a1b3
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/8ce2a1b3
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/8ce2a1b3

Branch: refs/heads/master
Commit: 8ce2a1b3a7318de244f4c6a22a20943d1b056c4e
Parents: 0ddb90c
Author: Koji Kawamura <[email protected]>
Authored: Wed Mar 29 15:18:57 2017 +0900
Committer: joewitt <[email protected]>
Committed: Wed Apr 19 22:19:41 2017 -0700

----------------------------------------------------------------------
 .../nifi/remote/client/AbstractSiteToSiteClient.java  |  2 +-
 .../apache/nifi/remote/client/SiteInfoProvider.java   | 14 +++++++++++---
 .../apache/nifi/remote/client/http/HttpClient.java    |  2 ++
 .../nifi/remote/util/SiteToSiteRestApiClient.java     |  2 --
 .../nifi/remote/StandardRemoteProcessGroup.java       |  7 ++-----
 5 files changed, 16 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/8ce2a1b3/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/AbstractSiteToSiteClient.java
----------------------------------------------------------------------
diff --git 
a/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/AbstractSiteToSiteClient.java
 
b/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/AbstractSiteToSiteClient.java
index 05cf1f9..c6b98a0 100644
--- 
a/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/AbstractSiteToSiteClient.java
+++ 
b/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/AbstractSiteToSiteClient.java
@@ -33,7 +33,7 @@ public abstract class AbstractSiteToSiteClient implements 
SiteToSiteClient {
         siteInfoProvider.setConnectTimeoutMillis(commsTimeout);
         siteInfoProvider.setReadTimeoutMillis(commsTimeout);
         siteInfoProvider.setProxy(config.getHttpProxy());
-
+        siteInfoProvider.setLocalAddress(config.getLocalAddress());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/nifi/blob/8ce2a1b3/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/SiteInfoProvider.java
----------------------------------------------------------------------
diff --git 
a/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/SiteInfoProvider.java
 
b/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/SiteInfoProvider.java
index a1a9a9c..06b939d 100644
--- 
a/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/SiteInfoProvider.java
+++ 
b/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/SiteInfoProvider.java
@@ -17,6 +17,7 @@
 package org.apache.nifi.remote.client;
 
 import java.io.IOException;
+import java.net.InetAddress;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.HashMap;
@@ -48,6 +49,7 @@ public class SiteInfoProvider {
     private Boolean siteToSiteSecure;
     private long remoteRefreshTime;
     private HttpProxy proxy;
+    private InetAddress localAddress;
 
     private final Map<String, String> inputPortMap = new HashMap<>(); // map 
input port name to identifier
     private final Map<String, String> outputPortMap = new HashMap<>(); // map 
output port name to identifier
@@ -63,8 +65,6 @@ public class SiteInfoProvider {
         final ControllerDTO controller;
         final URI connectedClusterUrl;
         try (final SiteToSiteRestApiClient apiClient = 
createSiteToSiteRestApiClient(sslContext, proxy)) {
-            apiClient.setConnectTimeoutMillis(connectTimeoutMillis);
-            apiClient.setReadTimeoutMillis(readTimeoutMillis);
             controller = apiClient.getController(clusterUrls);
             try {
                 connectedClusterUrl = new URI(apiClient.getBaseUrl());
@@ -100,7 +100,11 @@ public class SiteInfoProvider {
     }
 
     protected SiteToSiteRestApiClient createSiteToSiteRestApiClient(final 
SSLContext sslContext, final HttpProxy proxy) {
-        return new SiteToSiteRestApiClient(sslContext, proxy, 
EventReporter.NO_OP);
+        final SiteToSiteRestApiClient apiClient = new 
SiteToSiteRestApiClient(sslContext, proxy, EventReporter.NO_OP);
+        apiClient.setConnectTimeoutMillis(connectTimeoutMillis);
+        apiClient.setReadTimeoutMillis(readTimeoutMillis);
+        apiClient.setLocalAddress(localAddress);
+        return apiClient;
     }
 
     public boolean isWebInterfaceSecure() {
@@ -271,4 +275,8 @@ public class SiteInfoProvider {
     public void setProxy(HttpProxy proxy) {
         this.proxy = proxy;
     }
+
+    public void setLocalAddress(InetAddress localAddress) {
+        this.localAddress = localAddress;
+    }
 }

http://git-wip-us.apache.org/repos/asf/nifi/blob/8ce2a1b3/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/http/HttpClient.java
----------------------------------------------------------------------
diff --git 
a/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/http/HttpClient.java
 
b/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/http/HttpClient.java
index c933db7..f0bdcf1 100644
--- 
a/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/http/HttpClient.java
+++ 
b/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/client/http/HttpClient.java
@@ -106,6 +106,7 @@ public class HttpClient extends AbstractSiteToSiteClient 
implements PeerStatusPr
             final int timeoutMillis = (int) 
config.getTimeout(TimeUnit.MILLISECONDS);
             apiClient.setConnectTimeoutMillis(timeoutMillis);
             apiClient.setReadTimeoutMillis(timeoutMillis);
+            apiClient.setLocalAddress(config.getLocalAddress());
 
             final Collection<PeerDTO> peers = apiClient.getPeers();
             if(peers == null || peers.size() == 0){
@@ -153,6 +154,7 @@ public class HttpClient extends AbstractSiteToSiteClient 
implements PeerStatusPr
             apiClient.setBaseUrl(peer.getUrl());
             apiClient.setConnectTimeoutMillis(timeoutMillis);
             apiClient.setReadTimeoutMillis(timeoutMillis);
+            apiClient.setLocalAddress(config.getLocalAddress());
 
             apiClient.setCompress(config.isUseCompression());
             
apiClient.setRequestExpirationMillis(config.getIdleConnectionExpiration(TimeUnit.MILLISECONDS));

http://git-wip-us.apache.org/repos/asf/nifi/blob/8ce2a1b3/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/util/SiteToSiteRestApiClient.java
----------------------------------------------------------------------
diff --git 
a/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/util/SiteToSiteRestApiClient.java
 
b/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/util/SiteToSiteRestApiClient.java
index 5655d36..ad78143 100644
--- 
a/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/util/SiteToSiteRestApiClient.java
+++ 
b/nifi-commons/nifi-site-to-site-client/src/main/java/org/apache/nifi/remote/util/SiteToSiteRestApiClient.java
@@ -1206,12 +1206,10 @@ public class SiteToSiteRestApiClient implements 
Closeable {
 
     public void setConnectTimeoutMillis(final int connectTimeoutMillis) {
         this.connectTimeoutMillis = connectTimeoutMillis;
-        setupRequestConfig();
     }
 
     public void setReadTimeoutMillis(final int readTimeoutMillis) {
         this.readTimeoutMillis = readTimeoutMillis;
-        setupRequestConfig();
     }
 
     public static String getFirstUrl(final String clusterUrlStr) {

http://git-wip-us.apache.org/repos/asf/nifi/blob/8ce2a1b3/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/remote/StandardRemoteProcessGroup.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/remote/StandardRemoteProcessGroup.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/remote/StandardRemoteProcessGroup.java
index 286b2dc..7aee480 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/remote/StandardRemoteProcessGroup.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/remote/StandardRemoteProcessGroup.java
@@ -880,6 +880,7 @@ public class StandardRemoteProcessGroup implements 
RemoteProcessGroup {
         try {
             this.networkInterfaceName = interfaceName;
             if (interfaceName == null) {
+                this.localAddress = null;
                 this.nicValidationResult = null;
             } else {
                 try {
@@ -930,11 +931,7 @@ public class StandardRemoteProcessGroup implements 
RemoteProcessGroup {
         SiteToSiteRestApiClient apiClient = new 
SiteToSiteRestApiClient(sslContext, new HttpProxy(proxyHost, proxyPort, 
proxyUser, proxyPassword), getEventReporter());
         
apiClient.setConnectTimeoutMillis(getCommunicationsTimeout(TimeUnit.MILLISECONDS));
         
apiClient.setReadTimeoutMillis(getCommunicationsTimeout(TimeUnit.MILLISECONDS));
-
-        final InetAddress localAddress = getLocalAddress();
-        if (localAddress != null) {
-            apiClient.setLocalAddress(localAddress);
-        }
+        apiClient.setLocalAddress(getLocalAddress());
 
         return apiClient;
     }

Reply via email to