diff options
9 files changed, 44 insertions, 39 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java index eef90975035..1b617d6d929 100644 --- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java +++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java @@ -10,7 +10,6 @@ import com.yahoo.config.provision.Rotation; import com.yahoo.config.provision.Zone; import java.io.File; -import java.net.URI; import java.util.List; import java.util.Optional; import java.util.Set; @@ -42,7 +41,7 @@ public interface ModelContext { boolean multitenant(); ApplicationId applicationId(); List<ConfigServerSpec> configServerSpecs(); - URI loadBalancerAddress(); + String loadBalancerAddress(); boolean hostedVespa(); Zone zone(); Set<Rotation> rotations(); 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 942320ecd40..0b381508fda 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 @@ -6,7 +6,6 @@ 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; @@ -21,7 +20,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 String loadBalancerAddress; private final boolean hostedVespa; private final Version vespaVersion; private final Zone zone; @@ -29,7 +28,7 @@ public class DeployProperties { private DeployProperties(boolean multitenant, ApplicationId applicationId, List<ConfigServerSpec> configServerSpecs, - URI loadBalancerAddress, + String loadBalancerAddress, boolean hostedVespa, Version vespaVersion, Zone zone) { @@ -55,7 +54,7 @@ public class DeployProperties { return serverSpecs; } - public URI loadBalancerAddress() { + public String loadBalancerAddress() { return loadBalancerAddress; } @@ -75,7 +74,7 @@ public class DeployProperties { private ApplicationId applicationId = ApplicationId.defaultId(); private boolean multitenant = false; private List<ConfigServerSpec> configServerSpecs = new ArrayList<>(); - private URI loadBalancerAddress; + private String loadBalancerAddress; private boolean hostedVespa = false; private Version vespaVersion = Version.fromIntValues(1, 0, 0); private Zone zone = Zone.defaultZone(); @@ -95,7 +94,7 @@ public class DeployProperties { return this; } - public Builder loadBalancerAddress(URI loadBalancerAddress) { + public Builder loadBalancerAddress(String loadBalancerAddress) { this.loadBalancerAddress = loadBalancerAddress; return this; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/Identity.java b/config-model/src/main/java/com/yahoo/vespa/model/container/Identity.java index d3038a32bfe..defab289ea1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/Identity.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/Identity.java @@ -5,9 +5,6 @@ import com.yahoo.container.core.identity.IdentityConfig; import com.yahoo.container.jdisc.athenz.impl.AthenzIdentityProviderImpl; import com.yahoo.vespa.model.container.component.SimpleComponent; -import java.net.URI; -import java.util.Optional; - /** * @author mortent */ @@ -16,9 +13,9 @@ public class Identity extends SimpleComponent implements IdentityConfig.Producer private final String domain; private final String service; - private final URI loadBalancerAddress; + private final String loadBalancerAddress; - public Identity(String domain, String service, URI loadBalancerAddress) { + public Identity(String domain, String service, String loadBalancerAddress) { super(CLASS); this.domain = domain; this.service = service; @@ -29,13 +26,8 @@ public class Identity extends SimpleComponent implements IdentityConfig.Producer public void getConfig(IdentityConfig.Builder builder) { builder.domain(domain); builder.service(service); - // Load balancer address might not have been set // Current interpretation of loadbalancer address is: hostname. // Config should be renamed or send the uri - builder.loadBalancerAddress( - Optional.ofNullable(loadBalancerAddress) - .map(URI::getHost) - .orElse("") - ); + builder.loadBalancerAddress(loadBalancerAddress); } } 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 f8d69d1b0ac..4286fced735 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 @@ -7,6 +7,7 @@ import com.yahoo.config.application.Xml; import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.ConfigModelContext; +import com.yahoo.config.model.api.ConfigServerSpec; import com.yahoo.config.model.application.provider.IncludeDirs; import com.yahoo.config.model.builder.xml.ConfigModelBuilder; import com.yahoo.config.model.builder.xml.ConfigModelId; @@ -57,7 +58,6 @@ 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; @@ -166,7 +166,10 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { // Athenz copper argos // NOTE: Must be done after addNodes() - addIdentity(spec, cluster, context.getDeployState().getProperties().loadBalancerAddress()); + addIdentity(spec, + cluster, + context.getDeployState().getProperties().configServerSpecs(), + context.getDeployState().getProperties().loadBalancerAddress()); //TODO: overview handler, see DomQrserverClusterBuilder } @@ -694,13 +697,22 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { } } - private void addIdentity(Element element, ContainerCluster cluster, URI loadBalancerAddress) { + private void addIdentity(Element element, ContainerCluster cluster, List<ConfigServerSpec> configServerSpecs, String 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")); - Identity identity = new Identity(domain.trim(), service.trim(), loadBalancerAddress); + // Set lbaddress, or use first hostname if not specified. + String lbAddress = Optional.ofNullable(loadBalancerAddress) + .orElseGet( + () -> configServerSpecs.stream() + .findFirst() + .map(ConfigServerSpec::getHostName) + .orElse("unknown") // Currently unable to test this, hence the unknown + ); + + Identity identity = new Identity(domain.trim(), service.trim(), lbAddress); cluster.addComponent(identity); cluster.getContainers().forEach(container -> { 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 ff37fb1fad3..8589cb8fb3f 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 @@ -2,11 +2,15 @@ package com.yahoo.config.model; import com.yahoo.component.Version; -import com.yahoo.config.model.api.*; import com.yahoo.config.application.api.ApplicationPackage; -import com.yahoo.config.model.application.provider.BaseDeployLogger; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.application.api.FileRegistry; +import com.yahoo.config.model.api.ConfigDefinitionRepo; +import com.yahoo.config.model.api.ConfigServerSpec; +import com.yahoo.config.model.api.HostProvisioner; +import com.yahoo.config.model.api.Model; +import com.yahoo.config.model.api.ModelContext; +import com.yahoo.config.model.application.provider.BaseDeployLogger; import com.yahoo.config.model.application.provider.MockFileRegistry; import com.yahoo.config.model.application.provider.StaticConfigDefinitionRepo; import com.yahoo.config.model.test.MockApplicationPackage; @@ -14,7 +18,6 @@ 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; @@ -96,7 +99,7 @@ public class MockModelContext implements ModelContext { } @Override - public URI loadBalancerAddress() { + public String loadBalancerAddress() { return null; } 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 873883716e4..528f1d7fdde 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,7 +27,6 @@ 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; @@ -196,7 +195,7 @@ public class VespaModelFactoryTest { } @Override - public URI loadBalancerAddress() { + public String loadBalancerAddress() { return null; } }; diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java index 1b96ba46907..8ccd6858b00 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java @@ -2,16 +2,19 @@ package com.yahoo.vespa.config.server.deploy; import com.yahoo.component.Version; -import com.yahoo.config.model.api.*; import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.application.api.FileRegistry; +import com.yahoo.config.model.api.ConfigDefinitionRepo; +import com.yahoo.config.model.api.ConfigServerSpec; +import com.yahoo.config.model.api.HostProvisioner; +import com.yahoo.config.model.api.Model; +import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Rotation; import com.yahoo.config.provision.Zone; import java.io.File; -import java.net.URI; import java.util.List; import java.util.Optional; import java.util.Set; @@ -133,7 +136,7 @@ public class ModelContextImpl implements ModelContext { private final ApplicationId applicationId; private final boolean multitenant; private final List<ConfigServerSpec> configServerSpecs; - private final URI loadBalancerAddress; + private final String loadBalancerAddress; private final boolean hostedVespa; private final Zone zone; private final Set<Rotation> rotations; @@ -141,7 +144,7 @@ public class ModelContextImpl implements ModelContext { public Properties(ApplicationId applicationId, boolean multitenant, List<ConfigServerSpec> configServerSpecs, - URI loadBalancerAddress, + String loadBalancerAddress, boolean hostedVespa, Zone zone, Set<Rotation> rotations) { @@ -170,7 +173,7 @@ public class ModelContextImpl implements ModelContext { } @Override - public URI loadBalancerAddress() { + public String loadBalancerAddress() { return loadBalancerAddress; } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java index fac73dcac77..4205a9afb79 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java @@ -6,10 +6,10 @@ import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.model.api.HostProvisioner; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.api.ModelFactory; +import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ApplicationLockException; import com.yahoo.config.provision.OutOfCapacityException; -import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.Rotation; import com.yahoo.config.provision.Version; import com.yahoo.config.provision.Zone; @@ -19,7 +19,6 @@ import com.yahoo.vespa.config.server.deploy.ModelContextImpl; import com.yahoo.vespa.config.server.http.UnknownVespaVersionException; import com.yahoo.vespa.config.server.provision.StaticProvisioner; -import java.net.URI; import java.time.Instant; import java.util.ArrayList; import java.util.Collections; @@ -174,7 +173,7 @@ public abstract class ModelsBuilder<MODELRESULT extends ModelResult> { return new ModelContextImpl.Properties(applicationId, configserverConfig.multitenant(), ConfigServerSpec.fromConfig(configserverConfig), - URI.create(configserverConfig.loadBalancerAddress()), + configserverConfig.loadBalancerAddress(), configserverConfig.hostedVespa(), zone, rotations); diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java index 6154be52bcc..8f567ace5cc 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java @@ -35,7 +35,6 @@ import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import java.io.IOException; -import java.net.URI; import java.time.Instant; import java.util.List; import java.util.Map; @@ -152,7 +151,7 @@ public class SessionPreparer { this.properties = new ModelContextImpl.Properties(params.getApplicationId(), configserverConfig.multitenant(), ConfigServerSpec.fromConfig(configserverConfig), - URI.create(configserverConfig.loadBalancerAddress()), + configserverConfig.loadBalancerAddress(), configserverConfig.hostedVespa(), zone, rotationsSet); |