diff options
3 files changed, 33 insertions, 7 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java index a93ae926b52..405cfb47c72 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java @@ -38,11 +38,13 @@ public final class ApplicationContainer extends Container { JettyHttpServer server = Optional.ofNullable(getHttp()) .map(Http::getHttpServer) .orElse(getDefaultHttpServer()); - String serverName = server.getComponentId().getName(); - var connectorFactory = tlsCa - .map(caCert -> new HostedSslConnectorFactory(serverName, tlsSecrets.get(), caCert)) - .orElseGet(() -> new HostedSslConnectorFactory(serverName, tlsSecrets.get())); - server.addConnector(connectorFactory); + if (server.getConnectorFactories().stream().noneMatch(connectorFactory -> connectorFactory instanceof HostedSslConnectorFactory)) { + String serverName = server.getComponentId().getName(); + var connectorFactory = tlsCa + .map(caCert -> new HostedSslConnectorFactory(serverName, tlsSecrets.get(), caCert)) + .orElseGet(() -> new HostedSslConnectorFactory(serverName, tlsSecrets.get())); + server.addConnector(connectorFactory); + } } addComponent(getFS4ResourcePool()); // TODO Remove when FS4 based search protocol is gone } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java index 41997925666..9e02572737e 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java @@ -43,6 +43,11 @@ public abstract class ContainerModelBuilderTestBase { " <nodes>" + " <node hostalias='mockhost' />" + " </nodes>"; + public static final String multiNode = + " <nodes>" + + " <node hostalias='mockhost1' />" + + " <node hostalias='mockhost2' />" + + " </nodes>"; protected MockRoot root; diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java index f0fcb239521..929e520f984 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java @@ -5,6 +5,8 @@ import com.yahoo.config.model.api.TlsSecrets; import com.yahoo.config.model.builder.xml.test.DomBuilderTest; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.deploy.TestProperties; +import com.yahoo.config.model.provision.HostsXmlProvisioner; +import com.yahoo.config.model.test.MockRoot; import com.yahoo.container.ComponentsConfig; import com.yahoo.container.jdisc.FilterBindingsProvider; import com.yahoo.jdisc.http.ConnectorConfig; @@ -17,6 +19,7 @@ import com.yahoo.vespa.model.container.http.ssl.ConfiguredFilebasedSslProvider; import org.junit.Test; import org.w3c.dom.Element; +import java.io.StringReader; import java.util.List; import java.util.Optional; @@ -238,11 +241,27 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas " </ssl>", " </server>", " </http>", - nodesXml, + multiNode, "", "</container>"); - DeployState deployState = new DeployState.Builder().properties(new TestProperties().setHostedVespa(true).setTlsSecrets(Optional.of(new TlsSecrets("CERT", "KEY")))).build(); + String hostsxml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" + + "<hosts>\n" + + " <host name=\"mockhost-1\">\n" + + " <alias>mockhost1</alias>\n" + + " </host>\n" + + " <host name=\"mockhost-2\">\n" + + " <alias>mockhost2</alias>\n" + + " </host>\n" + + "</hosts>\n"; + DeployState deployState = new DeployState.Builder() + .properties( + new TestProperties() + .setHostedVespa(true) + .setTlsSecrets(Optional.of(new TlsSecrets("CERT", "KEY")))) + .modelHostProvisioner(new HostsXmlProvisioner(new StringReader(hostsxml))) + .build(); + MockRoot root = new MockRoot("root", deployState); createModel(root, deployState, null, clusterElem); ConnectorConfig sslProvider = root.getConfig(ConnectorConfig.class, "default/http/jdisc-jetty/ssl"); assertTrue(sslProvider.ssl().enabled()); |