diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2019-09-16 09:11:32 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2019-09-16 09:11:32 +0200 |
commit | 45c8ec4a70b85e70da2842684f9411138d6af134 (patch) | |
tree | 4df2e3632ec36184b465587323977933368efe36 | |
parent | f60d81fa8ef3c889735ab27f531a59cfa2398f51 (diff) |
Look up endpoints as part of endpoint-ready-check
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; } |