summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2019-09-16 09:11:32 +0200
committerJon Marius Venstad <venstad@gmail.com>2019-09-16 09:11:32 +0200
commit45c8ec4a70b85e70da2842684f9411138d6af134 (patch)
tree4df2e3632ec36184b465587323977933368efe36
parentf60d81fa8ef3c889735ab27f531a59cfa2398f51 (diff)
Look up endpoints as part of endpoint-ready-check
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TesterCloud.java3
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockTesterCloud.java5
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java14
3 files changed, 19 insertions, 3 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TesterCloud.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TesterCloud.java
index dfbf3cb4ae4..89d922db806 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TesterCloud.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TesterCloud.java
@@ -25,6 +25,9 @@ public interface TesterCloud {
/** Returns whether the container is ready to serve. */
boolean ready(URI endpointUrl);
+ /** Returns whether the given URL is registered in DNS. */
+ boolean exists(URI endpointUrl);
+
enum Status {
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockTesterCloud.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockTesterCloud.java
index 34afb4c8f0a..ce5cc128d78 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockTesterCloud.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockTesterCloud.java
@@ -43,6 +43,11 @@ public class MockTesterCloud implements TesterCloud {
return true;
}
+ @Override
+ public boolean exists(URI endpointUrl) {
+ return true;
+ }
+
public void add(LogEntry entry) {
log.add(entry);
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java
index be558707415..9a8b8f3b463 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java
@@ -44,7 +44,9 @@ import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.io.UncheckedIOException;
import java.math.BigInteger;
+import java.net.InetAddress;
import java.net.URI;
+import java.net.UnknownHostException;
import java.security.KeyPair;
import java.security.cert.CertificateExpiredException;
import java.security.cert.CertificateNotYetValidException;
@@ -354,13 +356,19 @@ public class InternalStepRunner implements StepRunner {
return true;
}
- private boolean endpointsAvailable(ApplicationId id, ZoneId zoneId, DualLogger logger) {
+ private boolean endpointsAvailable(ApplicationId id, ZoneId zone, DualLogger logger) {
logger.log("Attempting to find deployment endpoints ...");
- var endpoints = controller.applications().clusterEndpoints(id, Set.of(zoneId));
- if ( ! endpoints.containsKey(zoneId)) {
+ var endpoints = controller.applications().clusterEndpoints(id, Set.of(zone));
+ if ( ! endpoints.containsKey(zone)) {
logger.log("Endpoints not yet ready.");
return false;
}
+ for (var endpoint : endpoints.get(zone).values())
+ if ( ! controller.jobController().cloud().exists(endpoint)) {
+ logger.log(INFO, "DNS lookup yielded no IP address for '" + endpoint + "'.");
+ return false;
+ }
+
logEndpoints(endpoints, logger);
return true;
}