diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-10-07 10:57:10 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-10-07 11:17:42 +0200 |
commit | f2361c82dda7cf2b51556ce2f1e2b8e4e0a36804 (patch) | |
tree | 019dc596746643743644def03ef38255c37d0767 /node-repository/src/main/java | |
parent | 7438b33d2447f5348e25c18160a592924130ee25 (diff) |
Limit soft rebuilds to supported cloud
Diffstat (limited to 'node-repository/src/main/java')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java index 89fdf9d4b2a..91219ed0ce2 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java @@ -2,6 +2,8 @@ package com.yahoo.vespa.hosted.provision.os; import com.yahoo.component.Version; +import com.yahoo.config.provision.Cloud; +import com.yahoo.config.provision.CloudName; import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.curator.Lock; import com.yahoo.vespa.flags.BooleanFlag; @@ -38,20 +40,20 @@ public class OsVersions { private final NodeRepository nodeRepository; private final CuratorDatabaseClient db; - private final boolean dynamicProvisioning; private final int maxDelegatedUpgrades; private final BooleanFlag softRebuildFlag; + private final Cloud cloud; public OsVersions(NodeRepository nodeRepository) { - this(nodeRepository, nodeRepository.zone().getCloud().dynamicProvisioning(), MAX_DELEGATED_UPGRADES); + this(nodeRepository, nodeRepository.zone().getCloud(), MAX_DELEGATED_UPGRADES); } - OsVersions(NodeRepository nodeRepository, boolean dynamicProvisioning, int maxDelegatedUpgrades) { + OsVersions(NodeRepository nodeRepository, Cloud cloud, int maxDelegatedUpgrades) { this.nodeRepository = Objects.requireNonNull(nodeRepository); this.db = nodeRepository.database(); - this.dynamicProvisioning = dynamicProvisioning; this.maxDelegatedUpgrades = maxDelegatedUpgrades; this.softRebuildFlag = Flags.SOFT_REBUILD.bindTo(nodeRepository.flagSource()); + this.cloud = Objects.requireNonNull(cloud); // Read and write all versions to make sure they are stored in the latest version of the serialized format try (var lock = db.lockOsVersionChange()) { @@ -141,13 +143,13 @@ public class OsVersions { /** Returns the upgrader to use when upgrading given node type to target */ private OsUpgrader chooseUpgrader(NodeType nodeType, Optional<Version> target) { - if (dynamicProvisioning) { - boolean softRebuild = softRebuildFlag.value(); - RetiringOsUpgrader retiringOsUpgrader = new RetiringOsUpgrader(nodeRepository, softRebuild); - if (softRebuild) { + if (cloud.dynamicProvisioning()) { + boolean canSoftRebuild = cloud.name().equals(CloudName.AWS) && softRebuildFlag.value(); + RetiringOsUpgrader retiringOsUpgrader = new RetiringOsUpgrader(nodeRepository, canSoftRebuild); + if (canSoftRebuild) { // If soft rebuild is enabled, we can use RebuildingOsUpgrader for hosts with remote storage. // RetiringOsUpgrader is then only used for hosts with local storage. - return new CompositeOsUpgrader(List.of(new RebuildingOsUpgrader(nodeRepository, softRebuild), + return new CompositeOsUpgrader(List.of(new RebuildingOsUpgrader(nodeRepository, canSoftRebuild), retiringOsUpgrader)); } return retiringOsUpgrader; |