@@ -96,13 +96,15 @@ private void loadServiceEndpoints() {
96
96
&& (config .containsMember ("hostname" ) || config .containsMember ("variants" ))) {
97
97
String region = entry .getKey ();
98
98
String hostname = config .getStringMemberOrDefault ("hostname" , partition .hostnameTemplate );
99
- String resolvedHostname = getResolvedHostnameWithDnsSuffix (
100
- getResolvedHostname (hostname , endpointPrefix , region ),
101
- dnsSuffix
102
- );
99
+ String resolvedHostname = getResolvedHostname (hostname , endpointPrefix , region );
103
100
104
- ArrayNode variants = config .getArrayMember ("variants" ).orElse (ArrayNode .fromNodes ());
105
- ArrayNode defaultVariant = ArrayNode .fromNodes (getDefaultVariant (resolvedHostname ));
101
+ ArrayNode variants = getServiceVariants (
102
+ config .getArrayMember ("variants" ).orElse (ArrayNode .fromNodes ()),
103
+ resolvedHostname ,
104
+ dnsSuffix );
105
+
106
+ String defaultHostname = getResolvedHostnameWithDnsSuffix (resolvedHostname , dnsSuffix );
107
+ ArrayNode defaultVariant = ArrayNode .fromNodes (getDefaultVariant (defaultHostname ));
106
108
107
109
endpoints .put (region ,
108
110
config
@@ -113,6 +115,27 @@ private void loadServiceEndpoints() {
113
115
}
114
116
}
115
117
118
+ private ArrayNode getServiceVariants (ArrayNode variants , String defaultHostname , String defaultDnsSuffix ) {
119
+ List <Node > serviceVariants = new ArrayList <Node >();
120
+
121
+ variants .forEach (variant -> {
122
+ ObjectNode variantNode = variant .expectObjectNode ();
123
+ if (!variantNode .containsMember ("hostname" ) && !variantNode .containsMember ("dnsSuffix" )) {
124
+ // Skip the empty variant which just contains tags.
125
+ return ;
126
+ }
127
+ String hostname = variantNode .getStringMemberOrDefault ("hostname" , defaultHostname );
128
+ String dnsSuffix = variantNode .getStringMemberOrDefault ("dnsSuffix" , defaultDnsSuffix );
129
+ String resolvedHostname = getResolvedHostnameWithDnsSuffix (
130
+ getResolvedHostname (hostname , endpointPrefix ),
131
+ dnsSuffix
132
+ );
133
+ serviceVariants .add (variantNode .withMember ("hostname" , resolvedHostname ).withoutMember ("dnsSuffix" ));
134
+ });
135
+
136
+ return ArrayNode .fromNodes (serviceVariants );
137
+ }
138
+
116
139
@ Override
117
140
public void run () {
118
141
writeRegionHash ();
0 commit comments