diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-11-26 15:10:03 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2020-11-26 15:10:03 +0100 |
commit | 6b758c16509fc5cbfce17461094aff9c4b79e15a (patch) | |
tree | 818369ff7c0d7e9a480dcbc6c9e9bc65dc04f140 /config-model | |
parent | 055e3a8a117bf454f8e930573f324ccab0b5247c (diff) |
Setup components and config for container cluster when zookeeper is configured
Diffstat (limited to 'config-model')
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'>", |