diff options
3 files changed, 27 insertions, 21 deletions
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/StatusService.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/StatusService.java index 99f6c113193..c9e846906e3 100644 --- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/StatusService.java +++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/StatusService.java @@ -2,18 +2,18 @@ package com.yahoo.vespa.orchestrator.status; import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference; +import com.yahoo.vespa.applicationmodel.HostName; import com.yahoo.vespa.orchestrator.OrchestratorContext; import java.util.Set; +import java.util.function.Function; /** - * Service that can produce registries for the suspension of an application - * and its hosts. + * Service that can produce registries for the suspension of an application and its hosts. * - * The registry classes are pr application instance. - * TODO Remove readonly registry class (replace with actual methods) - only adds complexity. + * The registry class is per locked application instance. * - * @author oyving + * @author Øyvind Grønnesby * @author Tony Vaagenes * @author smorgrav */ @@ -64,4 +64,13 @@ public interface StatusService { * @return A Map between the application instance and its status. */ Set<ApplicationInstanceReference> getAllSuspendedApplications(); + + /** + * Returns a not necessarily consistent mapping from applications to their set of suspended hosts. + * + * If the lock for an application is held when this is acquired, the view of that application's hosts + * is consistent and up to date for as long as the lock is held. + */ + Function<ApplicationInstanceReference, Set<HostName>> getSuspendedHostsByApplication(); + } diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java index 877a5b244b3..89172a831f4 100644 --- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java +++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java @@ -33,8 +33,7 @@ import org.mockito.InOrder; import java.util.Arrays; import java.util.Iterator; import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; +import java.util.Set; import static com.yahoo.vespa.orchestrator.status.ApplicationInstanceStatus.ALLOWED_TO_BE_DOWN; import static com.yahoo.vespa.orchestrator.status.ApplicationInstanceStatus.NO_REMARKS; @@ -53,7 +52,7 @@ import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.spy; /** - * Test Orchestrator with a mock backend (the InMemoryStatusService) + * Test Orchestrator with a mock backend (the MockCurator) * * @author smorgrav */ @@ -326,20 +325,17 @@ public class OrchestratorImplTest { new ApplicationInstance( tenantId, applicationInstanceId, - Stream.of(new ServiceCluster( + Set.of(new ServiceCluster( new ClusterId("clusterId"), new ServiceType("serviceType"), - Stream.of( - new ServiceInstance( - new ConfigId("configId1"), - hostName, - ServiceStatus.UP), - new ServiceInstance( - new ConfigId("configId2"), - hostName, - ServiceStatus.NOT_CHECKED)) - .collect(Collectors.toSet()))) - .collect(Collectors.toSet())); + Set.of(new ServiceInstance( + new ConfigId("configId1"), + hostName, + ServiceStatus.UP), + new ServiceInstance( + new ConfigId("configId2"), + hostName, + ServiceStatus.NOT_CHECKED))))); InstanceLookupService lookupService = new ServiceMonitorInstanceLookupService( () -> new ServiceModel(Map.of(reference, applicationInstance))); diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionResourceTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionResourceTest.java index c575811fd6d..94df28a6921 100644 --- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionResourceTest.java +++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionResourceTest.java @@ -158,7 +158,8 @@ public class ApplicationSuspensionResourceTest { " <config name=\"container.handler.threadpool\">\n" + " <maxthreads>10</maxthreads>\n" + " </config>\n" + - " <component id=\"com.yahoo.vespa.orchestrator.status.InMemoryStatusService\" bundle=\"orchestrator\" />\n" + + " <component id=\"com.yahoo.vespa.curator.mock.MockCurator\" bundle=\"zkfacade\" />\n" + + " <component id=\"com.yahoo.vespa.orchestrator.status.ZookeeperStatusService\" bundle=\"orchestrator\" />\n" + " <component id=\"com.yahoo.vespa.orchestrator.DummyInstanceLookupService\" bundle=\"orchestrator\" />\n" + " <component id=\"com.yahoo.vespa.orchestrator.OrchestratorImpl\" bundle=\"orchestrator\" />\n" + " <component id=\"com.yahoo.vespa.orchestrator.controller.ClusterControllerClientFactoryMock\" bundle=\"orchestrator\" />\n" + |