Skip to content

Commit cf06929

Browse files
author
alexsa
committed
Move address translator driver options to DefaultDriverOption
1 parent b6dee71 commit cf06929

File tree

5 files changed

+64
-91
lines changed

5 files changed

+64
-91
lines changed

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

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

9931038
private final String path;
9941039

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

Lines changed: 3 additions & 17 deletions
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

Lines changed: 8 additions & 66 deletions
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

Lines changed: 2 additions & 3 deletions
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

Lines changed: 5 additions & 4 deletions
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)