summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMorten Tokle <morten.tokle@gmail.com>2017-02-17 10:37:46 +0100
committerGitHub <noreply@github.com>2017-02-17 10:37:46 +0100
commit1e128ce03e253e69e8bf1145e595fcddf88465a0 (patch)
tree05acda1349ee71adf76dc9fd919064167022d239 /node-repository
parent6be1754eaef156e766d8d5a99f118eb9a851c1ab (diff)
parent14a54842883a22f7981414cb0d29559d517a1a5f (diff)
Merge pull request #1798 from yahoo/mpolden/never-offer-nodes-having-retired-flavor
Never offer nodes having retired flavor
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java29
2 files changed, 32 insertions, 0 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
index f9406b74fd0..275098ebae5 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
@@ -238,6 +238,9 @@ class GroupPreparer {
++rejectedWithClashingParentHost;
continue;
}
+ if (offered.flavor().isRetired()) {
+ continue;
+ }
Node alloc = offered.allocate(application, ClusterMembership.from(cluster, highestIndex.add(1)), clock.instant());
accepted.add(acceptNode(alloc, wantToRetireNode));
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
index abaa7b17bd7..e0cf89d5ad3 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
@@ -572,6 +572,35 @@ public class ProvisioningTest {
assertTrue("Nodes are retired by system", retired.asList().stream().allMatch(retiredBySystem));
}
}
+
+ @Test
+ public void application_deployment_does_not_use_unallocated_nodes_having_retired_flavor() {
+ String flavorToRetire = "default";
+ String replacementFlavor = "new-default";
+
+ FlavorConfigBuilder b = new FlavorConfigBuilder();
+ b.addFlavor(flavorToRetire, 1., 1., 10, Flavor.Type.BARE_METAL).cost(2).retired(true);
+ FlavorsConfig.Flavor.Builder newDefault = b.addFlavor(replacementFlavor, 2., 2., 20,
+ Flavor.Type.BARE_METAL).cost(2);
+ b.addReplaces(flavorToRetire, newDefault);
+
+ ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")),
+ b.build());
+ ApplicationId application = tester.makeApplicationId();
+
+ // Add nodes
+ tester.makeReadyNodes(4, flavorToRetire);
+ tester.makeReadyNodes(4, replacementFlavor);
+
+ SystemState state = prepare(application, 2, 0, 2, 0,
+ flavorToRetire, tester);
+
+ tester.activate(application, state.allHosts);
+
+ List<Node> nodes = tester.getNodes(application).asList();
+ assertTrue("Allocated nodes have flavor " + replacementFlavor,
+ nodes.stream().allMatch(n -> n.flavor().name().equals(replacementFlavor)));
+ }
private void assertCorrectFlavorPreferences(boolean largeIsStock) {
FlavorConfigBuilder b = new FlavorConfigBuilder();