summaryrefslogtreecommitdiffstats
path: root/orchestrator
diff options
context:
space:
mode:
Diffstat (limited to 'orchestrator')
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java50
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiFactory.java4
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java6
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorTest.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java5
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicyTest.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java4
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java2
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)))