Skip to content

Commit

Permalink
Merge pull request hazelcast#8102 from bilalyasar/aws-ch
Browse files Browse the repository at this point in the history
fixed hostheader bug hazelcast#8073
  • Loading branch information
Mesut Celik committed May 11, 2016
2 parents 4597b9d + ad593e6 commit 549815d
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
Expand Up @@ -18,15 +18,18 @@

import com.hazelcast.aws.impl.DescribeInstances;
import com.hazelcast.config.AwsConfig;
import com.hazelcast.config.InvalidConfigurationException;

import java.util.Collection;
import java.util.Map;

public class AWSClient {

private String endpoint;
private String defaultHostHeader = "ec2.amazonaws.com";
private final AwsConfig awsConfig;


public AWSClient(AwsConfig awsConfig) {
if (awsConfig == null) {
throw new IllegalArgumentException("AwsConfig is required!");
Expand All @@ -40,7 +43,10 @@ public AWSClient(AwsConfig awsConfig) {
this.awsConfig = awsConfig;
endpoint = awsConfig.getHostHeader();
if (awsConfig.getRegion() != null && awsConfig.getRegion().length() > 0) {
setEndpoint("ec2." + awsConfig.getRegion() + ".amazonaws.com");
if (!awsConfig.getHostHeader().startsWith("ec2.")) {
throw new InvalidConfigurationException("HostHeader should start with \"ec2.\" prefix");
}
setEndpoint(awsConfig.getHostHeader().replace("ec2.", "ec2." + awsConfig.getRegion() + "."));
}
}

Expand Down
18 changes: 18 additions & 0 deletions hazelcast-cloud/src/test/java/com/hazelcast/aws/AwsClientTest.java
Expand Up @@ -17,6 +17,7 @@
package com.hazelcast.aws;

import com.hazelcast.config.AwsConfig;
import com.hazelcast.config.InvalidConfigurationException;
import com.hazelcast.test.HazelcastParallelClassRunner;
import com.hazelcast.test.annotation.ParallelTest;
import com.hazelcast.test.annotation.QuickTest;
Expand Down Expand Up @@ -56,4 +57,21 @@ public void testAwsClient_getEndPoint() {
assertEquals("ec2.us-east-1.amazonaws.com", awsClient.getEndpoint());
}

@Test
public void testAwsClient_withDifferentHostHeader() {
AwsConfig awsConfig = new AwsConfig();
awsConfig.setIamRole("test");
awsConfig.setHostHeader("ec2.amazonaws.com.cn");
awsConfig.setRegion("cn-north-1");
AWSClient awsClient = new AWSClient(awsConfig);
assertEquals("ec2.cn-north-1.amazonaws.com.cn", awsClient.getEndpoint());
}

@Test(expected = InvalidConfigurationException.class)
public void testAwsClient_withInvalidHostHeader() {
AwsConfig awsConfig = new AwsConfig();
awsConfig.setIamRole("test");
awsConfig.setHostHeader("ec3.amazonaws.com.cn");
new AWSClient(awsConfig);
}
}

0 comments on commit 549815d

Please sign in to comment.