diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-01-12 14:52:16 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-01-12 15:33:28 +0100 |
commit | 5a86d31823582ad80b802ff647ec0cb00b05b858 (patch) | |
tree | daedf4dd637f9d5e02fdf3d6139eab7a306c41c4 /node-repository | |
parent | 582d355f5a81c3fc85a319a8194cc7d467391304 (diff) |
Avoid repeatedly reading nodes for every known node type
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java index 4852f0f8269..d1909b7a8f7 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java @@ -5,13 +5,13 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeResources; -import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.serialization.NetworkPortsSerializer; import com.yahoo.container.jdisc.HttpRequest; import com.yahoo.restapi.SlimeJsonResponse; import com.yahoo.slime.Cursor; import com.yahoo.vespa.applicationmodel.HostName; import com.yahoo.vespa.hosted.provision.Node; +import com.yahoo.vespa.hosted.provision.NodeList; import com.yahoo.vespa.hosted.provision.NodeRepository; import com.yahoo.vespa.hosted.provision.node.Address; import com.yahoo.vespa.hosted.provision.node.History; @@ -21,6 +21,7 @@ import com.yahoo.vespa.orchestrator.status.HostInfo; import com.yahoo.vespa.orchestrator.status.HostStatus; import java.net.URI; +import java.util.Comparator; import java.util.List; import java.util.Optional; import java.util.Set; @@ -93,17 +94,16 @@ class NodesResponse extends SlimeJsonResponse { /** Outputs the nodes in the given state to a node array */ private void nodesToSlime(Node.State state, Cursor parentObject) { Cursor nodeArray = parentObject.setArray("nodes"); - for (NodeType type : NodeType.values()) - toSlime(nodeRepository.nodes().list(state).nodeType(type).asList(), nodeArray); + toSlime(nodeRepository.nodes().list(state).sortedBy(Comparator.comparing(Node::type)), nodeArray); } /** Outputs all the nodes to a node array */ private void nodesToSlime(Cursor parentObject) { Cursor nodeArray = parentObject.setArray("nodes"); - toSlime(nodeRepository.nodes().list().asList(), nodeArray); + toSlime(nodeRepository.nodes().list(), nodeArray); } - private void toSlime(List<Node> nodes, Cursor array) { + private void toSlime(NodeList nodes, Cursor array) { for (Node node : nodes) { if ( ! filter.test(node)) continue; toSlime(node, recursive, array.addObject()); |