aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authormgimle <michael@gimle.io>2019-07-09 11:02:16 +0200
committermgimle <michael@gimle.io>2019-07-09 11:50:29 +0200
commit6004c609ed00bc7c0c93dbefa36e45085179c943 (patch)
treed3e044fa61d3ad96327769f971ba28dd13587c13 /node-repository
parentb423d1d8b0630e8a6f9c3ca1c52ae7078da8438d (diff)
Renamed from NodeAlerter to CapacityReportMaintainer.
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityReportMaintainer.java (renamed from node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeAlerter.java)13
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityReportMaintainerTest.java (renamed from node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeAlerterTest.java)34
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityReportMaintainerTester.java (renamed from node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeAlerterTester.java)8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/maintenance.json6
5 files changed, 33 insertions, 34 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeAlerter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityReportMaintainer.java
index 0a2eb6eb99e..44d43081ef2 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeAlerter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityReportMaintainer.java
@@ -20,8 +20,7 @@ import java.util.*;
import java.util.function.Function;
/**
- * Performs analysis on the node repository to produce metrics that can be used for alerts if the repository is in an
- * undesirable state.
+ * Performs analysis on the node repository to produce metrics that pertain to the capacity of the node repository.
* These metrics include:
* Spare host capacity, or how many hosts the repository can stand to lose without ending up in a situation where it's
* unable to find a new home for orphaned tenants.
@@ -29,15 +28,15 @@ import java.util.function.Function;
*
* @author mgimle
*/
-public class NodeAlerter extends Maintainer {
+public class CapacityReportMaintainer extends Maintainer {
private final Metric metric;
private final NodeRepository nodeRepository;
- private static final Logger log = Logger.getLogger(NodeAlerter.class.getName());
+ private static final Logger log = Logger.getLogger(CapacityReportMaintainer.class.getName());
- NodeAlerter(NodeRepository nodeRepository,
- Metric metric,
- Duration interval) {
+ CapacityReportMaintainer(NodeRepository nodeRepository,
+ Metric metric,
+ Duration interval) {
super(nodeRepository, interval);
this.nodeRepository = nodeRepository;
this.metric = Objects.requireNonNull(metric);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java
index c66bd73dd3f..f661977d933 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java
@@ -46,7 +46,7 @@ public class NodeRepositoryMaintenance extends AbstractComponent {
private final Optional<LoadBalancerExpirer> loadBalancerExpirer;
private final Optional<HostProvisionMaintainer> hostProvisionMaintainer;
private final Optional<HostDeprovisionMaintainer> hostDeprovisionMaintainer;
- private final NodeAlerter nodeAlerter;
+ private final CapacityReportMaintainer capacityReportMaintainer;
@Inject
public NodeRepositoryMaintenance(NodeRepository nodeRepository, Deployer deployer, InfraDeployer infraDeployer,
@@ -82,7 +82,7 @@ public class NodeRepositoryMaintenance extends AbstractComponent {
new HostProvisionMaintainer(nodeRepository, durationFromEnv("host_provisioner_interval").orElse(defaults.hostProvisionerInterval), hostProvisioner, flagSource));
hostDeprovisionMaintainer = provisionServiceProvider.getHostProvisioner().map(hostProvisioner ->
new HostDeprovisionMaintainer(nodeRepository, durationFromEnv("host_deprovisioner_interval").orElse(defaults.hostDeprovisionerInterval), hostProvisioner, flagSource));
- nodeAlerter = new NodeAlerter(nodeRepository, metric, durationFromEnv("alert_interval").orElse(defaults.nodeAlerterInterval));
+ capacityReportMaintainer = new CapacityReportMaintainer(nodeRepository, metric, durationFromEnv("alert_interval").orElse(defaults.nodeAlerterInterval));
// The DuperModel is filled with infrastructure applications by the infrastructure provisioner, so explicitly run that now
infrastructureProvisioner.maintain();
@@ -99,7 +99,7 @@ public class NodeRepositoryMaintenance extends AbstractComponent {
failedExpirer.deconstruct();
dirtyExpirer.deconstruct();
nodeRebooter.deconstruct();
- nodeAlerter.deconstruct();
+ capacityReportMaintainer.deconstruct();
provisionedExpirer.deconstruct();
metricsReporter.deconstruct();
infrastructureProvisioner.deconstruct();
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeAlerterTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityReportMaintainerTest.java
index 2ed9de1df37..a486f8619c5 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeAlerterTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityReportMaintainerTest.java
@@ -14,14 +14,14 @@ import static org.junit.Assert.*;
/**
* @author mgimle
*/
-public class NodeAlerterTest {
- private NodeAlerterTester tester;
- private NodeAlerter alerter;
+public class CapacityReportMaintainerTest {
+ private CapacityReportMaintainerTester tester;
+ private CapacityReportMaintainer capacityReporter;
@Before
public void setup() {
- tester = new NodeAlerterTester();
- alerter = tester.makeNodeAlerter();
+ tester = new CapacityReportMaintainerTester();
+ capacityReporter = tester.makeCapacityReportMaintainer();
}
@Test
@@ -30,7 +30,7 @@ public class NodeAlerterTest {
tester.cleanRepository();
tester.restoreNodeRepositoryFromJsonFile(Paths.get(path));
- var failurePath = alerter.worstCaseHostLossLeadingToFailure();
+ var failurePath = capacityReporter.worstCaseHostLossLeadingToFailure();
if (failurePath.isPresent()) {
assertTrue(tester.nodeRepository.getNodes(NodeType.host).containsAll(failurePath.get().hostsCausingFailure));
} else fail();
@@ -41,7 +41,7 @@ public class NodeAlerterTest {
tester.createNodes(7, 4,
10, new NodeResources(-1, 10, 100), 10,
0, new NodeResources(1, 10, 100), 10);
- int overcommittedHosts = alerter.countOvercommittedHosts();
+ int overcommittedHosts = capacityReporter.countOvercommittedHosts();
assertEquals(tester.nodeRepository.getNodes(NodeType.host).size(), overcommittedHosts);
}
@@ -50,14 +50,14 @@ public class NodeAlerterTest {
tester.createNodes(1, 1,
0, new NodeResources(1, 10, 100), 10,
0, new NodeResources(1, 10, 100), 10);
- var failurePath = alerter.worstCaseHostLossLeadingToFailure();
+ var failurePath = capacityReporter.worstCaseHostLossLeadingToFailure();
assertFalse("Computing worst case host loss with no hosts should return an empty optional.", failurePath.isPresent());
// Odd edge case that should never be able to occur in prod
tester.createNodes(1, 10,
10, new NodeResources(10, 1000, 10000), 100,
1, new NodeResources(10, 1000, 10000), 100);
- failurePath = alerter.worstCaseHostLossLeadingToFailure();
+ failurePath = capacityReporter.worstCaseHostLossLeadingToFailure();
assertTrue(failurePath.isPresent());
assertTrue("Computing worst case host loss if all hosts have to be removed should result in an non-empty failureReason with empty nodes.",
failurePath.get().failureReason.tenant.isEmpty() && failurePath.get().failureReason.host.isEmpty());
@@ -66,7 +66,7 @@ public class NodeAlerterTest {
tester.createNodes(3, 30,
10, new NodeResources(0, 0, 10000), 1000,
0, new NodeResources(0, 0, 0), 0);
- failurePath = alerter.worstCaseHostLossLeadingToFailure();
+ failurePath = capacityReporter.worstCaseHostLossLeadingToFailure();
assertTrue(failurePath.isPresent());
if (failurePath.get().failureReason.tenant.isPresent()) {
var failureReasons = failurePath.get().failureReason.failureReasons;
@@ -81,7 +81,7 @@ public class NodeAlerterTest {
tester.createNodes(1, 10,
10, new NodeResources(10, 1000, 10000), 1,
10, new NodeResources(10, 1000, 10000), 1);
- var failurePath = alerter.worstCaseHostLossLeadingToFailure();
+ var failurePath = capacityReporter.worstCaseHostLossLeadingToFailure();
assertTrue(failurePath.isPresent());
if (failurePath.get().failureReason.tenant.isPresent()) {
var failureReasons = failurePath.get().failureReason.failureReasons;
@@ -96,7 +96,7 @@ public class NodeAlerterTest {
tester.createNodes(1, 10,
10, new NodeResources(1, 100, 1000), 100,
10, new NodeResources(0, 100, 1000), 100);
- var failurePath = alerter.worstCaseHostLossLeadingToFailure();
+ var failurePath = capacityReporter.worstCaseHostLossLeadingToFailure();
assertTrue(failurePath.isPresent());
if (failurePath.get().failureReason.tenant.isPresent()) {
var failureReasons = failurePath.get().failureReason.failureReasons;
@@ -107,7 +107,7 @@ public class NodeAlerterTest {
tester.createNodes(1, 10,
10, new NodeResources(10, 1, 1000), 100,
10, new NodeResources(10, 0, 1000), 100);
- failurePath = alerter.worstCaseHostLossLeadingToFailure();
+ failurePath = capacityReporter.worstCaseHostLossLeadingToFailure();
assertTrue(failurePath.isPresent());
if (failurePath.get().failureReason.tenant.isPresent()) {
var failureReasons = failurePath.get().failureReason.failureReasons;
@@ -118,7 +118,7 @@ public class NodeAlerterTest {
tester.createNodes(1, 10,
10, new NodeResources(10, 100, 10), 100,
10, new NodeResources(10, 100, 0), 100);
- failurePath = alerter.worstCaseHostLossLeadingToFailure();
+ failurePath = capacityReporter.worstCaseHostLossLeadingToFailure();
assertTrue(failurePath.isPresent());
if (failurePath.get().failureReason.tenant.isPresent()) {
var failureReasons = failurePath.get().failureReason.failureReasons;
@@ -130,7 +130,7 @@ public class NodeAlerterTest {
tester.createNodes(1, 10, List.of(new NodeResources(1, 10, 100)),
10, new NodeResources(0, 0, 0), 100,
10, new NodeResources(10, 1000, 10000, NodeResources.DiskSpeed.slow), 100);
- failurePath = alerter.worstCaseHostLossLeadingToFailure();
+ failurePath = capacityReporter.worstCaseHostLossLeadingToFailure();
assertTrue(failurePath.isPresent());
if (failurePath.get().failureReason.tenant.isPresent()) {
var failureReasons = failurePath.get().failureReason.failureReasons;
@@ -146,7 +146,7 @@ public class NodeAlerterTest {
tester.createNodes(1, 1,
10, new NodeResources(1, 100, 1000), 100,
10, new NodeResources(10, 1000, 10000), 100);
- var failurePath = alerter.worstCaseHostLossLeadingToFailure();
+ var failurePath = capacityReporter.worstCaseHostLossLeadingToFailure();
assertTrue(failurePath.isPresent());
if (failurePath.get().failureReason.tenant.isPresent()) {
var failureReasons = failurePath.get().failureReason.failureReasons;
@@ -157,7 +157,7 @@ public class NodeAlerterTest {
tester.createNodes(1, 2,
10, new NodeResources(10, 100, 1000), 1,
0, new NodeResources(0, 0, 0), 0);
- failurePath = alerter.worstCaseHostLossLeadingToFailure();
+ failurePath = capacityReporter.worstCaseHostLossLeadingToFailure();
assertTrue(failurePath.isPresent());
if (failurePath.get().failureReason.tenant.isPresent()) {
var failureReasons = failurePath.get().failureReason.failureReasons;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeAlerterTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityReportMaintainerTester.java
index fd8e0561fb8..ccea4691f10 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeAlerterTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityReportMaintainerTester.java
@@ -29,22 +29,22 @@ import java.util.stream.IntStream;
/**
* @author mgimle
*/
-public class NodeAlerterTester {
+public class CapacityReportMaintainerTester {
public static final Zone zone = new Zone(Environment.prod, RegionName.from("us-east"));
// Components with state
public final ManualClock clock = new ManualClock();
public final NodeRepository nodeRepository;
- NodeAlerterTester() {
+ CapacityReportMaintainerTester() {
Curator curator = new MockCurator();
NodeFlavors f = new NodeFlavors(new FlavorConfigBuilder().build());
nodeRepository = new NodeRepository(f, curator, clock, zone, new MockNameResolver().mockAnyLookup(),
DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), true);
}
- NodeAlerter makeNodeAlerter() {
- return new NodeAlerter(nodeRepository, new MetricsReporterTest.TestMetric(), Duration.ofDays(1));
+ CapacityReportMaintainer makeCapacityReportMaintainer() {
+ return new CapacityReportMaintainer(nodeRepository, new MetricsReporterTest.TestMetric(), Duration.ofDays(1));
}
List<NodeModel> createDistinctChildren(int amount, List<NodeResources> childResources) {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/maintenance.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/maintenance.json
index ccb534ea3fa..28881717e7c 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/maintenance.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/maintenance.json
@@ -1,6 +1,9 @@
{
"jobs": [
{
+ "name": "CapacityReportMaintainer"
+ },
+ {
"name": "DirtyExpirer"
},
{
@@ -19,9 +22,6 @@
"name": "MetricsReporter"
},
{
- "name": "NodeAlerter"
- },
- {
"name": "NodeFailer"
},
{