summaryrefslogtreecommitdiffstats
path: root/config-model-api
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-06-20 13:46:22 +0200
committerGitHub <noreply@github.com>2019-06-20 13:46:22 +0200
commit8d1f90e45fe953a3bedfd937448c4a28071639a4 (patch)
tree6b457387c9e1d6cc496d4859afdda3295a6073fb /config-model-api
parent564842bf4ea7047e2b33899fc21a82ee23bb4e4f (diff)
parentd581622b38817f63d2625e689388ab83b225f0da (diff)
Merge pull request #9827 from vespa-engine/ogronnesby/update-container-model-with-container-endpoints
Update ContainerModelBuilder to add rotations
Diffstat (limited to 'config-model-api')
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ContainerEndpoint.java51
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java1
2 files changed, 52 insertions, 0 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ContainerEndpoint.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ContainerEndpoint.java
new file mode 100644
index 00000000000..5641233606e
--- /dev/null
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ContainerEndpoint.java
@@ -0,0 +1,51 @@
+// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.config.model.api;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * ContainerEndpoint tracks the service names that a Container Cluster should be
+ * known as. This is used during request routing both for regular requests and
+ * for health checks in traffic distribution.
+ *
+ * @author ogronnesby
+ */
+public class ContainerEndpoint {
+
+ private final String clusterId;
+ private final List<String> names;
+
+ public ContainerEndpoint(String clusterId, List<String> names) {
+ this.clusterId = Objects.requireNonNull(clusterId);
+ this.names = List.copyOf(Objects.requireNonNull(names));
+ }
+
+ public String clusterId() {
+ return clusterId;
+ }
+
+ public List<String> names() {
+ return names;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ContainerEndpoint that = (ContainerEndpoint) o;
+ return Objects.equals(clusterId, that.clusterId) &&
+ Objects.equals(names, that.names);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(clusterId, names);
+ }
+
+ @Override
+ public String toString() {
+ return String.format("container endpoint %s -> %s", clusterId, names);
+ }
+
+}
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
index 514ca2a00f5..b5db9f5eddd 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
@@ -50,6 +50,7 @@ public interface ModelContext {
boolean hostedVespa();
Zone zone();
Set<Rotation> rotations();
+ Set<ContainerEndpoint> endpoints();
boolean isBootstrap();
boolean isFirstTimeDeployment();
boolean useDedicatedNodeForLogserver();