aboutsummaryrefslogtreecommitdiffstats
path: root/configserver/src
diff options
context:
space:
mode:
authorOla Aunrønning <ola.aunroe@gmail.com>2018-09-10 15:58:51 +0200
committerOla Aunrønning <ola.aunroe@gmail.com>2018-09-10 15:58:51 +0200
commitdd4f6af83ca7374d6458b4e31d2706a8684c43c8 (patch)
tree7b8c97014dcbe7661d7d6fe74a6d5e38b51146a4 /configserver/src
parent44053e445e8f893514667325be40613830056e6e (diff)
Check if container is running on logserver
Diffstat (limited to 'configserver/src')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java24
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/LogRetrieverTest.java12
3 files changed, 33 insertions, 5 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
index 585a1a67f4d..c0055ff1085 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
@@ -10,6 +10,8 @@ import com.yahoo.config.FileReference;
import com.yahoo.config.application.api.ApplicationFile;
import com.yahoo.config.application.api.ApplicationMetaData;
import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.config.model.api.HostInfo;
+import com.yahoo.config.model.api.ServiceInfo;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.HostFilter;
@@ -63,6 +65,7 @@ import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
import java.util.Arrays;
+import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
@@ -483,7 +486,8 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
public HttpResponse getLogs(ApplicationId applicationId) {
String logServerHostName = getLogServerHostname(applicationId);
- return LogRetriever.getLogs(logServerHostName);
+ LogRetriever logRetriever = new LogRetriever();
+ return logRetriever.getLogs(logServerHostName);
}
// ---------------- Session operations ----------------------------------------------------------------
@@ -703,7 +707,23 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
Application application = getApplication(applicationId);
VespaModel model = (VespaModel) application.getModel();
String logServerHostname = model.getAdmin().getLogserver().getHostName();
- return logServerHostname;
+ Collection<HostInfo> hostInfos = application.getModel().getHosts();
+
+ HostInfo logServerHostInfo = hostInfos.stream()
+ .filter(host -> host.getHostname().equals(logServerHostname))
+ .findFirst().orElseThrow(() -> new IllegalArgumentException("Could not find HostInfo"));
+
+ ServiceInfo serviceInfo = logServerHostInfo.getServices().stream()
+ .filter(service -> service.getServiceType().equals("container"))
+ .findFirst().orElseThrow(() -> new IllegalArgumentException("No container running on logserver host"));
+
+ int port = serviceInfo.getPorts().stream()
+ .filter(portInfo -> portInfo.getTags().stream()
+ .filter(tag -> tag.equalsIgnoreCase("http")).count() > 0)
+ .findFirst().orElseThrow(() -> new IllegalArgumentException("Could not find HTTP port"))
+ .getPort();
+
+ return logServerHostname + ":" + port + "/logs";
}
/** Returns version to use when deploying application in given environment */
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java
index f4952b5b9fc..dd60d158313 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java
@@ -16,7 +16,7 @@ public class LogRetriever {
private final static Logger log = Logger.getLogger(LogRetriever.class.getName());
- public static HttpResponse getLogs(String logServerHostname) {
+ public HttpResponse getLogs(String logServerHostname) {
HttpGet get = new HttpGet(logServerHostname);
try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
org.apache.http.HttpResponse response = httpClient.execute(get);
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/LogRetrieverTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/LogRetrieverTest.java
index 2c3622e3dac..eb819053c05 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/LogRetrieverTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/LogRetrieverTest.java
@@ -2,6 +2,7 @@ package com.yahoo.vespa.config.server.http;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
import com.yahoo.container.jdisc.HttpResponse;
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -20,14 +21,21 @@ import static org.junit.Assert.assertEquals;
public class LogRetrieverTest {
private String logServerHostName = "http://localhost:8080/";
+ private LogRetriever logRetriever;
+
@Rule
public final WireMockRule wireMock = new WireMockRule(options().port(8080), true);
+ @Before
+ public void setup() {
+ logRetriever = new LogRetriever();
+ }
+
@Test
public void testThatLogHandlerPropagatesResponseBody() throws IOException {
String expectedBody = "{logs-json}";
stubFor(get(urlEqualTo("/")).willReturn(okJson(expectedBody)));
- HttpResponse response = LogRetriever.getLogs(logServerHostName);
+ HttpResponse response = logRetriever.getLogs(logServerHostName);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
response.render(byteArrayOutputStream);
assertEquals(expectedBody, byteArrayOutputStream.toString());
@@ -37,7 +45,7 @@ public class LogRetrieverTest {
@Test
public void testThatNotFoundLogServerReturns404() throws IOException {
stubFor(get(urlEqualTo("/")).willReturn(aResponse().withStatus(200)));
- HttpResponse response = LogRetriever.getLogs("http://wrong-host:8080/");
+ HttpResponse response = logRetriever.getLogs("http://wrong-host:8080/");
assertEquals(404, response.getStatus());
}