summaryrefslogtreecommitdiffstats
path: root/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationClusterEndpoint.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationClusterEndpoint.java')
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationClusterEndpoint.java49
1 files changed, 44 insertions, 5 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationClusterEndpoint.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationClusterEndpoint.java
index 0154e5d3b13..08ec615e4c0 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationClusterEndpoint.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationClusterEndpoint.java
@@ -4,6 +4,7 @@ package com.yahoo.config.model.api;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ClusterSpec;
+import com.yahoo.config.provision.SystemName;
import java.util.List;
import java.util.Objects;
@@ -17,9 +18,21 @@ import java.util.stream.Stream;
* @author mortent
*/
public class ApplicationClusterEndpoint {
+ @Override
+ public String toString() {
+ return "ApplicationClusterEndpoint{" +
+ "dnsName=" + dnsName +
+ ", scope=" + scope +
+ ", routingMethod=" + routingMethod +
+ ", weight=" + weight +
+ ", hostNames=" + hostNames +
+ ", clusterId='" + clusterId + '\'' +
+ '}';
+ }
+
public enum Scope {application, global, zone}
- public enum RoutingMethod {shared, sharedLayer4}
+ public enum RoutingMethod {shared, sharedLayer4, exclusive}
private final DnsName dnsName;
private final Scope scope;
@@ -99,6 +112,11 @@ public class ApplicationClusterEndpoint {
return this;
}
+ public Builder routingMethod(RoutingMethod routingMethod) {
+ this.routingMethod = routingMethod;
+ return this;
+ }
+
public Builder weight(int weigth) {
this.weigth = weigth;
return this;
@@ -132,16 +150,25 @@ public class ApplicationClusterEndpoint {
return name;
}
- // TODO: remove
+ // TODO: remove when 7.508 is latest version
public static DnsName sharedNameFrom(ClusterSpec.Id cluster, ApplicationId applicationId, String suffix) {
- String name = dnsParts(cluster, applicationId)
+ return sharedNameFrom(SystemName.main, cluster, applicationId, suffix);
+ }
+
+ public static DnsName sharedNameFrom(SystemName systemName, ClusterSpec.Id cluster, ApplicationId applicationId, String suffix) {
+ String name = dnsParts(systemName, cluster, applicationId)
.filter(Objects::nonNull) // remove null values that were "default"
.collect(Collectors.joining("--"));
return new DnsName(sanitize(name) + suffix); // Need to sanitize name since it is considered one label
}
+ // TODO remove this method when 7.508 is latest version
public static DnsName sharedL4NameFrom(ClusterSpec.Id cluster, ApplicationId applicationId, String suffix) {
- String name = dnsParts(cluster, applicationId)
+ return sharedL4NameFrom(SystemName.main, cluster, applicationId, suffix);
+ }
+
+ public static DnsName sharedL4NameFrom(SystemName systemName, ClusterSpec.Id cluster, ApplicationId applicationId, String suffix) {
+ String name = dnsParts(systemName, cluster, applicationId)
.filter(Objects::nonNull) // remove null values that were "default"
.map(DnsName::sanitize)
.collect(Collectors.joining("."));
@@ -152,9 +179,10 @@ public class ApplicationClusterEndpoint {
return new DnsName(name);
}
- private static Stream<String> dnsParts(ClusterSpec.Id cluster, ApplicationId applicationId) {
+ private static Stream<String> dnsParts(SystemName systemName, ClusterSpec.Id cluster, ApplicationId applicationId) {
return Stream.of(
nullIfDefault(cluster.value()),
+ systemPart(systemName),
nullIfDefault(applicationId.instance().value()),
applicationId.application().value(),
applicationId.tenant().value()
@@ -180,5 +208,16 @@ public class ApplicationClusterEndpoint {
private static String nullIfDefault(String string) {
return Optional.of(string).filter(s -> !s.equals("default")).orElse(null);
}
+
+ private static String systemPart(SystemName systemName) {
+ return "cd".equals(systemName.value()) ? systemName.value() : null;
+ }
+
+ @Override
+ public String toString() {
+ return "DnsName{" +
+ "name='" + name + '\'' +
+ '}';
+ }
}
}