summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorMorten Tokle <mortent@oath.com>2017-10-31 15:11:54 +0100
committerMorten Tokle <mortent@oath.com>2017-11-07 14:35:06 +0100
commit0784bf4a17cc30f35c2c56214fe06833d391425e (patch)
tree6253d6d73c2f76480741e7e6802b5193a76e19f6 /config-model
parent10785b22ba9d85fd8dddfbe1b337c3a84191cab5 (diff)
Propagate loadBalancerAddress
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java24
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java16
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/MockModelContext.java6
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java6
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;
+ }
};
}
};