diff options
author | Morten Tokle <mortent@oath.com> | 2018-09-11 14:28:20 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@oath.com> | 2018-09-12 10:49:39 +0200 |
commit | d75b41bfec78c369342645ce7274c9edf6d9ced6 (patch) | |
tree | 1fc7488dc2836fba93980755b280c5db79cb7f74 /config-model | |
parent | 3e3f194ab5e09579a815e5f0332a695894b11154 (diff) |
ssl-provider ComponentDefinition -> BundleSpec
Diffstat (limited to 'config-model')
6 files changed, 22 insertions, 21 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/CustomSslProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/CustomSslProvider.java index 46daa2e5c43..bc211925576 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/CustomSslProvider.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/CustomSslProvider.java @@ -13,9 +13,11 @@ import static com.yahoo.component.ComponentSpecification.fromString; * @author mortent */ public class CustomSslProvider extends SimpleComponent implements ConnectorConfig.Producer { - public CustomSslProvider(String componentId, String className, String bundle) { + public static final String COMPONENT_ID_PREFIX = "ssl-provider@"; + + public CustomSslProvider(String serverName, String className, String bundle) { super(new ComponentModel( - new BundleInstantiationSpecification(new ComponentId(componentId), + new BundleInstantiationSpecification(new ComponentId(COMPONENT_ID_PREFIX + serverName), fromString(className), fromString(bundle)))); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/DefaultSslProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/DefaultSslProvider.java index 8c4ef9ddf72..fc4b6b8cd0f 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/DefaultSslProvider.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/DefaultSslProvider.java @@ -16,7 +16,7 @@ import static com.yahoo.component.ComponentSpecification.fromString; * @author mortent */ public class DefaultSslProvider extends SimpleComponent implements ConnectorConfig.Producer { - public static final String COMPONENT_ID = "default-ssl-provider"; + public static final String COMPONENT_ID_PREFIX = "default-ssl-provider@"; public static final String COMPONENT_CLASS = DefaultSslContextFactoryProvider.class.getName(); public static final String COMPONENT_BUNDLE = "jdisc_http_service"; @@ -25,9 +25,9 @@ public class DefaultSslProvider extends SimpleComponent implements ConnectorConf private final String caCertificatePath; private final ConnectorConfig.Ssl.ClientAuth.Enum clientAuthentication; - public DefaultSslProvider(String privateKeyPath, String certificatePath, String caCertificatePath, String clientAuthentication) { + public DefaultSslProvider(String servername, String privateKeyPath, String certificatePath, String caCertificatePath, String clientAuthentication) { super(new ComponentModel( - new BundleInstantiationSpecification(new ComponentId(COMPONENT_ID), + new BundleInstantiationSpecification(new ComponentId(COMPONENT_ID_PREFIX+servername), fromString(COMPONENT_CLASS), fromString(COMPONENT_BUNDLE)))); this.privateKeyPath = privateKeyPath; @@ -46,7 +46,7 @@ public class DefaultSslProvider extends SimpleComponent implements ConnectorConf } public SimpleComponent getComponent() { - return new SimpleComponent(new ComponentModel(COMPONENT_ID, COMPONENT_CLASS, COMPONENT_BUNDLE)); + return new SimpleComponent(new ComponentModel(getComponentId().stringValue(), COMPONENT_CLASS, COMPONENT_BUNDLE)); } private static ConnectorConfig.Ssl.ClientAuth.Enum mapToConfigEnum(String clientAuthValue) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java index 4ab70b05a54..6061ce45ce4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java @@ -54,15 +54,15 @@ public class JettyConnectorBuilder extends VespaDomBuilder.DomConfigProducerBuil Optional<String> caCertificateFile = XmlHelper.getOptionalChildValue(sslConfigurator, "ca-certificates-file"); Optional<String> clientAuthentication = XmlHelper.getOptionalChildValue(sslConfigurator, "client-authentication"); return new DefaultSslProvider( + serverName, privateKeyFile, certificateFile, caCertificateFile.orElse(null), clientAuthentication.orElse(null)); } else if (sslProviderConfigurator != null) { - String id = sslProviderConfigurator.getAttribute("id"); String className = sslProviderConfigurator.getAttribute("class"); String bundle = sslProviderConfigurator.getAttribute("bundle"); - return new CustomSslProvider(id, className, bundle); + return new CustomSslProvider(serverName, className, bundle); } else { // No ssl config.. return new DummySslProvider(serverName); diff --git a/config-model/src/main/resources/schema/containercluster.rnc b/config-model/src/main/resources/schema/containercluster.rnc index 4aaa718fb84..991bd13f4a0 100644 --- a/config-model/src/main/resources/schema/containercluster.rnc +++ b/config-model/src/main/resources/schema/containercluster.rnc @@ -99,7 +99,7 @@ Ssl = element ssl { } SslProvider = element ssl-provider { - ComponentDefinition + BundleSpec } # REST-API: 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 5d06e616a11..ff50acce3f0 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 @@ -265,21 +265,21 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas "</jdisc>"); createModel(root, clusterElem); - ConnectorConfig minimalCfg = root.getConfig(ConnectorConfig.class, "default/http/jdisc-jetty/minimal/default-ssl-provider"); + ConnectorConfig minimalCfg = root.getConfig(ConnectorConfig.class, "default/http/jdisc-jetty/minimal/default-ssl-provider@minimal"); assertTrue(minimalCfg.ssl().enabled()); assertThat(minimalCfg.ssl().privateKeyFile(), is(equalTo("/foo/key"))); assertThat(minimalCfg.ssl().certificateFile(), is(equalTo("/foo/cert"))); assertThat(minimalCfg.ssl().caCertificateFile(), is(equalTo(""))); assertThat(minimalCfg.ssl().clientAuth(), is(equalTo(ConnectorConfig.Ssl.ClientAuth.Enum.DISABLED))); - ConnectorConfig withCaCerts = root.getConfig(ConnectorConfig.class, "default/http/jdisc-jetty/with-cacerts/default-ssl-provider"); + ConnectorConfig withCaCerts = root.getConfig(ConnectorConfig.class, "default/http/jdisc-jetty/with-cacerts/default-ssl-provider@with-cacerts"); assertTrue(withCaCerts.ssl().enabled()); assertThat(withCaCerts.ssl().privateKeyFile(), is(equalTo("/foo/key"))); assertThat(withCaCerts.ssl().certificateFile(), is(equalTo("/foo/cert"))); assertThat(withCaCerts.ssl().caCertificateFile(), is(equalTo("/foo/cacerts"))); assertThat(withCaCerts.ssl().clientAuth(), is(equalTo(ConnectorConfig.Ssl.ClientAuth.Enum.DISABLED))); - ConnectorConfig needClientAuth = root.getConfig(ConnectorConfig.class, "default/http/jdisc-jetty/need-client-auth/default-ssl-provider"); + ConnectorConfig needClientAuth = root.getConfig(ConnectorConfig.class, "default/http/jdisc-jetty/need-client-auth/default-ssl-provider@need-client-auth"); assertTrue(needClientAuth.ssl().enabled()); assertThat(needClientAuth.ssl().privateKeyFile(), is(equalTo("/foo/key"))); assertThat(needClientAuth.ssl().certificateFile(), is(equalTo("/foo/cert"))); @@ -288,16 +288,16 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas ContainerCluster cluster = (ContainerCluster) root.getChildren().get("default"); List<ConnectorFactory> connectorFactories = cluster.getChildrenByTypeRecursive(ConnectorFactory.class); - connectorFactories.forEach(connectorFactory -> assertChildComponentExists(connectorFactory, DefaultSslProvider.COMPONENT_ID, DefaultSslProvider.COMPONENT_CLASS)); + connectorFactories.forEach(connectorFactory -> assertChildComponentExists(connectorFactory, DefaultSslProvider.COMPONENT_CLASS)); } @Test - public void verify_ssl_provider_configuration() { + public void verify_tht_ssl_provider_configuration_configures_correct_config() { Element clusterElem = DomBuilderTest.parse( "<jdisc id='default' version='1.0' jetty='true'>", " <http>", " <server port='9000' id='ssl'>", - " <ssl-provider id='ssl-provider' class='com.yahoo.CustomSslProvider' bundle='mybundle'/>", + " <ssl-provider class='com.yahoo.CustomSslProvider' bundle='mybundle'/>", " </server>", " </http>", nodesXml, @@ -305,14 +305,14 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas "</jdisc>"); createModel(root, clusterElem); - ConnectorConfig sslProvider = root.getConfig(ConnectorConfig.class, "default/http/jdisc-jetty/ssl/ssl-provider"); + ConnectorConfig sslProvider = root.getConfig(ConnectorConfig.class, "default/http/jdisc-jetty/ssl/ssl-provider@ssl"); assertTrue(sslProvider.ssl().enabled()); ContainerCluster cluster = (ContainerCluster) root.getChildren().get("default"); List<ConnectorFactory> connectorFactories = cluster.getChildrenByTypeRecursive(ConnectorFactory.class); ConnectorFactory connectorFactory = connectorFactories.get(0); - assertChildComponentExists(connectorFactory, "ssl-provider", "com.yahoo.CustomSslProvider"); + assertChildComponentExists(connectorFactory, "com.yahoo.CustomSslProvider"); } private static void assertConnectorHasInjectedComponents(ConnectorFactory connectorFactory, String... componentNames) { @@ -334,11 +334,10 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas assertThat(spec.bundle.toString(), is(bundleName)); } - private static void assertChildComponentExists(ConnectorFactory connectorFactory, String componentId, String className) { + private static void assertChildComponentExists(ConnectorFactory connectorFactory, String className) { Optional<SimpleComponent> simpleComponent = connectorFactory.getChildren().values().stream() .map(z -> (SimpleComponent) z) - .filter(component -> component.getComponentId().stringValue().equals(componentId) && - component.getClassId().stringValue().equals(className)) + .filter(component -> component.getClassId().stringValue().equals(className)) .findFirst(); assertTrue(simpleComponent.isPresent()); } diff --git a/config-model/src/test/schema-test-files/services.xml b/config-model/src/test/schema-test-files/services.xml index b34fa71cf11..21d6693720e 100644 --- a/config-model/src/test/schema-test-files/services.xml +++ b/config-model/src/test/schema-test-files/services.xml @@ -130,7 +130,7 @@ </ssl> </server> <server port="4083" id="sslProvider"> - <ssl-provider id="ssl-provider" class="com.yahoo.MySslProvider" bundle="mybundle"/> + <ssl-provider class="com.yahoo.MySslProvider" bundle="mybundle"/> </server> </http> |