Skip to content

Commit 85d5931

Browse files
author
alexsa
committed
Move address translator driver options to DefaultDriverOption
1 parent 844287e commit 85d5931

File tree

5 files changed

+60
-91
lines changed

5 files changed

+60
-91
lines changed

core/src/main/java/com/datastax/oss/driver/api/core/config/DefaultDriverOption.java

+42-1
Original file line numberDiff line numberDiff line change
@@ -994,7 +994,48 @@ public enum DefaultDriverOption implements DriverOption {
994994
*
995995
* <p>Value-type: boolean
996996
*/
997-
SSL_ALLOW_DNS_REVERSE_LOOKUP_SAN("advanced.ssl-engine-factory.allow-dns-reverse-lookup-san");
997+
SSL_ALLOW_DNS_REVERSE_LOOKUP_SAN("advanced.ssl-engine-factory.allow-dns-reverse-lookup-san"),
998+
/**
999+
* An address to always translate all node addresses to that same proxy hostname no matter what IP
1000+
* address a node has, but still using its native transport port.
1001+
*
1002+
* <p>Value-Type: {@link String}
1003+
*/
1004+
ADDRESS_TRANSLATOR_ADVERTISED_HOSTNAME("advanced.address-translator.advertised-hostname"),
1005+
/**
1006+
* A map of Cassandra node subnets (CIDR notations) to target addresses, for example (note quoted
1007+
* keys):
1008+
*
1009+
* <pre>
1010+
* advanced.address-translator.subnet-addresses {
1011+
* "100.64.0.0/15" = "cassandra.datacenter1.com:9042"
1012+
* "100.66.0.0/15" = "cassandra.datacenter2.com:9042"
1013+
* # IPv6 example:
1014+
* # "::ffff:6440:0/111" = "cassandra.datacenter1.com:9042"
1015+
* # "::ffff:6442:0/111" = "cassandra.datacenter2.com:9042"
1016+
* }
1017+
* </pre>
1018+
*
1019+
* Note: subnets must be represented as prefix blocks, see {@link
1020+
* inet.ipaddr.Address#isPrefixBlock()}.
1021+
*
1022+
* <p>Value type: {@link java.util.Map Map}&#60;{@link String},{@link String}&#62;
1023+
*/
1024+
ADDRESS_TRANSLATOR_SUBNET_ADDRESSES("advanced.address-translator.subnet-addresses"),
1025+
/**
1026+
* A default address to fallback to if Cassandra node IP isn't contained in any of the configured
1027+
* subnets.
1028+
*
1029+
* <p>Value-Type: {@link String}
1030+
*/
1031+
ADDRESS_TRANSLATOR_DEFAULT_ADDRESS("advanced.address-translator.default-address"),
1032+
/**
1033+
* Whether to resolve the addresses on initialization (if true) or on each node (re-)connection
1034+
* (if false). Defaults to false.
1035+
*
1036+
* <p>Value-Type: boolean
1037+
*/
1038+
ADDRESS_TRANSLATOR_RESOLVE_ADDRESSES("advanced.address-translator.resolve-addresses");
9981039

9991040
private final String path;
10001041

core/src/main/java/com/datastax/oss/driver/internal/core/addresstranslation/FixedHostNameAddressTranslator.java

+3-17
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@
1717
*/
1818
package com.datastax.oss.driver.internal.core.addresstranslation;
1919

20+
import static com.datastax.oss.driver.api.core.config.DefaultDriverOption.ADDRESS_TRANSLATOR_ADVERTISED_HOSTNAME;
21+
2022
import com.datastax.oss.driver.api.core.addresstranslation.AddressTranslator;
21-
import com.datastax.oss.driver.api.core.config.DriverOption;
2223
import com.datastax.oss.driver.api.core.context.DriverContext;
2324
import edu.umd.cs.findbugs.annotations.NonNull;
2425
import java.net.InetSocketAddress;
@@ -37,28 +38,13 @@ public class FixedHostNameAddressTranslator implements AddressTranslator {
3738

3839
private static final Logger LOG = LoggerFactory.getLogger(FixedHostNameAddressTranslator.class);
3940

40-
public static final String ADDRESS_TRANSLATOR_ADVERTISED_HOSTNAME =
41-
"advanced.address-translator.advertised-hostname";
42-
43-
public static DriverOption ADDRESS_TRANSLATOR_ADVERTISED_HOSTNAME_OPTION =
44-
new DriverOption() {
45-
@NonNull
46-
@Override
47-
public String getPath() {
48-
return ADDRESS_TRANSLATOR_ADVERTISED_HOSTNAME;
49-
}
50-
};
51-
5241
private final String advertisedHostname;
5342
private final String logPrefix;
5443

5544
public FixedHostNameAddressTranslator(@NonNull DriverContext context) {
5645
logPrefix = context.getSessionName();
5746
advertisedHostname =
58-
context
59-
.getConfig()
60-
.getDefaultProfile()
61-
.getString(ADDRESS_TRANSLATOR_ADVERTISED_HOSTNAME_OPTION);
47+
context.getConfig().getDefaultProfile().getString(ADDRESS_TRANSLATOR_ADVERTISED_HOSTNAME);
6248
}
6349

6450
@NonNull

core/src/main/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslator.java

+8-66
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,11 @@
1717
*/
1818
package com.datastax.oss.driver.internal.core.addresstranslation;
1919

20+
import static com.datastax.oss.driver.api.core.config.DefaultDriverOption.ADDRESS_TRANSLATOR_DEFAULT_ADDRESS;
21+
import static com.datastax.oss.driver.api.core.config.DefaultDriverOption.ADDRESS_TRANSLATOR_RESOLVE_ADDRESSES;
22+
import static com.datastax.oss.driver.api.core.config.DefaultDriverOption.ADDRESS_TRANSLATOR_SUBNET_ADDRESSES;
23+
2024
import com.datastax.oss.driver.api.core.addresstranslation.AddressTranslator;
21-
import com.datastax.oss.driver.api.core.config.DriverOption;
2225
import com.datastax.oss.driver.api.core.context.DriverContext;
2326
import com.datastax.oss.driver.internal.core.util.AddressUtils;
2427
import edu.umd.cs.findbugs.annotations.NonNull;
@@ -45,67 +48,6 @@
4548
public class SubnetAddressTranslator implements AddressTranslator {
4649
private static final Logger LOG = LoggerFactory.getLogger(SubnetAddressTranslator.class);
4750

48-
/**
49-
* A map of Cassandra node subnets (CIDR notations) to target addresses, for example (note quoted
50-
* keys):
51-
*
52-
* <pre>
53-
* advanced.address-translator.subnet-addresses {
54-
* "100.64.0.0/15" = "cassandra.datacenter1.com:9042"
55-
* "100.66.0.0/15" = "cassandra.datacenter2.com:9042"
56-
* # IPv6 example:
57-
* # "::ffff:6440:0/111" = "cassandra.datacenter1.com:9042"
58-
* # "::ffff:6442:0/111" = "cassandra.datacenter2.com:9042"
59-
* }
60-
* </pre>
61-
*
62-
* Note: subnets must be represented as prefix blocks, see {@link
63-
* inet.ipaddr.Address#isPrefixBlock()}.
64-
*/
65-
public static final String ADDRESS_TRANSLATOR_SUBNET_ADDRESSES =
66-
"advanced.address-translator.subnet-addresses";
67-
68-
/**
69-
* A default address to fallback to if Cassandra node IP isn't contained in any of the configured
70-
* subnets.
71-
*/
72-
public static final String ADDRESS_TRANSLATOR_DEFAULT_ADDRESS =
73-
"advanced.address-translator.default-address";
74-
75-
/**
76-
* Whether to resolve the addresses on initialization (if true) or on each node (re-)connection
77-
* (if false). Defaults to false.
78-
*/
79-
public static final String ADDRESS_TRANSLATOR_RESOLVE_ADDRESSES =
80-
"advanced.address-translator.resolve-addresses";
81-
82-
public static DriverOption ADDRESS_TRANSLATOR_SUBNET_ADDRESSES_OPTION =
83-
new DriverOption() {
84-
@NonNull
85-
@Override
86-
public String getPath() {
87-
return ADDRESS_TRANSLATOR_SUBNET_ADDRESSES;
88-
}
89-
};
90-
91-
public static DriverOption ADDRESS_TRANSLATOR_DEFAULT_ADDRESS_OPTION =
92-
new DriverOption() {
93-
@NonNull
94-
@Override
95-
public String getPath() {
96-
return ADDRESS_TRANSLATOR_DEFAULT_ADDRESS;
97-
}
98-
};
99-
100-
public static DriverOption ADDRESS_TRANSLATOR_RESOLVE_ADDRESSES_OPTION =
101-
new DriverOption() {
102-
@NonNull
103-
@Override
104-
public String getPath() {
105-
return ADDRESS_TRANSLATOR_RESOLVE_ADDRESSES;
106-
}
107-
};
108-
10951
private final List<SubnetAddress> subnetAddresses;
11052

11153
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
@@ -119,10 +61,10 @@ public SubnetAddressTranslator(@NonNull DriverContext context) {
11961
context
12062
.getConfig()
12163
.getDefaultProfile()
122-
.getBoolean(ADDRESS_TRANSLATOR_RESOLVE_ADDRESSES_OPTION, false);
64+
.getBoolean(ADDRESS_TRANSLATOR_RESOLVE_ADDRESSES, false);
12365
this.subnetAddresses =
124-
context.getConfig().getDefaultProfile()
125-
.getStringMap(ADDRESS_TRANSLATOR_SUBNET_ADDRESSES_OPTION).entrySet().stream()
66+
context.getConfig().getDefaultProfile().getStringMap(ADDRESS_TRANSLATOR_SUBNET_ADDRESSES)
67+
.entrySet().stream()
12668
.map(
12769
e -> {
12870
// Quoted and/or containing forward slashes map keys in reference.conf are read to
@@ -138,7 +80,7 @@ public SubnetAddressTranslator(@NonNull DriverContext context) {
13880
context
13981
.getConfig()
14082
.getDefaultProfile()
141-
.getString(ADDRESS_TRANSLATOR_DEFAULT_ADDRESS_OPTION, null))
83+
.getString(ADDRESS_TRANSLATOR_DEFAULT_ADDRESS, null))
14284
.map(address -> parseAddress(address, resolveAddresses));
14385

14486
validateSubnetsAreNotOverlapping(this.subnetAddresses);

core/src/test/java/com/datastax/oss/driver/internal/core/addresstranslation/FixedHostNameAddressTranslatorTest.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
*/
1818
package com.datastax.oss.driver.internal.core.addresstranslation;
1919

20+
import static com.datastax.oss.driver.api.core.config.DefaultDriverOption.ADDRESS_TRANSLATOR_ADVERTISED_HOSTNAME;
2021
import static org.assertj.core.api.Assertions.assertThat;
2122
import static org.mockito.Mockito.mock;
2223
import static org.mockito.Mockito.when;
@@ -33,9 +34,7 @@ public class FixedHostNameAddressTranslatorTest {
3334
@Test
3435
public void should_translate_address() {
3536
DriverExecutionProfile defaultProfile = mock(DriverExecutionProfile.class);
36-
when(defaultProfile.getString(
37-
FixedHostNameAddressTranslator.ADDRESS_TRANSLATOR_ADVERTISED_HOSTNAME_OPTION))
38-
.thenReturn("myaddress");
37+
when(defaultProfile.getString(ADDRESS_TRANSLATOR_ADVERTISED_HOSTNAME)).thenReturn("myaddress");
3938
DefaultDriverContext defaultDriverContext =
4039
MockedDriverContextFactory.defaultDriverContext(Optional.of(defaultProfile));
4140

core/src/test/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslatorTest.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
*/
1818
package com.datastax.oss.driver.internal.core.addresstranslation;
1919

20+
import static com.datastax.oss.driver.api.core.config.DefaultDriverOption.ADDRESS_TRANSLATOR_DEFAULT_ADDRESS;
21+
import static com.datastax.oss.driver.api.core.config.DefaultDriverOption.ADDRESS_TRANSLATOR_SUBNET_ADDRESSES;
2022
import static org.assertj.core.api.Assertions.assertThat;
2123
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
2224
import static org.mockito.Mockito.mock;
@@ -66,7 +68,7 @@ public void should_translate_to_default_address() {
6668
when(context
6769
.getConfig()
6870
.getDefaultProfile()
69-
.getString(SubnetAddressTranslator.ADDRESS_TRANSLATOR_DEFAULT_ADDRESS_OPTION, null))
71+
.getString(ADDRESS_TRANSLATOR_DEFAULT_ADDRESS, null))
7072
.thenReturn("cassandra.com:19042");
7173
SubnetAddressTranslator translator = new SubnetAddressTranslator(context);
7274
InetSocketAddress address = new InetSocketAddress("100.68.0.1", 9042);
@@ -144,7 +146,7 @@ public void should_fail_on_default_address_without_port() {
144146
when(context
145147
.getConfig()
146148
.getDefaultProfile()
147-
.getString(SubnetAddressTranslator.ADDRESS_TRANSLATOR_DEFAULT_ADDRESS_OPTION, null))
149+
.getString(ADDRESS_TRANSLATOR_DEFAULT_ADDRESS, null))
148150
.thenReturn("cassandra.com");
149151
assertThatIllegalArgumentException()
150152
.isThrownBy(() -> new SubnetAddressTranslator(context))
@@ -153,8 +155,7 @@ public void should_fail_on_default_address_without_port() {
153155

154156
private static DefaultDriverContext context(Map<String, String> subnetAddresses) {
155157
DriverExecutionProfile profile = mock(DriverExecutionProfile.class);
156-
when(profile.getStringMap(SubnetAddressTranslator.ADDRESS_TRANSLATOR_SUBNET_ADDRESSES_OPTION))
157-
.thenReturn(subnetAddresses);
158+
when(profile.getStringMap(ADDRESS_TRANSLATOR_SUBNET_ADDRESSES)).thenReturn(subnetAddresses);
158159
return MockedDriverContextFactory.defaultDriverContext(Optional.of(profile));
159160
}
160161
}

0 commit comments

Comments
 (0)