aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java4
-rw-r--r--hosted-tenant-base/pom.xml8
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java19
4 files changed, 28 insertions, 5 deletions
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
index f84060063d7..cc6d20153d6 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -166,7 +166,7 @@ public class Flags {
public static final UnboundListFlag<String> ALLOWED_ATHENZ_PROXY_IDENTITIES = defineListFlag(
"allowed-athenz-proxy-identities", List.of(), String.class,
- List.of("bjorncs", "tokle"), "2021-02-10", "2022-06-01",
+ List.of("bjorncs", "tokle"), "2021-02-10", "2022-09-01",
"Allowed Athenz proxy identities",
"takes effect at redeployment");
@@ -411,7 +411,7 @@ public class Flags {
public static final UnboundBooleanFlag USE_YUM_PROXY_V2 = defineFeatureFlag(
"use-yumproxy-v2", false,
- List.of("mortent"), "2022-05-05", "2022-06-01",
+ List.of("tokle"), "2022-05-05", "2022-07-01",
"Use yumproxy-v2",
"Takes effect on host admin restart",
HOSTNAME);
diff --git a/hosted-tenant-base/pom.xml b/hosted-tenant-base/pom.xml
index 734c096d373..a5b9c5d3f82 100644
--- a/hosted-tenant-base/pom.xml
+++ b/hosted-tenant-base/pom.xml
@@ -223,16 +223,20 @@
</configuration>
</execution>
<execution>
- <id>enforce-no-jupiter-compile-scope</id>
+ <id>enforce-just-our-jupiter</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
- <!-- Fail validation for apps with junit-jupiter-api in compile scope. -->
+ <!-- Fail validation for apps with junit-jupiter-api in compile scope, or on wrong version. -->
<excludes>
<exclude>org.junit.jupiter:junit-jupiter-api:*:jar:compile</exclude>
+ <exclude>org.junit.jupiter:junit-jupiter-api:*:jar:provided</exclude>
+ <exclude>org.junit.jupiter:junit-jupiter-api:*:jar:runtime</exclude>
+ <exclude>org.junit.jupiter:junit-jupiter-api:(,${junit.version}):jar:*</exclude>
+ <exclude>org.junit.jupiter:junit-jupiter-api:(${junit.version},):jar:*</exclude>
</excludes>
</bannedDependencies>
</rules>
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
index 0fa406ab0ef..4e2447f58e1 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
@@ -194,7 +194,7 @@ public class DynamicProvisioningMaintainer extends NodeRepositoryMaintainer {
.collect(Collectors.toMap(Node::hostname, Function.identity())));
nodes.stream()
- .filter(node -> node.allocation().isPresent())
+ .filter(node -> node.allocation().isPresent() && !node.status().wantToDeprovision())
.flatMap(node -> node.parentHostname().stream())
.distinct()
.forEach(hostsByHostname::remove);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
index 30d0f673fe1..451bcfb0b78 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
@@ -574,6 +574,25 @@ public class DynamicProvisioningMaintainerTest {
assertEquals(2, provisioningTester.activate(applicationId, prepared).size());
}
+ @Test
+ public void deprovision_parked_node_with_allocation() {
+ var tester = new DynamicProvisioningTester();
+ tester.hostProvisioner.with(Behaviour.failProvisioning);
+ Node host4 = tester.addNode("host4", Optional.empty(), NodeType.host, Node.State.parked);
+ Node host41 = tester.addNode("host4-1", Optional.of("host4"), NodeType.tenant, Node.State.parked, DynamicProvisioningTester.tenantApp);
+ tester.nodeRepository.nodes().deprovision("host4", Agent.operator, Instant.now());
+
+ assertEquals(Optional.of(true), tester.nodeRepository.nodes().node("host4").map(n -> n.status().wantToDeprovision()));
+ assertEquals(Optional.of(Node.State.parked), tester.nodeRepository.nodes().node("host4").map(Node::state));
+ assertEquals(Optional.of(true), tester.nodeRepository.nodes().node("host4-1").map(n -> n.status().wantToDeprovision()));
+ assertEquals(Optional.of(Node.State.parked), tester.nodeRepository.nodes().node("host4-1").map(Node::state));
+
+ tester.maintainer.maintain();
+
+ assertEquals(Optional.empty(), tester.nodeRepository.nodes().node("host4"));
+ assertEquals(Optional.empty(), tester.nodeRepository.nodes().node("host4-1"));
+ }
+
private void assertCfghost3IsActive(DynamicProvisioningTester tester) {
assertEquals(5, tester.nodeRepository.nodes().list(Node.State.active).size());
assertEquals(3, tester.nodeRepository.nodes().list(Node.State.active).nodeType(NodeType.confighost).size());