diff options
author | gjoranv <gv@yahoo-inc.com> | 2017-02-15 12:20:15 +0100 |
---|---|---|
committer | gjoranv <gv@yahoo-inc.com> | 2017-02-15 12:20:15 +0100 |
commit | 97538f46ba582cdc6d2f633370f363068a4c85ce (patch) | |
tree | b0b42522841773128553ace83d8503348ceb2a3c /config-model/src | |
parent | bde8b857da03c6fe44b5f464ea6202ce99da18fb (diff) |
Use the name of the deployed application
.. when an application is not given explicitly by the user.
Diffstat (limited to 'config-model/src')
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java | 22 |
1 files changed, 17 insertions, 5 deletions
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 7b9c9b9faf7..bbf1628223d 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 @@ -2,10 +2,11 @@ package com.yahoo.vespa.model.container.http.xml; import com.yahoo.component.ComponentSpecification; -import com.yahoo.config.application.Xml; 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.config.provision.ApplicationId; +import com.yahoo.config.provision.ApplicationName; import com.yahoo.log.LogLevel; import com.yahoo.text.XML; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; @@ -44,7 +45,7 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http> Element accessControlElem = XML.getChild(filteringElem, "access-control"); if (accessControlElem != null) { - accessControl = buildAccessControl(accessControlElem); + accessControl = buildAccessControl(ancestor, accessControlElem); bindings.addAll(getAccessControlBindings(ancestor, accessControl)); filterChains.add(new Chain<>(FilterChains.emptyChainSpec(ACCESS_CONTROL_CHAIN_ID))); } @@ -60,9 +61,11 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http> return http; } - private AccessControl buildAccessControl(Element accessControlElem) { - String applicationId = XML.getValue(XML.getChild(accessControlElem, "application")); - AccessControl.Builder builder = new AccessControl.Builder(accessControlElem.getAttribute("domain"), applicationId); + private AccessControl buildAccessControl(AbstractConfigProducer ancestor, Element accessControlElem) { + String application = XmlHelper.getOptionalChildValue(accessControlElem, "application") + .orElse(getDeployedApplicationId(ancestor).value()); + + AccessControl.Builder builder = new AccessControl.Builder(accessControlElem.getAttribute("domain"), application); XmlHelper.getOptionalAttribute(accessControlElem, "read").ifPresent( readAttr -> builder.readEnabled(Boolean.valueOf(readAttr))); @@ -79,6 +82,15 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http> return builder.build(); } + /** + * Returns the id of the deployed application, or the default value if not explicitly set (self-hosted). + */ + private static ApplicationName getDeployedApplicationId(AbstractConfigProducer ancestor) { + return getContainerCluster(ancestor) + .map(cluster -> cluster.getRoot().getDeployState().getProperties().applicationId().application()) + .orElse(ApplicationId.defaultId().application()); + } + private static List<Binding> getAccessControlBindings(AbstractConfigProducer ancestor, AccessControl accessControl) { return getContainerCluster(ancestor) .map(cluster -> cluster.getHandlers().stream() |