aboutsummaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@yahoo-inc.com>2016-11-23 13:52:02 +0100
committerHarald Musum <musum@yahoo-inc.com>2016-11-23 13:52:02 +0100
commitcfa979971e676d85481570582606acda8cc7ac7b (patch)
tree3678ebec0c2aac1cad2c4fec5bafc910bcaf6fcd /configserver
parent24ce067331f3546cfa0060e9e8427777e884e5cb (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.java45
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/model/RoutingProducer.java13
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()));
+ }
+
}