From 6a7661815a4ec5ec0f2704e0a2576858b6e19459 Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Wed, 7 Mar 2018 12:18:54 +0100 Subject: Include node type in node ACL This reverts commit 1b9936ac1ff12d2ec7c15b6b970513198156abe9. --- .../provision/restapi/v2/NodeAclResponse.java | 26 ++++++++++-------- .../restapi/v2/responses/acl-config-server.json | 32 ++++++++++++++++++++++ .../restapi/v2/responses/acl-docker-host.json | 13 +++++++++ .../restapi/v2/responses/acl-tenant-node.json | 23 ++++++++++++++++ 4 files changed, 83 insertions(+), 11 deletions(-) diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodeAclResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodeAclResponse.java index 2a4f37151de..65b727ad0dd 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodeAclResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodeAclResponse.java @@ -7,12 +7,13 @@ import com.yahoo.slime.Cursor; import com.yahoo.slime.Slime; import com.yahoo.vespa.config.SlimeUtils; import com.yahoo.vespa.hosted.provision.Node; -import com.yahoo.vespa.hosted.provision.node.NodeAcl; import com.yahoo.vespa.hosted.provision.NodeRepository; +import com.yahoo.vespa.hosted.provision.node.NodeAcl; import java.io.File; import java.io.IOException; import java.io.OutputStream; +import java.util.Set; /** * @author mpolden @@ -36,36 +37,35 @@ public class NodeAclResponse extends HttpResponse { toSlime(hostname, root); } - private static String baseName(String path) { - return new File(path).getName(); - } - private void toSlime(String hostname, Cursor object) { Node node = nodeRepository.getNode(hostname) .orElseGet(() -> nodeRepository.getConfigNode(hostname) .orElseThrow(() -> new NotFoundException("No node with hostname '" + hostname + "'"))); Cursor trustedNodesArray = object.setArray("trustedNodes"); - nodeRepository.getNodeAcls(node, aclsForChildren).forEach(nodeAcl -> toTrustedNodeSlime(nodeAcl, trustedNodesArray)); + nodeRepository.getNodeAcls(node, aclsForChildren).forEach(nodeAcl -> toSlime(nodeAcl, trustedNodesArray)); Cursor trustedNetworksArray = object.setArray("trustedNetworks"); - nodeRepository.getNodeAcls(node, aclsForChildren).forEach(nodeAcl -> toTrustedNetworkSlime(nodeAcl, trustedNetworksArray)); + nodeRepository.getNodeAcls(node, aclsForChildren).forEach(nodeAcl -> toSlime(nodeAcl.trustedNetworks(), + nodeAcl.node(), + trustedNetworksArray)); } - private void toTrustedNodeSlime(NodeAcl nodeAcl, Cursor array) { + private void toSlime(NodeAcl nodeAcl, Cursor array) { nodeAcl.trustedNodes().forEach(node -> node.ipAddresses().forEach(ipAddress -> { Cursor object = array.addObject(); object.setString("hostname", node.hostname()); + object.setString("type", node.type().name()); object.setString("ipAddress", ipAddress); object.setString("trustedBy", nodeAcl.node().hostname()); })); } - private void toTrustedNetworkSlime(NodeAcl nodeAcl, Cursor array) { - nodeAcl.trustedNetworks().forEach(network -> { + private void toSlime(Set trustedNetworks, Node trustedBy, Cursor array) { + trustedNetworks.forEach(network -> { Cursor object = array.addObject(); object.setString("network", network); - object.setString("trustedBy", nodeAcl.node().hostname()); + object.setString("trustedBy", trustedBy.hostname()); }); } @@ -78,4 +78,8 @@ public class NodeAclResponse extends HttpResponse { public String getContentType() { return "application/json"; } + + private static String baseName(String path) { + return new File(path).getName(); + } } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-config-server.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-config-server.json index af925e9f94e..775d33a3a19 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-config-server.json +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-config-server.json @@ -2,161 +2,193 @@ "trustedNodes": [ { "hostname": "cfg1", + "type": "config", "ipAddress": "(ignore)", "trustedBy": "cfg1" }, { "hostname": "cfg2", + "type": "config", "ipAddress": "(ignore)", "trustedBy": "cfg1" }, { "hostname": "cfg3", + "type": "config", "ipAddress": "(ignore)", "trustedBy": "cfg1" }, { "hostname": "dockerhost1.yahoo.com", + "type": "host", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "dockerhost1.yahoo.com", + "type": "host", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "dockerhost2.yahoo.com", + "type": "host", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "dockerhost2.yahoo.com", + "type": "host", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "dockerhost3.yahoo.com", + "type": "host", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "dockerhost3.yahoo.com", + "type": "host", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "dockerhost4.yahoo.com", + "type": "host", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "dockerhost4.yahoo.com", + "type": "host", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "dockerhost5.yahoo.com", + "type": "host", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "dockerhost5.yahoo.com", + "type": "host", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "host1.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "host1.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "host10.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "host10.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "host2.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "host2.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "host3.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "host3.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "host4.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "host4.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "host5.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "host5.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "host55.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "host55.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "host6.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "host6.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "host7.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "cfg1" }, { "hostname": "host7.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "cfg1" }, { "hostname": "test-container-1", + "type": "tenant", "ipAddress": "::2", "trustedBy": "cfg1" } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-docker-host.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-docker-host.json index 195edac7cce..f13730ba066 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-docker-host.json +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-docker-host.json @@ -2,66 +2,79 @@ "trustedNodes": [ { "hostname": "cfg1", + "type": "config", "ipAddress": "(ignore)", "trustedBy": "dockerhost1.yahoo.com" }, { "hostname": "cfg2", + "type": "config", "ipAddress": "(ignore)", "trustedBy": "dockerhost1.yahoo.com" }, { "hostname": "cfg3", + "type": "config", "ipAddress": "(ignore)", "trustedBy": "dockerhost1.yahoo.com" }, { "hostname": "dockerhost1.yahoo.com", + "type": "host", "ipAddress": "::1", "trustedBy": "dockerhost1.yahoo.com" }, { "hostname": "dockerhost1.yahoo.com", + "type": "host", "ipAddress": "127.0.0.1", "trustedBy": "dockerhost1.yahoo.com" }, { "hostname": "dockerhost2.yahoo.com", + "type": "host", "ipAddress": "::1", "trustedBy": "dockerhost1.yahoo.com" }, { "hostname": "dockerhost2.yahoo.com", + "type": "host", "ipAddress": "127.0.0.1", "trustedBy": "dockerhost1.yahoo.com" }, { "hostname": "dockerhost3.yahoo.com", + "type": "host", "ipAddress": "::1", "trustedBy": "dockerhost1.yahoo.com" }, { "hostname": "dockerhost3.yahoo.com", + "type": "host", "ipAddress": "127.0.0.1", "trustedBy": "dockerhost1.yahoo.com" }, { "hostname": "dockerhost4.yahoo.com", + "type": "host", "ipAddress": "::1", "trustedBy": "dockerhost1.yahoo.com" }, { "hostname": "dockerhost4.yahoo.com", + "type": "host", "ipAddress": "127.0.0.1", "trustedBy": "dockerhost1.yahoo.com" }, { "hostname": "dockerhost5.yahoo.com", + "type": "host", "ipAddress": "::1", "trustedBy": "dockerhost1.yahoo.com" }, { "hostname": "dockerhost5.yahoo.com", + "type": "host", "ipAddress": "127.0.0.1", "trustedBy": "dockerhost1.yahoo.com" } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-tenant-node.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-tenant-node.json index eb7a6ba61bb..b2184c9d825 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-tenant-node.json +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-tenant-node.json @@ -2,116 +2,139 @@ "trustedNodes": [ { "hostname": "cfg1", + "type": "config", "ipAddress": "(ignore)", "trustedBy": "foo.yahoo.com" }, { "hostname": "cfg2", + "type": "config", "ipAddress": "(ignore)", "trustedBy": "foo.yahoo.com" }, { "hostname": "cfg3", + "type": "config", "ipAddress": "(ignore)", "trustedBy": "foo.yahoo.com" }, { "hostname": "foo.yahoo.com", + "type": "tenant", "ipAddress": "(ignore)", "trustedBy": "foo.yahoo.com" }, { "hostname": "host1.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host1.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host10.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host10.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host2.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host2.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host3.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host3.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host4.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host4.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host5.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host5.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host55.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host55.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host6.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host6.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host7.yahoo.com", + "type": "tenant", "ipAddress": "::1", "trustedBy": "foo.yahoo.com" }, { "hostname": "host7.yahoo.com", + "type": "tenant", "ipAddress": "127.0.0.1", "trustedBy": "foo.yahoo.com" }, { "hostname": "test-container-1", + "type": "tenant", "ipAddress": "::2", "trustedBy": "foo.yahoo.com" } -- cgit v1.2.3