diff options
Diffstat (limited to 'orchestrator')
9 files changed, 49 insertions, 28 deletions
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 6d50002669d..061b3f706a5 100644 --- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java +++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java @@ -13,6 +13,7 @@ import com.yahoo.vespa.applicationmodel.HostName; import com.yahoo.vespa.applicationmodel.ServiceCluster; import com.yahoo.vespa.applicationmodel.ServiceInstance; import com.yahoo.vespa.flags.FlagSource; +import com.yahoo.vespa.flags.Flags; import com.yahoo.vespa.orchestrator.config.OrchestratorConfig; import com.yahoo.vespa.orchestrator.controller.ClusterControllerClient; import com.yahoo.vespa.orchestrator.controller.ClusterControllerClientFactory; @@ -70,24 +71,51 @@ public class OrchestratorImpl implements Orchestrator { private final ApplicationApiFactory applicationApiFactory; @Inject - public OrchestratorImpl(ClusterControllerClientFactory clusterControllerClientFactory, + public OrchestratorImpl(OrchestratorConfig orchestratorConfig, + ConfigserverConfig configServerConfig, + ClusterControllerClientFactory clusterControllerClientFactory, StatusService statusService, - OrchestratorConfig orchestratorConfig, ServiceMonitor serviceMonitor, - ConfigserverConfig configServerConfig, FlagSource flagSource, Zone zone) { + this(clusterControllerClientFactory, + statusService, + serviceMonitor, + flagSource, + zone, + Clock.systemUTC(), + new ApplicationApiFactory(configServerConfig.zookeeperserver().size(), + resolveNumProxies(orchestratorConfig, flagSource), + Clock.systemUTC()), + orchestratorConfig.serviceMonitorConvergenceLatencySeconds()); + } + + private static int resolveNumProxies(OrchestratorConfig orchestratorConfig, FlagSource flagSource) { + return Flags.ORCHESTRATE_MISSING_PROXIES.bindTo(flagSource).value() ? + orchestratorConfig.numProxies() : + 0; + } + + private OrchestratorImpl(ClusterControllerClientFactory clusterControllerClientFactory, + StatusService statusService, + ServiceMonitor serviceMonitor, + FlagSource flagSource, + Zone zone, + Clock clock, + ApplicationApiFactory applicationApiFactory, + int serviceMonitorConvergenceLatencySeconds) + { this(new HostedVespaPolicy(new HostedVespaClusterPolicy(flagSource, zone), clusterControllerClientFactory, - new ApplicationApiFactory(configServerConfig.zookeeperserver().size(), Clock.systemUTC())), - clusterControllerClientFactory, - statusService, - serviceMonitor, - orchestratorConfig.serviceMonitorConvergenceLatencySeconds(), - Clock.systemUTC(), - new ApplicationApiFactory(configServerConfig.zookeeperserver().size(), Clock.systemUTC()), - flagSource); + applicationApiFactory), + clusterControllerClientFactory, + statusService, + serviceMonitor, + serviceMonitorConvergenceLatencySeconds, + clock, + applicationApiFactory, + flagSource); } public OrchestratorImpl(Policy policy, diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiFactory.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiFactory.java index a3f2fd6e235..35dd9c5051a 100644 --- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiFactory.java +++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiFactory.java @@ -18,8 +18,8 @@ public class ApplicationApiFactory { private final OrchestrationParams orchestrationParams; private final Clock clock; - public ApplicationApiFactory(int numberOfConfigServers, Clock clock) { - this.orchestrationParams = HostedVespaOrchestration.create(numberOfConfigServers, 0); + public ApplicationApiFactory(int numberOfConfigServers, int numProxies, Clock clock) { + this.orchestrationParams = HostedVespaOrchestration.create(numberOfConfigServers, numProxies); this.clock = clock; } diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java index e9a27cddaeb..e2c0c337dae 100644 --- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java +++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java @@ -1,7 +1,6 @@ // Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.orchestrator.policy; -import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.config.provision.ApplicationId; import com.yahoo.vespa.applicationmodel.ClusterId; import com.yahoo.vespa.applicationmodel.ServiceType; @@ -12,11 +11,6 @@ import com.yahoo.vespa.applicationmodel.ServiceType; * @author hakonhall */ public class HostedVespaOrchestration { - public static OrchestrationParams create(ConfigserverConfig configserverConfig) { - // todo: get the number of proxy nodes - return create(configserverConfig.zookeeperserver().size(), 0); - } - public static OrchestrationParams create(int numConfigServers, int numProxies) { // We'll create parameters for both the controller and config server applications, even though // only one of them is present, as (a) no harm is done by having the extra parameters, and 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 7d1b69d7171..957c748d0b3 100644 --- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java +++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java @@ -81,7 +81,7 @@ public class OrchestratorImplTest { private static final Zone zone = Zone.defaultZone(); private final ManualClock clock = new ManualClock(); - private final ApplicationApiFactory applicationApiFactory = new ApplicationApiFactory(3, clock); + private final ApplicationApiFactory applicationApiFactory = new ApplicationApiFactory(3, 5, clock); private final InMemoryFlagSource flagSource = new InMemoryFlagSource(); private final MockCurator curator = new MockCurator(); private final ZkStatusService statusService = new ZkStatusService( diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorTest.java index 193798d35fc..83c902ed981 100644 --- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorTest.java +++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorTest.java @@ -57,7 +57,7 @@ public class OrchestratorTest { var flagSource = new InMemoryFlagSource(); var timer = new TestTimer(); var clustercontroller = new ClusterControllerClientFactoryMock(); - var applicationApiFactory = new ApplicationApiFactory(3, timer.toUtcClock()); + var applicationApiFactory = new ApplicationApiFactory(3, 5, timer.toUtcClock()); var policy = new HostedVespaPolicy(new HostedVespaClusterPolicy(flagSource, zone), clustercontroller, applicationApiFactory); var zone = new Zone(SystemName.cd, Environment.prod, RegionName.from("cd-us-east-1")); this.superModelManager = new MySuperModelProvider(); diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java index 6ec03ba3c44..ac7b10c034e 100644 --- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java +++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java @@ -63,8 +63,9 @@ class ModelTestUtils { new ApplicationInstanceId("application-name:foo:bar:default"); public static final int NUMBER_OF_CONFIG_SERVERS = 3; + public static final int NUMBER_OF_PROXIES = 5; public static final OrchestrationParams ORCHESTRATION_PARAMS = - HostedVespaOrchestration.create(NUMBER_OF_CONFIG_SERVERS, 0); + HostedVespaOrchestration.create(NUMBER_OF_CONFIG_SERVERS, NUMBER_OF_PROXIES); public static final ApplicationParams APPLICATION_PARAMS = ORCHESTRATION_PARAMS .getApplicationParams(OrchestratorUtil.toApplicationId( new ApplicationInstanceReference(TENANT_ID, APPLICATION_INSTANCE_ID))); @@ -92,7 +93,7 @@ class ModelTestUtils { private final ManualClock clock = new ManualClock(); ApplicationApiFactory applicationApiFactory() { - return new ApplicationApiFactory(NUMBER_OF_CONFIG_SERVERS, clock); + return new ApplicationApiFactory(NUMBER_OF_CONFIG_SERVERS, NUMBER_OF_PROXIES, clock); } HostInfos getHostInfos() { diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicyTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicyTest.java index 385f7b238af..37b1615abbd 100644 --- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicyTest.java +++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicyTest.java @@ -36,7 +36,7 @@ public class HostedVespaPolicyTest { private final ClusterControllerClientFactory clientFactory = mock(ClusterControllerClientFactory.class); private final ClusterControllerClient client = mock(ClusterControllerClient.class); private final ManualClock clock = new ManualClock(); - private final ApplicationApiFactory applicationApiFactory = new ApplicationApiFactory(3, clock); + private final ApplicationApiFactory applicationApiFactory = new ApplicationApiFactory(3, 5, clock); @Before public void setUp() { diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java index 76d00943e07..20dfd03a86f 100644 --- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java +++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java @@ -44,11 +44,9 @@ class ApplicationSuspensionRequestHandlerTest { void createHandler() { DummyServiceMonitor serviceMonitor = new DummyServiceMonitor(); Orchestrator orchestrator = new OrchestratorImpl( - new ClusterControllerClientFactoryMock(), + new OrchestratorConfig(new OrchestratorConfig.Builder()), new ConfigserverConfig(new ConfigserverConfig.Builder()), new ClusterControllerClientFactoryMock(), new ZkStatusService(new MockCurator(), new MockMetric(), new SystemTimer(), serviceMonitor), - new OrchestratorConfig(new OrchestratorConfig.Builder()), serviceMonitor, - new ConfigserverConfig(new ConfigserverConfig.Builder()), new InMemoryFlagSource(), Zone.defaultZone()); var handler = new ApplicationSuspensionRequestHandler(RestApiTestDriver.createHandlerTestContext(), orchestrator); diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java index f6dc6d7676c..3f1aa2d5a2e 100644 --- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java +++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java @@ -79,7 +79,7 @@ class HostRequestHandlerTest { private static final ServiceMonitor serviceMonitor = mock(ServiceMonitor.class); private static final StatusService EVERY_HOST_IS_UP_HOST_STATUS_SERVICE = new ZkStatusService( new MockCurator(), mock(Metric.class), new TestTimer(), new DummyAntiServiceMonitor()); - private static final ApplicationApiFactory applicationApiFactory = new ApplicationApiFactory(3, clock); + private static final ApplicationApiFactory applicationApiFactory = new ApplicationApiFactory(3, 5, clock); static { when(serviceMonitor.getApplication(any(HostName.class))) |