summaryrefslogtreecommitdiffstats
path: root/controller-api/src
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-06-13 14:34:19 +0200
committerMartin Polden <mpolden@mpolden.no>2019-06-13 14:34:19 +0200
commit33c29c4faea7762e53cb5a6491ae446944c08e2a (patch)
tree02e7db192e15022930cf76658273a4fe0202bffb /controller-api/src
parent89e201c49cfccfb657b2dab0dfea3ee949514efa (diff)
Add support for containerEndpoints deploy parameter
Diffstat (limited to 'controller-api/src')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java3
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ContainerEndpoint.java59
2 files changed, 61 insertions, 1 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java
index 0c6bee4073d..cfd1ba8d9ed 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java
@@ -31,7 +31,8 @@ public interface ConfigServer {
PrepareResponse prepareResponse();
}
- PreparedApplication deploy(DeploymentId deployment, DeployOptions deployOptions, Set<String> rotationNames, byte[] content);
+ PreparedApplication deploy(DeploymentId deployment, DeployOptions deployOptions, Set<String> rotationNames,
+ List<ContainerEndpoint> containerEndpoints, byte[] content);
void restart(DeploymentId deployment, Optional<Hostname> hostname);
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ContainerEndpoint.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ContainerEndpoint.java
new file mode 100644
index 00000000000..2134320bdc1
--- /dev/null
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ContainerEndpoint.java
@@ -0,0 +1,59 @@
+// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.api.integration.configserver;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * This represents a list of one or more names for a container cluster.
+ *
+ * @author mpolden
+ */
+public class ContainerEndpoint {
+
+ private final String clusterId;
+ private final List<String> names;
+
+ public ContainerEndpoint(String clusterId, List<String> names) {
+ this.clusterId = nonEmpty(clusterId, "message must be non-empty");
+ this.names = List.copyOf(Objects.requireNonNull(names, "names must be non-null"));
+ }
+
+ /** ID of the cluster to which this points */
+ public String clusterId() {
+ return clusterId;
+ }
+
+ /**
+ * All valid DNS names for this endpoint. This can contain both proper DNS names and synthetic identifiers used for
+ * routing, such as a Host header value that is not necessarily a proper DNS name.
+ */
+ 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 clusterId.equals(that.clusterId) &&
+ names.equals(that.names);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(clusterId, names);
+ }
+
+ @Override
+ public String toString() {
+ return "container endpoint for " + clusterId + " " + names;
+ }
+
+ private static String nonEmpty(String s, String message) {
+ if (s == null || s.isBlank()) throw new IllegalArgumentException(message);
+ return s;
+ }
+
+}