summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-11-26 23:59:11 +0100
committerGitHub <noreply@github.com>2020-11-26 23:59:11 +0100
commit371e9b50738dafc28c7ab2aea6495d26ecd6c0c9 (patch)
treecab2e619b30910b8d90bf39415fd3541b448a2df /config-model
parentef4ece0ae64a1f1ec8accb257168b2a08d6971b1 (diff)
parent4478bf54b2bef0c9dec322339e1c5ef62912b060 (diff)
Merge pull request #15486 from vespa-engine/hmusum/configure-zookeeper-cluster
Setup components and config for container cluster when zookeeper is c…
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java19
-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, 28 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..2b8966ed541 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);
@@ -251,6 +254,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(true);
+ }
+ }
+
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..9a2814fbf03 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.zookeeper.ReconfigurableVespaZooKeeperServer", null, "zookeeper-server");
+ cluster.addSimpleComponent("com.yahoo.vespa.zookeeper.Reconfigurer", null, "zookeeper-server");
}
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..06378c2ea6e 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.zookeeper.ReconfigurableVespaZooKeeperServer");
+ assertComponentConfigured(cluster,"com.yahoo.vespa.zookeeper.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'>",