diff options
author | Harald Musum <musum@yahoo-inc.com> | 2016-11-23 13:52:02 +0100 |
---|---|---|
committer | Harald Musum <musum@yahoo-inc.com> | 2016-11-23 13:52:02 +0100 |
commit | cfa979971e676d85481570582606acda8cc7ac7b (patch) | |
tree | 3678ebec0c2aac1cad2c4fec5bafc910bcaf6fcd /configserver | |
parent | 24ce067331f3546cfa0060e9e8427777e884e5cb (diff) |
Remove special handling of deployment of routing application
* Routing application uses nodes from node repo in all zones now,
handle as other applications
VESPA-5118
Diffstat (limited to 'configserver')
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java | 45 | ||||
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/model/RoutingProducer.java | 13 |
2 files changed, 13 insertions, 45 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java index 11de94813c5..cb4533903bd 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java @@ -2,17 +2,11 @@ package com.yahoo.vespa.config.server.deploy; import com.yahoo.cloud.config.ConfigserverConfig; -import com.yahoo.config.application.api.ApplicationFile; -import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.application.api.DeployLogger; -import com.yahoo.config.model.builder.xml.XmlHelper; -import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.HostFilter; import com.yahoo.config.provision.Provisioner; -import com.yahoo.config.provision.ProvisionInfo; import com.yahoo.log.LogLevel; import com.yahoo.path.Path; -import com.yahoo.text.XML; import com.yahoo.transaction.NestedTransaction; import com.yahoo.transaction.Transaction; import com.yahoo.vespa.config.server.tenant.ActivateLock; @@ -24,11 +18,7 @@ import com.yahoo.vespa.config.server.session.LocalSessionRepo; import com.yahoo.vespa.config.server.session.PrepareParams; import com.yahoo.vespa.config.server.session.Session; import com.yahoo.vespa.config.server.session.SilentDeployLogger; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import java.io.FileNotFoundException; -import java.io.Reader; import java.time.Clock; import java.time.Duration; import java.util.Optional; @@ -140,8 +130,7 @@ public class Deployment implements com.yahoo.config.provision.Deployment { transaction.add(deactivateCurrentActivateNew(localSessionRepo.getActiveSession(session.getApplicationId()), session, ignoreSessionStaleFailure)); // TODO: (October 2016) Remove the second part of this if statement as soon as all zone applications stop using hosts.xml for routing nodes - if (hostProvisioner.isPresent() && - (isNotHostedRoutingApplication(session.getApplicationId()) || isHostedRoutingApplicationUsingRoutingNodesInNodeRepo(session))) { + if (hostProvisioner.isPresent()) { hostProvisioner.get().activate(transaction, session.getApplicationId(), session.getProvisionInfo().getHosts()); } transaction.commit(); @@ -227,36 +216,4 @@ public class Deployment implements com.yahoo.config.provision.Deployment { } } - private boolean isNotHostedRoutingApplication(ApplicationId applicationId) { - return ! applicationId.isHostedVespaRoutingApplication(); - } - - // Precondition: session is for a hosted routing application - boolean isHostedRoutingApplicationUsingRoutingNodesInNodeRepo(LocalSession session) { - Path servicesPath = Path.fromString(".preprocessed/" + ApplicationPackage.SERVICES); - ApplicationFile services = session.getApplicationFile(servicesPath, LocalSession.Mode.READ); - - if ( ! services.exists()) return false; - - try { - return usesRoutingNodesInNodeRepo(services.createReader()); - } catch (FileNotFoundException e) { - throw new RuntimeException("Could not create reader for " + servicesPath + " for '" + session.getApplicationId() + "'"); - } - } - - // TODO: Copied verbatim from VespaModelFactory, since we need it now and it is not available for all model versions yet. - // Remove or use the one from VespaModelFactory as soon as possible - private boolean usesRoutingNodesInNodeRepo(Reader servicesReader) { - Document services = XmlHelper.getDocument(servicesReader); - - Element jdisc = XML.getChild(services.getDocumentElement(), "jdisc"); - if (jdisc == null) return false; - - Element nodes = XML.getChild(jdisc, "nodes"); - if (nodes == null) return false; - - return nodes.hasAttribute("type"); - } - } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/model/RoutingProducer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/model/RoutingProducer.java index 6a63269ae6e..32d718f9390 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/model/RoutingProducer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/model/RoutingProducer.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.config.server.model; import com.yahoo.cloud.config.RoutingConfig; import com.yahoo.config.model.api.HostInfo; import com.yahoo.config.provision.ApplicationId; +import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.TenantName; import com.yahoo.vespa.config.server.application.Application; @@ -16,6 +17,9 @@ import java.util.Map; * @since 5.60 */ public class RoutingProducer implements RoutingConfig.Producer { + private static final TenantName HOSTED_VESPA_TENANT = TenantName.from("hosted-vespa"); + private static final ApplicationName ROUTING_APPLICATION = ApplicationName.from("routing"); + private static final ApplicationName ZONE_APPLICATION = ApplicationName.from("zone"); private final Map<TenantName, Map<ApplicationId, Application>> models; @@ -26,11 +30,18 @@ public class RoutingProducer implements RoutingConfig.Producer { @Override public void getConfig(RoutingConfig.Builder builder) { for (Map<ApplicationId, Application> model : models.values()) { - model.values().stream().filter(application -> application.getId().isHostedVespaRoutingApplication()).forEach(application -> { + model.values().stream().filter(application -> isHostedVespaRoutingApplication(application.getId())).forEach(application -> { for (HostInfo host : application.getModel().getHosts()) { builder.hosts(host.getHostname()); } }); } } + + private boolean isHostedVespaRoutingApplication(ApplicationId applicationId) { + return HOSTED_VESPA_TENANT.equals(applicationId.tenant()) && + (ROUTING_APPLICATION.equals(applicationId.application()) || + ZONE_APPLICATION.equals(applicationId.application())); + } + } |