Skip to content

Commit

Permalink
SDC-14443. Add Proxy Domain and Proxy Workstation to S3 stage configu…
Browse files Browse the repository at this point in the history
…ration in SDC

Change-Id: Iebe847fb7d0e528d27046d79bcc60419f4e27e82
Reviewed-on: https://review.streamsets.net/c/datacollector/+/31665
Tested-by: StreamSets CI <[email protected]>
Reviewed-by: Alex Sanchez Cabana <[email protected]>
  • Loading branch information
rkanter committed May 8, 2020
1 parent 0383896 commit c79d775
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,17 @@ public static ClientConfiguration getClientConfiguration(ProxyConfig config) thr
clientConfig.setProxyUsername(config.proxyUser.get());
}

if (config.proxyPassword != null) {
if (config.proxyPassword != null && !config.proxyPassword.get().isEmpty()) {
clientConfig.setProxyPassword(config.proxyPassword.get());
}

if (config.proxyDomain != null && !config.proxyDomain.isEmpty()) {
clientConfig.setProxyDomain(config.proxyDomain);
}

if (config.proxyWorkstation != null && !config.proxyWorkstation.isEmpty()) {
clientConfig.setProxyWorkstation(config.proxyWorkstation);
}
}
}
return clientConfig;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,4 +117,28 @@ public class ProxyConfig {
group = "ADVANCED"
)
public CredentialValue proxyPassword;

@ConfigDef(
required = false,
type = ConfigDef.Type.STRING,
label = "Proxy Domain",
description = "Optional domain name for the proxy server",
displayPosition = 5050,
dependsOn = "useProxy",
triggeredByValue = "true",
group = "ADVANCED"
)
public String proxyDomain;

@ConfigDef(
required = false,
type = ConfigDef.Type.STRING,
label = "Proxy Workstation",
description = "Optional workstation for the proxy server",
displayPosition = 5060,
dependsOn = "useProxy",
triggeredByValue = "true",
group = "ADVANCED"
)
public String proxyWorkstation;
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package com.streamsets.pipeline.stage.lib.aws;

import com.amazonaws.ClientConfiguration;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import org.junit.Assert;
Expand Down Expand Up @@ -64,4 +65,77 @@ public void testGetCredentialsProviderAnonymous() {
Assert.assertNull(credentialsProvider.getCredentials().getAWSAccessKeyId());
Assert.assertNull(credentialsProvider.getCredentials().getAWSSecretKey());
}

@Test
public void testGetClientConfiguration() {
ProxyConfig proxyConfig = new ProxyConfig();
proxyConfig.useProxy = true;
proxyConfig.proxyHost = "host";
proxyConfig.proxyPort = 1234;
proxyConfig.proxyUser = () -> "user";
proxyConfig.proxyPassword = () -> "password";
proxyConfig.proxyDomain = "domain";
proxyConfig.proxyWorkstation = "workstation";

ClientConfiguration clientConfig = AWSUtil.getClientConfiguration(proxyConfig);
Assert.assertEquals("host", clientConfig.getProxyHost());
Assert.assertEquals(1234, clientConfig.getProxyPort());
Assert.assertEquals("user", clientConfig.getProxyUsername());
Assert.assertEquals("password", clientConfig.getProxyPassword());
Assert.assertEquals("domain", clientConfig.getProxyDomain());
Assert.assertEquals("workstation", clientConfig.getProxyWorkstation());
}

@Test
public void testGetClientConfigurationNotSet() {
ProxyConfig proxyConfig = new ProxyConfig();
proxyConfig.useProxy = true;

ClientConfiguration clientConfig = AWSUtil.getClientConfiguration(proxyConfig);
Assert.assertNull(clientConfig.getProxyHost());
Assert.assertEquals(-1, clientConfig.getProxyPort());
Assert.assertNull(clientConfig.getProxyUsername());
Assert.assertNull(clientConfig.getProxyPassword());
Assert.assertNull(clientConfig.getProxyDomain());
Assert.assertNull(clientConfig.getProxyWorkstation());
}

@Test
public void testGetClientConfigurationEmpty() {
ProxyConfig proxyConfig = new ProxyConfig();
proxyConfig.useProxy = true;
proxyConfig.proxyHost = "";
proxyConfig.proxyUser = () -> "";
proxyConfig.proxyPassword = () -> "";
proxyConfig.proxyDomain = "";
proxyConfig.proxyWorkstation = "";

ClientConfiguration clientConfig = AWSUtil.getClientConfiguration(proxyConfig);
Assert.assertNull(clientConfig.getProxyHost());
Assert.assertEquals(-1, clientConfig.getProxyPort());
Assert.assertNull(clientConfig.getProxyUsername());
Assert.assertNull(clientConfig.getProxyPassword());
Assert.assertNull(clientConfig.getProxyDomain());
Assert.assertNull(clientConfig.getProxyWorkstation());
}

@Test
public void testGetClientConfigurationNotUsing() {
ProxyConfig proxyConfig = new ProxyConfig();
proxyConfig.useProxy = false; // other values will be ignored because this is false
proxyConfig.proxyHost = "host";
proxyConfig.proxyPort = 1234;
proxyConfig.proxyUser = () -> "user";
proxyConfig.proxyPassword = () -> "password";
proxyConfig.proxyDomain = "domain";
proxyConfig.proxyWorkstation = "workstation";

ClientConfiguration clientConfig = AWSUtil.getClientConfiguration(proxyConfig);
Assert.assertNull(clientConfig.getProxyHost());
Assert.assertEquals(-1, clientConfig.getProxyPort());
Assert.assertNull(clientConfig.getProxyUsername());
Assert.assertNull(clientConfig.getProxyPassword());
Assert.assertNull(clientConfig.getProxyDomain());
Assert.assertNull(clientConfig.getProxyWorkstation());
}
}

0 comments on commit c79d775

Please sign in to comment.