diff options
author | Harald Musum <musum@verizonmedia.com> | 2019-06-08 07:39:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-08 07:39:17 +0200 |
commit | 0142de2c15f1ad8767f2718d98d8e2aecd3f296d (patch) | |
tree | 17ad8cdf5d6e7dcb3d78b10a147867103bae55d4 /configserver | |
parent | e93a9b96823fe73da1d5e1559bbf2e5e7fa2c8ba (diff) | |
parent | 653fdb8aeb834098c34bf3bc6696f2f16d285e7a (diff) |
Merge pull request #9722 from vespa-engine/freva/fix-copy-logs
Allow getting logs for hosted-vespa applications by hostname
Diffstat (limited to 'configserver')
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java | 23 | ||||
-rw-r--r-- | configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java | 6 |
2 files changed, 14 insertions, 15 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 75b0519032e..6f907088f01 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 @@ -741,22 +741,19 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye } private String getLogServerURI(ApplicationId applicationId, Optional<String> hostname) { - Application application = getApplication(applicationId); - Collection<HostInfo> hostInfos = application.getModel().getHosts(); - - // In ServiceInfo: node-admin does not have - // 1) Correct ports - // 2) logserver - // Assume if hostname is set that this is node-admin hostname - // TODO: Fix and simplify this once the above to problems have been fixed + // Allow to get logs from a given hostname if the application is under the hosted-vespa tenant. + // We make no validation that the hostname is actually allocated to the given application since + // most applications under hosted-vespa are not known to the model and its OK for a user to get + // logs for any host if they are authorized for the hosted-vespa tenant. if (hostname.isPresent()) { - HostInfo logServerHostInfo = hostInfos.stream() - .filter(host -> host.getHostname().equalsIgnoreCase(hostname.get())) - .findFirst().orElseThrow(() -> - new IllegalArgumentException("Host " + hostname.get() + " does not belong to " + applicationId)); - return "http://" + logServerHostInfo.getHostname() + ":8080/logs"; + if (HOSTED_VESPA_TENANT.equals(applicationId.tenant())) + return "http://" + hostname.get() + ":8080/logs"; + else throw new IllegalArgumentException("Only hostname paramater unsupported for application " + applicationId); } + Application application = getApplication(applicationId); + Collection<HostInfo> hostInfos = application.getModel().getHosts(); + HostInfo logServerHostInfo = hostInfos.stream() .filter(host -> host.getServices().stream() .anyMatch(serviceInfo -> serviceInfo.getServiceType().equalsIgnoreCase("logserver"))) diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java index 3eff6c935a7..9b76c349259 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java @@ -85,6 +85,7 @@ public class ApplicationRepositoryTest { tenantRepository = new TenantRepository(new TestComponentRegistry.Builder() .curator(curator) .build()); + tenantRepository.addTenant(TenantRepository.HOSTED_VESPA_TENANT); tenantRepository.addTenant(tenant1); tenantRepository.addTenant(tenant2); tenantRepository.addTenant(tenant3); @@ -164,8 +165,9 @@ public class ApplicationRepositoryTest { orchestrator, new MockLogRetriever(), clock); - deployApp(testAppLogServerWithContainer); - HttpResponse response = applicationRepository.getLogs(applicationId(), Optional.of("localhost"), ""); + ApplicationId applicationId = ApplicationId.from("hosted-vespa", "tenant-host", "default"); + deployApp(testAppLogServerWithContainer, new PrepareParams.Builder().applicationId(applicationId).build()); + HttpResponse response = applicationRepository.getLogs(applicationId, Optional.of("localhost"), ""); assertEquals(200, response.getStatus()); } |