summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2018-02-21 16:57:56 +0100
committerValerij Fredriksen <valerijf@oath.com>2018-02-21 17:19:07 +0100
commit6948d5e48a3eae0c479455319d2cddc974a3ce05 (patch)
tree8a4efd9d775e916ea7821187fa74667c8622ee81 /node-repository
parent5cd6ac466a14a140ebcc9a6f9bcc775cba232ade (diff)
Always set agent and reason when readying a node
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java8
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceTester.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTester.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/monitoring/MetricsReporterTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55-after-changes.json2
16 files changed, 28 insertions, 26 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
index 9bb8c1f28a1..3f752eafa0e 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
@@ -305,7 +305,7 @@ public class NodeRepository extends AbstractComponent {
}
/** Sets a list of nodes ready and returns the nodes in the ready state */
- public List<Node> setReady(List<Node> nodes) {
+ public List<Node> setReady(List<Node> nodes, Agent agent, String reason) {
try (Mutex lock = lockUnallocated()) {
List<Node> nodesWithResetFields = nodes.stream()
.map(node -> {
@@ -315,16 +315,16 @@ public class NodeRepository extends AbstractComponent {
})
.collect(Collectors.toList());
- return db.writeTo(Node.State.ready, nodesWithResetFields, Agent.system, Optional.empty());
+ return db.writeTo(Node.State.ready, nodesWithResetFields, agent, Optional.of(reason));
}
}
- public Node setReady(String hostname) {
+ public Node setReady(String hostname, Agent agent, String reason) {
Node nodeToReady = getNode(hostname).orElseThrow(() ->
new NoSuchNodeException("Could not move " + hostname + " to ready: Node not found"));
if (nodeToReady.state() == Node.State.ready) return nodeToReady;
- return setReady(Collections.singletonList(nodeToReady)).get(0);
+ return setReady(Collections.singletonList(nodeToReady), agent, reason).get(0);
}
/** Reserve nodes. This method does <b>not</b> lock the node repository */
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java
index cd646f293f7..34111797de6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java
@@ -108,7 +108,7 @@ public class NodesApiHandler extends LoggingRequestHandler {
String path = request.getUri().getPath();
// Check paths to disallow illegal state changes
if (path.startsWith("/nodes/v2/state/ready/")) {
- nodeRepository.setReady(lastElement(path));
+ nodeRepository.setReady(lastElement(path), Agent.operator, "Readied through the nodes/v2 API");
return new MessageResponse("Moved " + lastElement(path) + " to ready");
}
else if (path.startsWith("/nodes/v2/state/failed/")) {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java
index 7af28efd293..b7392f3aee6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java
@@ -104,7 +104,7 @@ public class MockNodeRepository extends NodeRepository {
nodes.remove(6);
nodes.remove(7);
nodes = setDirty(nodes, Agent.system, getClass().getSimpleName());
- setReady(nodes);
+ setReady(nodes, Agent.system, getClass().getSimpleName());
fail("host5.yahoo.com", Agent.system, getClass().getSimpleName());
setDirty("host55.yahoo.com", Agent.system, getClass().getSimpleName());
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
index 86d43c25011..6e97f3d1269 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
@@ -73,7 +73,7 @@ public class NodeRepositoryTest {
}
tester.nodeRepository().setDirty("host1", Agent.system, getClass().getSimpleName());
- tester.nodeRepository().setReady("host1");
+ tester.nodeRepository().setReady("host1", Agent.system, getClass().getSimpleName());
tester.nodeRepository().removeRecursively("host1");
}
@@ -104,7 +104,7 @@ public class NodeRepositoryTest {
assertEquals(4, tester.nodeRepository().getNodes().size());
// Now node10 and node12 are in provisioned, set node11 to ready, and it should be OK to delete host1
- tester.nodeRepository().setReady("node11");
+ tester.nodeRepository().setReady("node11", Agent.system, getClass().getSimpleName());
tester.nodeRepository().removeRecursively("node11"); // Remove one of the children first instead
assertEquals(3, tester.nodeRepository().getNodes().size());
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
index 7151006d743..7c064c5faf1 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
@@ -276,7 +276,8 @@ public class FailedExpirerTest {
List<Node> nodes = Stream.of(hostname)
.map(this::get)
.collect(Collectors.toList());
- nodeRepository.setReady(nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName()));
+ nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
+ nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
return this;
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
index a79b0916cbe..3d5de590bf4 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
@@ -14,6 +14,7 @@ import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.hosted.provision.Node;
+import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.node.History;
import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester;
import com.yahoo.vespa.hosted.provision.testutils.MockDeployer;
@@ -68,7 +69,7 @@ public class InactiveAndFailedExpirerTest {
assertFalse(dirty.get(1).allocation().isPresent());
// One node is set back to ready
- Node ready = tester.nodeRepository().setReady(Collections.singletonList(dirty.get(0))).get(0);
+ Node ready = tester.nodeRepository().setReady(Collections.singletonList(dirty.get(0)), Agent.system, getClass().getSimpleName()).get(0);
assertEquals("Allocated history is removed on readying",
Arrays.asList(History.Event.Type.provisioned, History.Event.Type.readied),
ready.history().events().stream().map(History.Event::type).collect(Collectors.toList()));
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceTester.java
index e3fb2115fb1..16465c620de 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceTester.java
@@ -46,7 +46,7 @@ public class MaintenanceTester {
nodes = nodeRepository.addNodes(nodes);
nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
nodes = simulateInitialReboot(nodes);
- nodeRepository.setReady(nodes);
+ nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
}
public void createReadyHostNodes(int count) {
@@ -56,7 +56,7 @@ public class MaintenanceTester {
nodes = nodeRepository.addNodes(nodes);
nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
nodes = simulateInitialReboot(nodes);
- nodeRepository.setReady(nodes);
+ nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
}
/** Simulate the initial reboot the node performs when it's in dirty */
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
index ff4403842f2..5534c28cc1a 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
@@ -221,7 +221,7 @@ public class NodeFailTester {
nodes = nodeRepository.addNodes(nodes);
nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
- return nodeRepository.setReady(nodes);
+ return nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
}
private List<Node> createHostNodes(int count) {
@@ -230,7 +230,7 @@ public class NodeFailTester {
nodes.add(nodeRepository.createNode("parent" + i, "parent" + i, Optional.empty(), nodeFlavors.getFlavorOrThrow("default"), NodeType.host));
nodes = nodeRepository.addNodes(nodes);
nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
- return nodeRepository.setReady(nodes);
+ return nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
}
private void activate(ApplicationId applicationId, ClusterSpec cluster, int nodeCount) {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTester.java
index 392d3e2a5c9..b05f4178419 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTester.java
@@ -102,7 +102,7 @@ public class NodeRetirerTester {
nodes = nodeRepository.addNodes(nodes);
nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
- nodeRepository.setReady(nodes);
+ nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
}
void deployApp(String tenantName, String applicationName, int[] flavorIds, int[] numNodes) {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java
index 629d4187065..b6afc74b81d 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java
@@ -92,7 +92,7 @@ public class OperatorChangeApplicationMaintainerTest {
nodes.add(nodeRepository.createNode("node" + i, "host" + i, Optional.empty(), nodeFlavors.getFlavorOrThrow("default"), NodeType.tenant));
nodes = nodeRepository.addNodes(nodes);
nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
- nodeRepository.setReady(nodes);
+ nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
}
private void createHostNodes(int count, NodeRepository nodeRepository, NodeFlavors nodeFlavors) {
@@ -101,7 +101,7 @@ public class OperatorChangeApplicationMaintainerTest {
nodes.add(nodeRepository.createNode("hostNode" + i, "realHost" + i, Optional.empty(), nodeFlavors.getFlavorOrThrow("default"), NodeType.host));
nodes = nodeRepository.addNodes(nodes);
nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
- nodeRepository.setReady(nodes);
+ nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
}
private class Fixture {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
index 7812e9752b7..f6a040a1d7a 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
@@ -134,7 +134,7 @@ public class PeriodicApplicationMaintainerTest {
nodes.add(nodeRepository.createNode("node" + i, "host" + i, Optional.empty(), nodeFlavors.getFlavorOrThrow("default"), NodeType.tenant));
nodes = nodeRepository.addNodes(nodes);
nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
- nodeRepository.setReady(nodes);
+ nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
}
private void createHostNodes(int count, NodeRepository nodeRepository, NodeFlavors nodeFlavors) {
@@ -143,7 +143,7 @@ public class PeriodicApplicationMaintainerTest {
nodes.add(nodeRepository.createNode("hostNode" + i, "realHost" + i, Optional.empty(), nodeFlavors.getFlavorOrThrow("default"), NodeType.host));
nodes = nodeRepository.addNodes(nodes);
nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
- nodeRepository.setReady(nodes);
+ nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
}
private class Fixture {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java
index 6cbb512f489..e78c29e4745 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java
@@ -54,7 +54,7 @@ public class ReservationExpirerTest {
// Reserve 2 nodes
assertEquals(2, nodeRepository.getNodes(NodeType.tenant, Node.State.dirty).size());
- nodeRepository.setReady(nodes);
+ nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
ApplicationId applicationId = new ApplicationId.Builder().tenant("foo").applicationName("bar").instanceName("fuz").build();
ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Version.fromString("6.42"));
provisioner.prepare(applicationId, cluster, Capacity.fromNodeCount(2), 1, null);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java
index 0a2d1b59cb4..0cf30fce071 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java
@@ -202,7 +202,7 @@ public class RetiredExpirerTest {
nodes.add(nodeRepository.createNode("node" + i, "node" + i, Optional.empty(), nodeFlavors.getFlavorOrThrow("default"), NodeType.tenant));
nodes = nodeRepository.addNodes(nodes);
nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
- nodeRepository.setReady(nodes);
+ nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
}
private void createHostNodes(int count, NodeRepository nodeRepository, NodeFlavors nodeFlavors) {
@@ -211,7 +211,7 @@ public class RetiredExpirerTest {
nodes.add(nodeRepository.createNode("parent" + i, "parent" + i, Optional.empty(), nodeFlavors.getFlavorOrThrow("default"), NodeType.host));
nodes = nodeRepository.addNodes(nodes);
nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
- nodeRepository.setReady(nodes);
+ nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
}
private RetiredExpirer createRetiredExpirer(Deployer deployer) {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/monitoring/MetricsReporterTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/monitoring/MetricsReporterTest.java
index 8fa63c49159..b7eb1b480d9 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/monitoring/MetricsReporterTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/monitoring/MetricsReporterTest.java
@@ -124,7 +124,7 @@ public class MetricsReporterTest {
Node dockerHost = Node.create("openStackId1", Collections.singleton("::1"), additionalIps, "dockerHost", Optional.empty(), nodeFlavors.getFlavorOrThrow("host"), NodeType.host);
nodeRepository.addNodes(Collections.singletonList(dockerHost));
nodeRepository.setDirty("dockerHost", Agent.system, getClass().getSimpleName());
- nodeRepository.setReady("dockerHost");
+ nodeRepository.setReady("dockerHost", Agent.system, getClass().getSimpleName());
Node container1 = Node.createDockerNode("openStackId1:1", Collections.singleton("::2"), Collections.emptySet(), "container1", Optional.of("dockerHost"), nodeFlavors.getFlavorOrThrow("docker"), NodeType.tenant);
container1 = container1.with(allocation(Optional.of("app1")).get());
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
index 2b50af91656..9e14ab95862 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
@@ -285,7 +285,7 @@ public class ProvisioningTester implements AutoCloseable {
List<Node> makeReadyNodes(int n, String flavor, NodeType type, int additionalIps) {
List<Node> nodes = makeProvisionedNodes(n, flavor, type, additionalIps);
nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
- return nodeRepository.setReady(nodes);
+ return nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
}
/** Creates a set of virtual docker nodes on a single docker host */
@@ -303,7 +303,7 @@ public class ProvisioningTester implements AutoCloseable {
}
nodes = nodeRepository.addNodes(nodes);
nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName());
- nodeRepository.setReady(nodes);
+ nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName());
return nodes;
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55-after-changes.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55-after-changes.json
index 4560e5e1be4..f3f1306af1e 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55-after-changes.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55-after-changes.json
@@ -28,7 +28,7 @@
{
"event": "readied",
"at": 123,
- "agent": "system"
+ "agent": "operator"
}
],
"ipAddresses": [