diff options
4 files changed, 11 insertions, 46 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java index 8215dc8ecd0..b9c5df9d999 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java @@ -62,7 +62,11 @@ public class ServiceMonitorStub implements ServiceMonitor { } @Override - public Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances() { + public ServiceModel getServiceModelSnapshot() { + return new ServiceModel(getAllApplicationInstances()); + } + + private Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances() { // Convert apps information to the response payload to return Map<ApplicationInstanceReference, ApplicationInstance> status = new HashMap<>(); for (Map.Entry<ApplicationId, MockDeployer.ApplicationContext> app : apps.entrySet()) { @@ -84,8 +88,4 @@ public class ServiceMonitorStub implements ServiceMonitor { return status; } - @Override - public ServiceModel getServiceModelSnapshot() { - return new ServiceModel(getAllApplicationInstances()); - } } 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 d1d5f3e8c95..1a859cfacc5 100644 --- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ServiceMonitorInstanceLookupService.java +++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ServiceMonitorInstanceLookupService.java @@ -29,42 +29,17 @@ public class ServiceMonitorInstanceLookupService implements InstanceLookupServic @Override public Optional<ApplicationInstance> findInstanceById(ApplicationInstanceReference applicationInstanceReference) { - Map<ApplicationInstanceReference, ApplicationInstance> instanceMap - = serviceMonitor.getAllApplicationInstances(); - return Optional.ofNullable(instanceMap.get(applicationInstanceReference)); + return serviceMonitor.getServiceModelSnapshot().getApplicationInstance(applicationInstanceReference); } @Override public Optional<ApplicationInstance> findInstanceByHost(HostName hostName) { - Map<ApplicationInstanceReference, ApplicationInstance> instanceMap - = serviceMonitor.getAllApplicationInstances(); - List<ApplicationInstance> applicationInstancesUsingHost = instanceMap.entrySet().stream() - .filter(entry -> applicationInstanceUsesHost(entry.getValue(), hostName)) - .map(Map.Entry::getValue) - .collect(Collectors.toList()); - if (applicationInstancesUsingHost.isEmpty()) { - return Optional.empty(); - } - if (applicationInstancesUsingHost.size() > 1) { - throw new IllegalStateException( - "Major assumption broken: Multiple application instances contain host " + hostName.s() - + ": " + applicationInstancesUsingHost); - } - return Optional.of(applicationInstancesUsingHost.get(0)); + return Optional.ofNullable(serviceMonitor.getServiceModelSnapshot().getApplicationsByHostName().get(hostName)); } @Override public Set<ApplicationInstanceReference> knownInstances() { - return serviceMonitor.getAllApplicationInstances().keySet(); - } - - private static boolean applicationInstanceUsesHost(ApplicationInstance applicationInstance, - HostName hostName) { - return applicationInstance.serviceClusters().stream() - .anyMatch(serviceCluster -> - serviceCluster.serviceInstances().stream() - .anyMatch(serviceInstance -> - serviceInstance.hostName().equals(hostName))); + return serviceMonitor.getServiceModelSnapshot().getAllApplicationInstances().keySet(); } } 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 50ea31eb9c4..0a40555036c 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 @@ -17,6 +17,7 @@ import com.yahoo.vespa.service.slobrok.SlobrokMonitorManagerImpl; import java.util.Map; public class ServiceMonitorImpl implements ServiceMonitor { + private final ServiceModelCache serviceModelProvider; @Inject @@ -37,12 +38,8 @@ public class ServiceMonitorImpl implements ServiceMonitor { } @Override - public Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances() { - return serviceModelProvider.get().getAllApplicationInstances(); - } - - @Override public ServiceModel getServiceModelSnapshot() { return serviceModelProvider.get(); } + } 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 5ed34673da5..49539c61e5d 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 @@ -1,11 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.service.monitor; -import com.yahoo.vespa.applicationmodel.ApplicationInstance; -import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference; - -import java.util.Map; - /** * The service monitor interface. A service monitor provides up to date information about the liveness status * (up, down or not known) of each service instance in a Vespa zone @@ -15,11 +10,9 @@ import java.util.Map; public interface ServiceMonitor { /** - * Returns the current liveness status (up, down or unknown) of all instances + * Returns a ServiceModel which contains the current liveness status (up, down or unknown) of all instances * of all services of all clusters of all applications in a zone. */ - Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances(); - ServiceModel getServiceModelSnapshot(); } |