You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jw...@apache.org on 2018/01/07 01:39:03 UTC

nifi git commit: NIFI-4197 - Expose some proxy settings to GCS Processors

Repository: nifi
Updated Branches:
  refs/heads/master d9866c75e -> 8d4fe38bb


NIFI-4197 - Expose some proxy settings to GCS Processors

Signed-off-by: James Wing <jv...@gmail.com>

This closes #2017.


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

Branch: refs/heads/master
Commit: 8d4fe38bb44e34197e64d7a7e7e9b3787144e34d
Parents: d9866c7
Author: Andre F de Miranda <tr...@users.noreply.github.com>
Authored: Tue Jul 18 20:07:13 2017 +1000
Committer: James Wing <jv...@gmail.com>
Committed: Sat Jan 6 17:33:31 2018 -0800

----------------------------------------------------------------------
 .../processors/gcp/AbstractGCPProcessor.java    | 23 ++++++++++++-
 .../gcp/storage/AbstractGCSProcessor.java       | 35 +++++++++++++++++---
 2 files changed, 53 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/8d4fe38b/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/AbstractGCPProcessor.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/AbstractGCPProcessor.java b/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/AbstractGCPProcessor.java
index 995805c..9b9a253 100644
--- a/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/AbstractGCPProcessor.java
+++ b/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/AbstractGCPProcessor.java
@@ -55,6 +55,25 @@ public abstract class AbstractGCPProcessor<
             .addValidator(StandardValidators.INTEGER_VALIDATOR)
             .build();
 
+    public static final PropertyDescriptor PROXY_HOST = new PropertyDescriptor
+            .Builder().name("gcp-proxy-host")
+            .displayName("Proxy host")
+            .description("IP or hostname of the proxy to be used")
+            .required(false)
+            .expressionLanguageSupported(false)
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .build();
+
+    public static final PropertyDescriptor PROXY_PORT = new PropertyDescriptor
+            .Builder().name("gcp-proxy-port")
+            .displayName("Proxy port")
+            .description("Proxy port number")
+            .required(false)
+            .expressionLanguageSupported(false)
+            .addValidator(StandardValidators.INTEGER_VALIDATOR)
+            .build();
+
+
     /**
      * Links to the {@link GCPCredentialsService} which provides credentials for this particular processor.
      */
@@ -78,7 +97,9 @@ public abstract class AbstractGCPProcessor<
         return ImmutableList.of(
                 GCP_CREDENTIALS_PROVIDER_SERVICE,
                 PROJECT_ID,
-                RETRY_COUNT
+                RETRY_COUNT,
+                PROXY_HOST,
+                PROXY_PORT
         );
     }
 

http://git-wip-us.apache.org/repos/asf/nifi/blob/8d4fe38b/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/storage/AbstractGCSProcessor.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/storage/AbstractGCSProcessor.java b/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/storage/AbstractGCSProcessor.java
index ff368b5..7cc854d 100644
--- a/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/storage/AbstractGCSProcessor.java
+++ b/nifi-nar-bundles/nifi-gcp-bundle/nifi-gcp-processors/src/main/java/org/apache/nifi/processors/gcp/storage/AbstractGCSProcessor.java
@@ -16,6 +16,9 @@
  */
 package org.apache.nifi.processors.gcp.storage;
 
+import com.google.api.client.http.HttpTransport;
+import com.google.api.client.http.javanet.NetHttpTransport;
+import com.google.auth.http.HttpTransportFactory;
 import com.google.auth.oauth2.GoogleCredentials;
 import com.google.cloud.RetryParams;
 import com.google.cloud.storage.Storage;
@@ -26,7 +29,10 @@ import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.Relationship;
 import org.apache.nifi.processors.gcp.AbstractGCPProcessor;
+import org.apache.nifi.util.StringUtils;
 
+import java.net.InetSocketAddress;
+import java.net.Proxy;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
@@ -66,15 +72,36 @@ public abstract class AbstractGCSProcessor extends AbstractGCPProcessor<Storage,
     @Override
     protected StorageOptions getServiceOptions(ProcessContext context, GoogleCredentials credentials) {
         final String projectId = context.getProperty(PROJECT_ID).getValue();
-        final Integer retryCount = Integer.valueOf(context.getProperty(RETRY_COUNT).getValue());
+        final Integer retryCount = context.getProperty(RETRY_COUNT).asInteger();
 
-        return StorageOptions.newBuilder()
+        final String proxyHost = context.getProperty(PROXY_HOST).getValue();
+        final Integer proxyPort = context.getProperty(PROXY_PORT).asInteger();
+
+        StorageOptions.Builder storageOptionsBuilder = StorageOptions.newBuilder()
                 .setCredentials(credentials)
                 .setProjectId(projectId)
                 .setRetryParams(RetryParams.newBuilder()
                         .setRetryMaxAttempts(retryCount)
                         .setRetryMinAttempts(retryCount)
-                        .build())
-                .build();
+                        .build());
+
+        if (!StringUtils.isBlank(proxyHost) && proxyPort > 0) {
+            storageOptionsBuilder.setHttpTransportFactory(new HttpTransportFactory() {
+                @Override
+                public HttpTransport create() {
+                    final HttpTransport transport = new NetHttpTransport.Builder()
+                            .setProxy(
+                                    new Proxy(
+                                            Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)
+                                    )
+                            )
+                            .build();
+                    return transport;
+                }
+            });
+        }
+        return  storageOptionsBuilder.build();
     }
+
+
 }