summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-11-26 15:10:03 +0100
committerHarald Musum <musum@verizonmedia.com>2020-11-26 15:10:03 +0100
commit6b758c16509fc5cbfce17461094aff9c4b79e15a (patch)
tree818369ff7c0d7e9a480dcbc6c9e9bc65dc04f140 /config-model
parent055e3a8a117bf454f8e930573f324ccab0b5247c (diff)
Setup components and config for container cluster when zookeeper is configured
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java22
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java11
3 files changed, 31 insertions, 5 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
index 4e7405a7d99..89c32c0d702 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.container;
import ai.vespa.metricsproxy.http.application.ApplicationMetricsHandler;
+import com.yahoo.cloud.config.ZookeeperServerConfig;
import com.yahoo.component.ComponentId;
import com.yahoo.component.ComponentSpecification;
import com.yahoo.config.FileReference;
@@ -27,6 +28,7 @@ import com.yahoo.vespa.model.container.component.ConfigProducerGroup;
import com.yahoo.vespa.model.container.component.Handler;
import com.yahoo.vespa.model.container.component.Servlet;
import com.yahoo.vespa.model.container.component.SystemBindingPattern;
+import com.yahoo.vespa.model.container.configserver.ConfigserverCluster;
import com.yahoo.vespa.model.container.jersey.Jersey2Servlet;
import com.yahoo.vespa.model.container.jersey.RestApi;
import com.yahoo.vespa.model.container.xml.PlatformBundles;
@@ -53,7 +55,8 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
RankingConstantsConfig.Producer,
ServletPathsConfig.Producer,
ContainerMbusConfig.Producer,
- MetricsProxyApiConfig.Producer {
+ MetricsProxyApiConfig.Producer,
+ ZookeeperServerConfig.Producer {
public static final String METRICS_V2_HANDLER_CLASS = MetricsV2Handler.class.getName();
public static final BindingPattern METRICS_V2_HANDLER_BINDING_1 = SystemBindingPattern.fromHttpPath(MetricsV2Handler.V2_PATH);
@@ -72,6 +75,8 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
private final ConfigProducerGroup<Servlet> servletGroup;
private final ConfigProducerGroup<RestApi> restApiGroup;
+ private final boolean dynamicReconfigurationOfZookeeperCluster;
+
private ContainerModelEvaluation modelEvaluation;
private Optional<String> tlsClientAuthority;
@@ -84,6 +89,7 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
public ApplicationContainerCluster(AbstractConfigProducer<?> parent, String configSubId, String clusterId, DeployState deployState) {
super(parent, configSubId, clusterId, deployState, true);
this.tlsClientAuthority = deployState.tlsClientAuthority();
+ this.dynamicReconfigurationOfZookeeperCluster = deployState.getProperties().featureFlags().dynamicReconfigurationOfZookeeperCluster();
restApiGroup = new ConfigProducerGroup<>(this, "rest-api");
servletGroup = new ConfigProducerGroup<>(this, "servlet");
@@ -251,6 +257,20 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
}
}
+ @Override
+ public void getConfig(ZookeeperServerConfig.Builder builder) {
+ if (getParent() instanceof ConfigserverCluster) return; // Produces its own config
+
+ // Note: Default client and server ports are used, so not set here
+ for (Container container : getContainers()) {
+ ZookeeperServerConfig.Server.Builder serverBuilder = new ZookeeperServerConfig.Server.Builder();
+ serverBuilder.hostname(container.getHostName());
+ serverBuilder.id(container.index());
+ builder.server(serverBuilder);
+ builder.dynamicReconfiguration(dynamicReconfigurationOfZookeeperCluster);
+ }
+ }
+
public Optional<String> getTlsClientAuthority() {
return tlsClientAuthority;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
index b7d64483e57..42e93586d79 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
@@ -218,7 +218,8 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
MIN_ZOOKEEPER_NODE_COUNT + " and " + MAX_ZOOKEEPER_NODE_COUNT);
}
cluster.addSimpleComponent("com.yahoo.vespa.curator.Curator", null, "zkfacade");
- // TODO: Add server component
+ cluster.addSimpleComponent("com.yahoo.vespa.curator.ReconfigurableVespaZooKeeperServer", null, "zkfacade");
+ cluster.addSimpleComponent("com.yahoo.vespa.curator.Reconfigurer", null, "zkfacade");
}
private void addSecretStore(ApplicationContainerCluster cluster, Element spec) {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
index 32dd5cc944c..10960826694 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
@@ -884,11 +884,11 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
tester.addHosts(3);
{
VespaModel model = tester.createModel(servicesXml.apply(3), true);
- String componentId = "com.yahoo.vespa.curator.Curator";
ApplicationContainerCluster cluster = model.getContainerClusters().get("default");
assertNotNull(cluster);
- Component<?, ?> curatorComponent = cluster.getComponentsMap().get(ComponentId.fromString(componentId));
- assertNotNull(curatorComponent);
+ assertComponentConfigured(cluster,"com.yahoo.vespa.curator.Curator");
+ assertComponentConfigured(cluster,"com.yahoo.vespa.curator.ReconfigurableVespaZooKeeperServer");
+ assertComponentConfigured(cluster,"com.yahoo.vespa.curator.Reconfigurer");
}
{
try {
@@ -915,6 +915,11 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
}
}
+ private void assertComponentConfigured(ApplicationContainerCluster cluster, String componentId) {
+ Component<?, ?> curatorComponent = cluster.getComponentsMap().get(ComponentId.fromString(componentId));
+ assertNotNull(curatorComponent);
+ }
+
private Element generateContainerElementWithRenderer(String rendererId) {
return DomBuilderTest.parse(
"<container id='default' version='1.0'>",