aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@verizonmedia.com>2020-02-28 23:34:16 +0100
committerHåkon Hallingstad <hakon@verizonmedia.com>2020-02-28 23:34:16 +0100
commit159a116ae750968719de8a63052431ea0de11a31 (patch)
tree03cb3b040d1c8fe3693ef522599f90c1fd1f989e
parent7d515c403035aeef430507acb6a166b6cfdba9ee (diff)
Only build part of application instance for host resource
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/InstanceLookupService.java9
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java7
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ServiceMonitorInstanceLookupService.java6
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyInstanceLookupService.java10
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostResourceTest.java4
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java20
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceModelProvider.java7
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java4
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java14
9 files changed, 28 insertions, 53 deletions
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/InstanceLookupService.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/InstanceLookupService.java
index acf3fe7f9b2..2978b091548 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/InstanceLookupService.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/InstanceLookupService.java
@@ -4,9 +4,7 @@ package com.yahoo.vespa.orchestrator;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference;
import com.yahoo.vespa.applicationmodel.HostName;
-import com.yahoo.vespa.applicationmodel.ServiceInstance;
-import java.util.List;
import java.util.Optional;
import java.util.Set;
@@ -18,5 +16,10 @@ public interface InstanceLookupService {
Optional<ApplicationInstance> findInstanceById(ApplicationInstanceReference applicationInstanceReference);
Optional<ApplicationInstance> findInstanceByHost(HostName hostName);
Set<ApplicationInstanceReference> knownInstances();
- List<ServiceInstance> findServicesOnHost(HostName hostName);
+
+ /**
+ * Returns an application instance that may not contain more services and clusters than
+ * those related to the host.
+ */
+ Optional<ApplicationInstance> findInstancePossiblyNarrowedToHost(HostName hostname);
}
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java
index 6639a3032dc..d9d41cdaecc 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java
@@ -105,8 +105,10 @@ public class OrchestratorImpl implements Orchestrator {
@Override
public Host getHost(HostName hostName) throws HostNameNotFoundException {
- ApplicationInstance applicationInstance = getApplicationInstance(hostName);
- instanceLookupService.findServicesOnHost(hostName);
+ ApplicationInstance applicationInstance = instanceLookupService
+ .findInstancePossiblyNarrowedToHost(hostName)
+ .orElseThrow(() -> new HostNameNotFoundException(hostName));
+
List<ServiceInstance> serviceInstances = applicationInstance
.serviceClusters().stream()
.flatMap(cluster -> cluster.serviceInstances().stream())
@@ -114,7 +116,6 @@ public class OrchestratorImpl implements Orchestrator {
.collect(Collectors.toList());
HostInfo hostInfo = statusService.getHostInfo(applicationInstance.reference(), hostName);
- HostStatus hostStatus = getNodeStatus(applicationInstance.reference(), hostName);
return new Host(hostName, hostInfo, applicationInstance.reference(), serviceInstances);
}
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ServiceMonitorInstanceLookupService.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ServiceMonitorInstanceLookupService.java
index 30f5233d0c6..d7a630707b8 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ServiceMonitorInstanceLookupService.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ServiceMonitorInstanceLookupService.java
@@ -5,10 +5,8 @@ import com.google.inject.Inject;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference;
import com.yahoo.vespa.applicationmodel.HostName;
-import com.yahoo.vespa.applicationmodel.ServiceInstance;
import com.yahoo.vespa.service.monitor.ServiceMonitor;
-import java.util.List;
import java.util.Optional;
import java.util.Set;
@@ -42,7 +40,7 @@ public class ServiceMonitorInstanceLookupService implements InstanceLookupServic
}
@Override
- public List<ServiceInstance> findServicesOnHost(HostName hostName) {
- return serviceMonitor.getServiceInstancesOn(hostName);
+ public Optional<ApplicationInstance> findInstancePossiblyNarrowedToHost(HostName hostname) {
+ return serviceMonitor.getApplicationNarrowedTo(hostname);
}
}
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyInstanceLookupService.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyInstanceLookupService.java
index 07acc0dad81..7a62a29dff2 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyInstanceLookupService.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyInstanceLookupService.java
@@ -17,7 +17,6 @@ import com.yahoo.vespa.orchestrator.model.NodeGroup;
import com.yahoo.vespa.orchestrator.model.VespaModelUtil;
import java.util.HashSet;
-import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@@ -156,13 +155,8 @@ public class DummyInstanceLookupService implements InstanceLookupService {
}
@Override
- public List<ServiceInstance> findServicesOnHost(HostName hostName) {
- return apps.stream()
- .flatMap(application -> application.serviceClusters().stream())
- .flatMap(cluster -> cluster.serviceInstances().stream())
- .filter(service -> service.hostName().equals(hostName))
- .sorted()
- .collect(Collectors.toList());
+ public Optional<ApplicationInstance> findInstancePossiblyNarrowedToHost(HostName hostname) {
+ return findInstanceByHost(hostname);
}
public static Set<HostName> getContentHosts(ApplicationInstanceReference appRef) {
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostResourceTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostResourceTest.java
index a84f99dff34..4a7be5f3ab6 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostResourceTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostResourceTest.java
@@ -112,8 +112,8 @@ public class HostResourceTest {
}
@Override
- public List<ServiceInstance> findServicesOnHost(HostName hostName) {
- return List.of();
+ public Optional<ApplicationInstance> findInstancePossiblyNarrowedToHost(HostName hostname) {
+ return Optional.empty();
}
};
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java
index 86bb892b162..cce14c12195 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java
@@ -6,7 +6,6 @@ import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference;
import com.yahoo.vespa.applicationmodel.HostName;
-import com.yahoo.vespa.applicationmodel.ServiceInstance;
import com.yahoo.vespa.service.monitor.ServiceModel;
import com.yahoo.vespa.service.monitor.ServiceStatusProvider;
@@ -55,21 +54,10 @@ public class ModelGenerator {
return generator.makeApplicationInstance(serviceStatusProvider);
}
- public List<ServiceInstance> toServices(ApplicationInfo applicationInfo,
- HostName hostname,
- ServiceStatusProvider serviceStatusProvider) {
+ public ApplicationInstance toApplicationNarrowedToHost(ApplicationInfo applicationInfo,
+ HostName hostname,
+ ServiceStatusProvider serviceStatusProvider) {
var generator = new ApplicationInstanceGenerator(applicationInfo, zone);
- ApplicationInstance applicationInstance = generator.makeApplicationInstanceLimitedTo(
- hostname, serviceStatusProvider);
-
- List<ServiceInstance> serviceInstances = applicationInstance.serviceClusters().stream()
- .flatMap(cluster -> cluster.serviceInstances().stream())
- .collect(Collectors.toList());
-
- if (serviceInstances.size() > 0) {
- return serviceInstances;
- }
-
- return List.of();
+ return generator.makeApplicationInstanceLimitedTo(hostname, serviceStatusProvider);
}
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceModelProvider.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceModelProvider.java
index d3d7c151a9b..35c72ba03fb 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceModelProvider.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceModelProvider.java
@@ -72,14 +72,15 @@ public class ServiceModelProvider implements ServiceMonitor {
}
@Override
- public List<ServiceInstance> getServiceInstancesOn(HostName hostname) {
+ public Optional<ApplicationInstance> getApplicationNarrowedTo(HostName hostname) {
Optional<ApplicationInfo> applicationInfo =
duperModelManager.getApplicationInfo(toConfigProvisionHostName(hostname));
if (applicationInfo.isEmpty()) {
- return List.of();
+ return Optional.empty();
}
- return modelGenerator.toServices(applicationInfo.get(), hostname, serviceStatusProvider);
+ return Optional.of(modelGenerator.toApplicationNarrowedToHost(
+ applicationInfo.get(), hostname, serviceStatusProvider));
}
@Override
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java
index a37a52f775e..d3297d711ff 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java
@@ -69,8 +69,8 @@ public class ServiceMonitorImpl implements ServiceMonitor {
}
@Override
- public List<ServiceInstance> getServiceInstancesOn(HostName hostname) {
- return delegate.getServiceInstancesOn(hostname);
+ public Optional<ApplicationInstance> getApplicationNarrowedTo(HostName hostname) {
+ return delegate.getApplicationNarrowedTo(hostname);
}
@Override
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java
index 8ad77213bc1..f3d02992cdc 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java
@@ -10,7 +10,6 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* The service monitor interface. A service monitor provides up to date information about the liveness status
@@ -39,17 +38,8 @@ public interface ServiceMonitor {
return getServiceModelSnapshot().getApplicationInstance(reference);
}
- default List<ServiceInstance> getServiceInstancesOn(HostName hostname) {
- ApplicationInstance application = getServiceModelSnapshot().getApplicationsByHostName().get(hostname);
- if (application == null) {
- return List.of();
- }
-
- return application
- .serviceClusters().stream()
- .flatMap(cluster -> cluster.serviceInstances().stream())
- .filter(serviceInstance -> hostname.equals(serviceInstance.hostName()))
- .collect(Collectors.toList());
+ default Optional<ApplicationInstance> getApplicationNarrowedTo(HostName hostname) {
+ return Optional.ofNullable(getServiceModelSnapshot().getApplicationsByHostName().get(hostname));
}
default Map<HostName, List<ServiceInstance>> getServicesByHostname() {