aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2020-01-17 13:18:26 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2020-01-17 13:18:26 +0100
commitbf76355d3cc26f9e99013a30369cef5537ae72b0 (patch)
treeb6a9ba552a0f095e38f6e127ccb2ed40cc27ad40
parent6f695e3201aaa24a0672e81a24fea478479b89a4 (diff)
Allow requiring ports illegal for tenants
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java14
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java3
-rw-r--r--config-model/src/main/resources/schema/containercluster.rnc1
4 files changed, 11 insertions, 9 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java
index bc207d1f36f..400ddf80cf9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java
@@ -97,7 +97,7 @@ public class Http extends AbstractConfigProducer<AbstractConfigProducer<?>> impl
if (bindings.isEmpty()) return;
if (filterChains == null)
- throw new IllegalArgumentException("Null FilterChains is not allowed when there are filter bindings!");
+ throw new IllegalArgumentException("Null FilterChains are not allowed when there are filter bindings");
ComponentRegistry<ChainedComponent<?>> filters = filterChains.componentsRegistry();
ComponentRegistry<Chain<Filter>> chains = filterChains.allChains();
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java
index e04604a6ca3..38915b97a61 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java
@@ -10,6 +10,7 @@ import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.text.XML;
import com.yahoo.vespa.defaults.Defaults;
+import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
import com.yahoo.vespa.model.container.Container;
import com.yahoo.vespa.model.container.ApplicationContainerCluster;
@@ -127,19 +128,18 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http>
http.setHttpServer(new JettyHttpServerBuilder().build(deployState, ancestor, spec));
}
- static int readPort(Element spec, boolean isHosted) {
- String portString = spec.getAttribute("port");
- if (portString == null || portString.isEmpty())
+ static int readPort(ModelElement spec, boolean isHosted) {
+ Integer port = spec.integerAttribute("port");
+ if (port == null)
return Defaults.getDefaults().vespaWebServicePort();
- int port = Integer.parseInt(portString);
if (port < 0)
- throw new IllegalArgumentException(String.format("Invalid port %d.", port));
+ throw new IllegalArgumentException("Invalid port " + port);
int legalPortInHostedVespa = Container.BASEPORT;
- if (isHosted && port != legalPortInHostedVespa)
+ if (isHosted && port != legalPortInHostedVespa && ! spec.booleanAttribute("required", false))
throw new IllegalArgumentException("Illegal port " + port + " in http server '" +
- spec.getAttribute("id") + "'" +
+ spec.stringAttribute("id") + "'" +
": Port must be set to " + legalPortInHostedVespa);
return port;
}
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 052cb289655..99da1dbbfc2 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
@@ -5,6 +5,7 @@ import com.yahoo.config.model.builder.xml.XmlHelper;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.text.XML;
+import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
import com.yahoo.vespa.model.container.component.SimpleComponent;
import com.yahoo.vespa.model.container.http.ConnectorFactory;
@@ -24,7 +25,7 @@ public class JettyConnectorBuilder extends VespaDomBuilder.DomConfigProducerBuil
@Override
protected ConnectorFactory doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element serverSpec) {
String name = XmlHelper.getIdString(serverSpec);
- int port = HttpBuilder.readPort(serverSpec, deployState.isHosted());
+ int port = HttpBuilder.readPort(new ModelElement(serverSpec), deployState.isHosted());
SimpleComponent sslProviderComponent = getSslConfigComponents(name, serverSpec);
return new ConnectorFactory(name, port, sslProviderComponent);
diff --git a/config-model/src/main/resources/schema/containercluster.rnc b/config-model/src/main/resources/schema/containercluster.rnc
index ffa26bc6251..6e4346d96ee 100644
--- a/config-model/src/main/resources/schema/containercluster.rnc
+++ b/config-model/src/main/resources/schema/containercluster.rnc
@@ -65,6 +65,7 @@ Filtering = element filtering {
HttpServer = element server {
attribute port { xsd:nonNegativeInteger }? &
+ attribute required { xsd:boolean }? &
ComponentId &
(Ssl | SslProvider)? &
GenericConfig*