Repository: nifi Updated Branches: refs/heads/master d9866c75e -> 8d4fe38bb
NIFI-4197 - Expose some proxy settings to GCS Processors Signed-off-by: James Wing <[email protected]> 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 <[email protected]> Authored: Tue Jul 18 20:07:13 2017 +1000 Committer: James Wing <[email protected]> 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(); } + + }
