diff options
author | Morten Tokle <mortent@oath.com> | 2017-10-31 15:11:54 +0100 |
---|---|---|
committer | Morten Tokle <mortent@oath.com> | 2017-11-07 14:35:06 +0100 |
commit | 0784bf4a17cc30f35c2c56214fe06833d391425e (patch) | |
tree | 6253d6d73c2f76480741e7e6802b5193a76e19f6 /config-model | |
parent | 10785b22ba9d85fd8dddfbe1b337c3a84191cab5 (diff) |
Propagate loadBalancerAddress
Diffstat (limited to 'config-model')
5 files changed, 48 insertions, 5 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java index aec4c5b3ec6..942320ecd40 100644 --- a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java +++ b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java @@ -2,8 +2,11 @@ package com.yahoo.config.model.deploy; import com.yahoo.config.model.api.ConfigServerSpec; -import com.yahoo.config.provision.*; +import com.yahoo.config.provision.ApplicationId; +import com.yahoo.config.provision.Version; +import com.yahoo.config.provision.Zone; +import java.net.URI; import java.util.ArrayList; import java.util.List; @@ -18,6 +21,7 @@ public class DeployProperties { private final boolean multitenant; private final ApplicationId applicationId; private final List<ConfigServerSpec> serverSpecs = new ArrayList<>(); + private final URI loadBalancerAddress; private final boolean hostedVespa; private final Version vespaVersion; private final Zone zone; @@ -25,7 +29,11 @@ public class DeployProperties { private DeployProperties(boolean multitenant, ApplicationId applicationId, List<ConfigServerSpec> configServerSpecs, - boolean hostedVespa, Version vespaVersion, Zone zone) { + URI loadBalancerAddress, + boolean hostedVespa, + Version vespaVersion, + Zone zone) { + this.loadBalancerAddress = loadBalancerAddress; this.vespaVersion = vespaVersion; this.zone = zone; this.multitenant = multitenant || hostedVespa || Boolean.getBoolean("multitenant"); @@ -47,6 +55,10 @@ public class DeployProperties { return serverSpecs; } + public URI loadBalancerAddress() { + return loadBalancerAddress; + } + public boolean hostedVespa() { return hostedVespa; } @@ -63,6 +75,7 @@ public class DeployProperties { private ApplicationId applicationId = ApplicationId.defaultId(); private boolean multitenant = false; private List<ConfigServerSpec> configServerSpecs = new ArrayList<>(); + private URI loadBalancerAddress; private boolean hostedVespa = false; private Version vespaVersion = Version.fromIntValues(1, 0, 0); private Zone zone = Zone.defaultZone(); @@ -82,6 +95,11 @@ public class DeployProperties { return this; } + public Builder loadBalancerAddress(URI loadBalancerAddress) { + this.loadBalancerAddress = loadBalancerAddress; + return this; + } + public Builder vespaVersion(Version version) { this.vespaVersion = version; return this; @@ -98,7 +116,7 @@ public class DeployProperties { } public DeployProperties build() { - return new DeployProperties(multitenant, applicationId, configServerSpecs, hostedVespa, vespaVersion, zone); + return new DeployProperties(multitenant, applicationId, configServerSpecs, loadBalancerAddress, hostedVespa, vespaVersion, zone); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java index fc27f9e8dc7..56db1542de8 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java @@ -147,6 +147,7 @@ public class VespaModelFactory implements ModelFactory { return new DeployProperties.Builder() .applicationId(properties.applicationId()) .configServerSpecs(properties.configServerSpecs()) + .loadBalancerAddress(properties.loadBalancerAddress()) .multitenant(properties.multitenant()) .hostedVespa(properties.hostedVespa()) .vespaVersion(getVersion()) 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 ce9d0ed27f1..32f2a59a881 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 @@ -18,6 +18,7 @@ import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.NodeType; import com.yahoo.container.jdisc.config.MetricDefaultsConfig; +import com.yahoo.log.LogLevel; import com.yahoo.search.rendering.RendererRegistry; import com.yahoo.text.XML; import com.yahoo.vespa.defaults.Defaults; @@ -58,12 +59,14 @@ import com.yahoo.vespa.model.content.StorageGroup; import org.w3c.dom.Element; import org.w3c.dom.Node; +import java.net.URI; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.function.Consumer; +import java.util.logging.Logger; import java.util.stream.Collectors; /** @@ -93,6 +96,8 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { private static final String xmlRendererId = RendererRegistry.xmlRendererId.getName(); private static final String jsonRendererId = RendererRegistry.jsonRendererId.getName(); + private static final Logger logger = Logger.getLogger(ContainerModelBuilder.class.getName()); + public ContainerModelBuilder(boolean standaloneBuilder, Networking networking) { super(ContainerModel.class); this.standaloneBuilder = standaloneBuilder; @@ -163,7 +168,8 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { // Athenz copper argos // NOTE: Must be done after addNodes() - addIdentity(spec, cluster, context.getDeployState().getProperties().configServerSpecs()); + addIdentity(spec, cluster, context.getDeployState().getProperties().configServerSpecs(), + context.getDeployState().getProperties().loadBalancerAddress()); //TODO: overview handler, see DomQrserverClusterBuilder } @@ -691,13 +697,19 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { } } - private void addIdentity(Element element, ContainerCluster cluster, List<ConfigServerSpec> configServerSpecs) { + private void addIdentity(Element element, ContainerCluster cluster, List<ConfigServerSpec> configServerSpecs, URI loadBalancerAddress) { Element identityElement = XML.getChild(element, "identity"); if(identityElement != null) { String domain = XML.getValue(XML.getChild(identityElement, "domain")); String service = XML.getValue(XML.getChild(identityElement, "service")); + // TODO: Remove after verifying that this is propagated correctly + logger.log(LogLevel.INFO, String.format("loadBalancerAddress: %s", loadBalancerAddress)); + // TODO: Inject the load balancer address. For now only add first configserver + // TODO: The loadBalancerAddress is a URI, not specific host. + // TODO: Either rename loadBalancerAddress -> loadBalancerName (or similar) or + // TODO: make consumers of it use URI. String cfgHostName = configServerSpecs.stream().findFirst().map(ConfigServerSpec::getHostName) .orElse(""); // How to test this? diff --git a/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java b/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java index 83b5003579e..ff37fb1fad3 100644 --- a/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java +++ b/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java @@ -14,6 +14,7 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Rotation; import com.yahoo.config.provision.Zone; +import java.net.URI; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -95,6 +96,11 @@ public class MockModelContext implements ModelContext { } @Override + public URI loadBalancerAddress() { + return null; + } + + @Override public boolean hostedVespa() {return false; } @Override diff --git a/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java b/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java index cef94c97a2c..873883716e4 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java @@ -27,6 +27,7 @@ import com.yahoo.config.provision.Zone; import org.junit.Before; import org.junit.Test; +import java.net.URI; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; @@ -193,6 +194,11 @@ public class VespaModelFactoryTest { public List<ConfigServerSpec> configServerSpecs() { return Collections.emptyList(); } + + @Override + public URI loadBalancerAddress() { + return null; + } }; } }; |