aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/main/java/com
diff options
context:
space:
mode:
authorValerij Fredriksen <valerij92@gmail.com>2019-06-01 19:09:05 +0200
committerValerij Fredriksen <valerij92@gmail.com>2019-06-02 20:18:28 +0200
commitd38e103c001104e5c5e180dff8006d7484d70a41 (patch)
treec82145e33534fe58ca91f169b71e0d7b3c2d0d6c /controller-server/src/main/java/com
parent9ff9c4f20bd4b5440ece8f879de35dff7de12102 (diff)
Upgrade tenant host application in SystemUpgrader
Diffstat (limited to 'controller-server/src/main/java/com')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java4
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java28
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java7
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java4
4 files changed, 17 insertions, 26 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
index de5d8de1f9e..a511b33313b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
@@ -395,7 +395,7 @@ public class ApplicationController {
deploySystemApplicationPackage(application, zone, version);
} else {
// Deploy by calling node repository directly
- application.nodeTypes().forEach(nodeType -> configServer().nodeRepository().upgrade(zone, nodeType, version));
+ configServer().nodeRepository().upgrade(zone, application.nodeType(), version);
}
}
@@ -406,7 +406,7 @@ public class ApplicationController {
artifactRepository.getSystemApplicationPackage(application.id(), zone, version)
);
DeployOptions options = withVersion(version, DeployOptions.none());
- return deploy(application.id(), applicationPackage, zone, options, Collections.emptySet(), Collections.emptySet());
+ return deploy(application.id(), applicationPackage, zone, options, Set.of(), Set.of());
} else {
throw new RuntimeException("This system application does not have an application package: " + application.id().toShortString());
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java
index 3eeaf09c10b..d31ae185b76 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java
@@ -11,8 +11,6 @@ import com.yahoo.vespa.hosted.controller.api.integration.configserver.ServiceCon
import java.util.List;
import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
/**
* This represents a system-level application in hosted Vespa. All infrastructure nodes in a hosted Vespa zones are
@@ -25,23 +23,17 @@ public enum SystemApplication {
configServerHost(ApplicationId.from("hosted-vespa", "configserver-host", "default"), NodeType.confighost),
proxyHost(ApplicationId.from("hosted-vespa", "proxy-host", "default"), NodeType.proxyhost),
configServer(ApplicationId.from("hosted-vespa", "zone-config-servers", "default"), NodeType.config),
- zone(ApplicationId.from("hosted-vespa", "routing", "default"), Set.of(NodeType.proxy, NodeType.host),
+ tenantHost(ApplicationId.from("hosted-vespa", "tenant-host", "default"), NodeType.host),
+ zone(ApplicationId.from("hosted-vespa", "routing", "default"), NodeType.proxy,
configServerHost, proxyHost, configServer);
private final ApplicationId id;
- private final Set<NodeType> nodeTypes;
+ private final NodeType nodeType;
private final List<SystemApplication> dependencies;
SystemApplication(ApplicationId id, NodeType nodeType, SystemApplication... dependencies) {
- this(id, Set.of(nodeType), dependencies);
- }
-
- SystemApplication(ApplicationId id, Set<NodeType> nodeTypes, SystemApplication... dependencies) {
- if (nodeTypes.isEmpty()) {
- throw new IllegalArgumentException("Node types must be non-empty");
- }
this.id = id;
- this.nodeTypes = Set.copyOf(nodeTypes);
+ this.nodeType = nodeType;
this.dependencies = List.of(dependencies);
}
@@ -49,9 +41,9 @@ public enum SystemApplication {
return id;
}
- /** The node type(s) that are implicitly allocated to this */
- public Set<NodeType> nodeTypes() {
- return nodeTypes;
+ /** The node type that is implicitly allocated to this */
+ public NodeType nodeType() {
+ return nodeType;
}
/** Returns the system applications that should upgrade before this */
@@ -73,8 +65,8 @@ public enum SystemApplication {
}
/** Returns the node types of this that should receive OS upgrades */
- public Set<NodeType> nodeTypesWithUpgradableOs() {
- return nodeTypes().stream().filter(NodeType::isDockerHost).collect(Collectors.toSet());
+ public boolean isEligibleForOsUpgrades() {
+ return nodeType.isDockerHost();
}
/** All known system applications */
@@ -84,7 +76,7 @@ public enum SystemApplication {
@Override
public String toString() {
- return String.format("system application %s of type %s", id, nodeTypes);
+ return String.format("system application %s of type %s", id, nodeType);
}
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java
index 3b521657f15..ed3dd552085 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java
@@ -39,12 +39,11 @@ public class OsUpgrader extends InfrastructureUpgrader {
@Override
protected void upgrade(Version target, SystemApplication application, ZoneId zone) {
- if (wantedVersion(zone, application, target).equals(target)) {
+ if (!application.isEligibleForOsUpgrades() || wantedVersion(zone, application, target).equals(target)) {
return;
}
log.info(String.format("Upgrading OS of %s to version %s in %s", application.id(), target, zone));
- application.nodeTypesWithUpgradableOs().forEach(nodeType -> controller().configServer().nodeRepository()
- .upgradeOs(zone, nodeType, target));
+ controller().configServer().nodeRepository().upgradeOs(zone, application.nodeType(), target);
}
@Override
@@ -77,7 +76,7 @@ public class OsUpgrader extends InfrastructureUpgrader {
/** Returns whether node in application should be upgraded by this */
public static boolean eligibleForUpgrade(Node node, SystemApplication application) {
return upgradableNodeStates.contains(node.state()) &&
- application.nodeTypesWithUpgradableOs().contains(node.type());
+ application.isEligibleForOsUpgrades();
}
private static String name(CloudName cloud) {
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java
index d55855a2f36..f9ce75d2297 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java
@@ -67,8 +67,8 @@ public class OsVersionStatus {
controller.osVersions().forEach(osVersion -> versions.put(osVersion, new ArrayList<>()));
for (SystemApplication application : SystemApplication.all()) {
- if (application.nodeTypesWithUpgradableOs().isEmpty()) {
- continue; // Avoid querying applications that do not contain nodes with upgradable OS
+ if (!application.isEligibleForOsUpgrades()) {
+ continue; // Avoid querying applications that are not eligible for OS upgrades
}
for (ZoneId zone : zonesToUpgrade(controller)) {
controller.configServer().nodeRepository().list(zone, application.id()).stream()