diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2018-02-21 16:57:56 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2018-02-21 17:19:07 +0100 |
commit | 6948d5e48a3eae0c479455319d2cddc974a3ce05 (patch) | |
tree | 8a4efd9d775e916ea7821187fa74667c8622ee81 /node-repository | |
parent | 5cd6ac466a14a140ebcc9a6f9bcc775cba232ade (diff) |
Always set agent and reason when readying a node
Diffstat (limited to 'node-repository')
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": [ |