summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMorten Tokle <morten.tokle@gmail.com>2018-03-12 14:28:48 +0100
committerGitHub <noreply@github.com>2018-03-12 14:28:48 +0100
commit7288820860bcc2889f4c31ecd258017477f52d1c (patch)
tree6b4b62dec4e67af5026ef42692273c867fefe2a2 /node-repository
parentbf3c2640df550821ad611813330cbbe90f4fb6f5 (diff)
parent6a7661815a4ec5ec0f2704e0a2576858b6e19459 (diff)
Merge pull request #5235 from vespa-engine/mpolden/add-type-field
Include node type in node ACL
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodeAclResponse.java26
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-config-server.json32
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-docker-host.json13
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/acl-tenant-node.json23
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<String> 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"
}