summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2021-02-19 21:34:43 +0100
committerJon Marius Venstad <venstad@gmail.com>2021-02-19 21:34:43 +0100
commit1286ef91207958f16753c7ee325932a4f501ed55 (patch)
tree3018be638387446430ece6a1bee7e4ec1d33bbc3 /controller-server
parent18955672d8c0a1cb95decdcedc9fb6e1c2a2b59b (diff)
Make admin node non-meterable
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java54
2 files changed, 32 insertions, 27 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java
index 5efbb3cf31b..8de6bdbb99c 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java
@@ -102,6 +102,7 @@ public class ResourceMeterMaintainer extends ControllerMaintainer {
return nodes.stream()
.filter(this::unlessNodeOwnerIsHostedVespa)
.filter(this::isNodeStateMeterable)
+ .filter(this::isNodeTypeMeterable)
.collect(Collectors.groupingBy(node ->
node.owner().get(),
Collectors.collectingAndThen(Collectors.toList(),
@@ -132,6 +133,10 @@ public class ResourceMeterMaintainer extends ControllerMaintainer {
return METERABLE_NODE_STATES.contains(node.state());
}
+ private boolean isNodeTypeMeterable(Node node) {
+ return node.clusterType() != Node.ClusterType.admin; // log servers and shared cluster controllers
+ }
+
private boolean needsRefresh(long lastRefreshTimestamp) {
return clock.instant()
.minusSeconds(METERING_REFRESH_INTERVAL_SECONDS)
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java
index 451b9230f55..0deaa21d13b 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java
@@ -19,6 +19,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
import static org.junit.Assert.*;
@@ -80,35 +81,34 @@ public class ResourceMeterMaintainerTest {
tester.configServer().nodeRepository().setFixedNodes(awsZone2.getId());
tester.configServer().nodeRepository().putNodes(
awsZone1.getId(),
- createNodesInState(
- Node.State.provisioned,
- Node.State.ready,
- Node.State.dirty,
- Node.State.failed,
- Node.State.parked
- )
+ createNodes()
);
}
- private List<Node> createNodesInState(Node.State ...states) {
- return Arrays.stream(states)
- .map(state -> {
- return new Node.Builder()
- .hostname(HostName.from("host" + state))
- .parentHostname(HostName.from("parenthost" + state))
- .state(state)
- .type(NodeType.tenant)
- .owner(ApplicationId.from("tenant1", "app1", "default"))
- .currentVersion(Version.fromString("7.42"))
- .wantedVersion(Version.fromString("7.42"))
- .currentOsVersion(Version.fromString("7.6"))
- .wantedOsVersion(Version.fromString("7.6"))
- .serviceState(Node.ServiceState.expectedUp)
- .resources(new NodeResources(24, 24, 500, 1))
- .clusterId("clusterA")
- .clusterType(Node.ClusterType.container)
- .build();
- })
- .collect(Collectors.toUnmodifiableList());
+ private List<Node> createNodes() {
+ return Stream.of(Node.State.provisioned,
+ Node.State.ready,
+ Node.State.dirty,
+ Node.State.failed,
+ Node.State.parked,
+ Node.State.active)
+ .map(state -> {
+ return new Node.Builder()
+ .hostname(HostName.from("host" + state))
+ .parentHostname(HostName.from("parenthost" + state))
+ .state(state)
+ .type(NodeType.tenant)
+ .owner(ApplicationId.from("tenant1", "app1", "default"))
+ .currentVersion(Version.fromString("7.42"))
+ .wantedVersion(Version.fromString("7.42"))
+ .currentOsVersion(Version.fromString("7.6"))
+ .wantedOsVersion(Version.fromString("7.6"))
+ .serviceState(Node.ServiceState.expectedUp)
+ .resources(new NodeResources(24, 24, 500, 1))
+ .clusterId("clusterA")
+ .clusterType(state == Node.State.active ? Node.ClusterType.admin : Node.ClusterType.container)
+ .build();
+ })
+ .collect(Collectors.toUnmodifiableList());
}
}