aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-08-25 11:44:29 +0200
committerMartin Polden <mpolden@mpolden.no>2022-08-25 12:32:41 +0200
commit78f923f5b5b436ad7766c79c3836f376b64f716f (patch)
tree8b4dd66d0828bf02f9b91b3a03ea4c0e52ff0b78 /node-repository
parentf506a54040a18c0e74092dd701b2165f845e7711 (diff)
Trust explicit ports on config server
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/NodeAcl.java27
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeAclResponse.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java5
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java10
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/acl-config-server.json94
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/active-nodes.json4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json72
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json72
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json19
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes-recursive-include-deprovisioned.json4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes-recursive.json4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes.json8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/states-recursive.json8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/stats.json2
15 files changed, 245 insertions, 92 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/NodeAcl.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/NodeAcl.java
index 7f7b1cd1035..b047782753b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/NodeAcl.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/NodeAcl.java
@@ -28,6 +28,8 @@ public record NodeAcl(Node node,
Set<String> trustedNetworks,
Set<Integer> trustedPorts) {
+ private static final Set<Integer> RPC_PORTS = Set.of(19070);
+
public NodeAcl {
Objects.requireNonNull(node, "node must be non-null");
ImmutableSet.copyOf(Objects.requireNonNull(trustedNodes, "trustedNodes must be non-null"));
@@ -81,9 +83,11 @@ public record NodeAcl(Node node,
}
case config -> {
// Config servers trust:
- // - all nodes
+ // - port 19070 (RPC) from all tenant nodes
+ // - port 19070 (RPC) from all proxy nodes
// - port 4443 from the world
- trustedNodes.addAll(TrustedNode.of(allNodes));
+ trustedNodes.addAll(TrustedNode.of(allNodes.nodeType(NodeType.tenant), RPC_PORTS));
+ trustedNodes.addAll(TrustedNode.of(allNodes.nodeType(NodeType.proxy), RPC_PORTS));
trustedPorts.add(4443);
}
case proxy -> {
@@ -107,19 +111,28 @@ public record NodeAcl(Node node,
return new NodeAcl(node, trustedNodes, trustedNetworks, trustedPorts);
}
- public record TrustedNode(String hostname, NodeType type, Set<String> ipAddresses) {
+ public record TrustedNode(String hostname, NodeType type, Set<String> ipAddresses, Set<Integer> ports) {
- public static TrustedNode of(Node node) {
- return new TrustedNode(node.hostname(), node.type(), node.ipConfig().primary());
+ /** Trust given ports from node */
+ public static TrustedNode of(Node node, Set<Integer> ports) {
+ return new TrustedNode(node.hostname(), node.type(), node.ipConfig().primary(), ports);
+ }
+ /** Trust all ports from given node */
+ public static TrustedNode of(Node node) {
+ return of(node, Set.of());
}
- public static List<TrustedNode> of(Iterable<Node> nodes) {
+ public static List<TrustedNode> of(Iterable<Node> nodes, Set<Integer> ports) {
return StreamSupport.stream(nodes.spliterator(), false)
- .map(TrustedNode::of)
+ .map(node -> TrustedNode.of(node, ports))
.toList();
}
+ public static List<TrustedNode> of(Iterable<Node> nodes) {
+ return of(nodes, Set.of());
+ }
+
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeAclResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeAclResponse.java
index af09278623b..45987338dae 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeAclResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeAclResponse.java
@@ -52,6 +52,10 @@ public class NodeAclResponse extends SlimeJsonResponse {
object.setString("hostname", node.hostname());
object.setString("type", node.type().name());
object.setString("ipAddress", ipAddress);
+ if (!node.ports().isEmpty()) {
+ Cursor portsArray = object.setArray("ports");
+ node.ports().stream().sorted().forEach(portsArray::addLong);
+ }
object.setString("trustedBy", nodeAcl.node().hostname());
}));
}
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 78c89118a78..e09c8a55b22 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
@@ -159,6 +159,11 @@ public class MockNodeRepository extends NodeRepository {
nodes().fail("dockerhost6.yahoo.com", Agent.operator, getClass().getSimpleName());
nodes().removeRecursively("dockerhost6.yahoo.com");
+ // Activate config servers
+ ApplicationId cfgApp = ApplicationId.from("cfg", "cfg", "cfg");
+ ClusterSpec cfgCluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("configservers")).vespaVersion("6.42").build();
+ activate(provisioner.prepare(cfgApp, cfgCluster, Capacity.fromRequiredNodeType(NodeType.config), null), cfgApp, provisioner);
+
ApplicationId zoneApp = ApplicationId.from(TenantName.from("zoneapp"), ApplicationName.from("zoneapp"), InstanceName.from("zoneapp"));
ClusterSpec zoneCluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("node-admin")).vespaVersion("6.42").build();
activate(provisioner.prepare(zoneApp, zoneCluster, Capacity.fromRequiredNodeType(NodeType.host), null), zoneApp, provisioner);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
index f9f2b6a489a..372539d5992 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
@@ -98,7 +98,9 @@ public class AclProvisioningTest {
NodeAcl nodeAcl = node.acl(tester.nodeRepository().nodes().list(), tester.nodeRepository().loadBalancers());
// Trusted nodes is all tenant nodes, all proxy nodes, all config servers and load balancer subnets
- assertAcls(trustedNodesOf(List.of(tenantNodes.asList(), proxyNodes, configServers.asList())),
+ assertAcls(List.of(TrustedNode.of(tenantNodes, Set.of(19070)),
+ TrustedNode.of(proxyNodes, Set.of(19070)),
+ TrustedNode.of(configServers)),
Set.of("10.2.3.0/24", "10.4.5.0/24"),
List.of(nodeAcl));
assertEquals(Set.of(22, 4443), nodeAcl.trustedPorts());
@@ -208,8 +210,12 @@ public class AclProvisioningTest {
nodeAcl.trustedNodes().stream().map(TrustedNode::ipAddresses).toList());
}
+ private static List<List<TrustedNode>> trustedNodesOf(List<List<Node>> nodes, Set<Integer> ports) {
+ return nodes.stream().map(node -> TrustedNode.of(node, ports)).toList();
+ }
+
private static List<List<TrustedNode>> trustedNodesOf(List<List<Node>> nodes) {
- return nodes.stream().map(TrustedNode::of).toList();
+ return trustedNodesOf(nodes, Set.of());
}
private List<Node> deploy(int nodeCount) {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
index 19af4d00e54..50ddf9c6672 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
@@ -75,13 +75,13 @@ public class NodesV2ApiTest {
new byte[0], Request.Method.POST));
assertRestart(2, new Request("http://localhost:8080/nodes/v2/command/restart?application=tenant2.application2.instance2",
new byte[0], Request.Method.POST));
- assertRestart(13, new Request("http://localhost:8080/nodes/v2/command/restart",
+ assertRestart(15, new Request("http://localhost:8080/nodes/v2/command/restart",
new byte[0], Request.Method.POST));
tester.assertResponseContains(new Request("http://localhost:8080/nodes/v2/node/host2.yahoo.com"),
"\"restartGeneration\":3");
// POST reboot command
- assertReboot(14, new Request("http://localhost:8080/nodes/v2/command/reboot?state=failed%20active",
+ assertReboot(16, new Request("http://localhost:8080/nodes/v2/command/reboot?state=failed%20active",
new byte[0], Request.Method.POST));
assertReboot(2, new Request("http://localhost:8080/nodes/v2/command/reboot?application=tenant2.application2.instance2",
new byte[0], Request.Method.POST));
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/acl-config-server.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/acl-config-server.json
index 55891309856..86b3620bebb 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/acl-config-server.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/acl-config-server.json
@@ -25,205 +25,177 @@
"trustedBy": "cfg1.yahoo.com"
},
{
- "hostname": "dockerhost1.yahoo.com",
- "type": "host",
- "ipAddress": "127.0.100.1",
- "trustedBy": "cfg1.yahoo.com"
- },
- {
- "hostname": "dockerhost1.yahoo.com",
- "type": "host",
- "ipAddress": "::100:1",
- "trustedBy": "cfg1.yahoo.com"
- },
- {
- "hostname": "dockerhost2.yahoo.com",
- "type": "host",
- "ipAddress": "127.0.101.1",
- "trustedBy": "cfg1.yahoo.com"
- },
- {
- "hostname": "dockerhost2.yahoo.com",
- "type": "host",
- "ipAddress": "::101:1",
- "trustedBy": "cfg1.yahoo.com"
- },
- {
- "hostname": "dockerhost3.yahoo.com",
- "type": "host",
- "ipAddress": "127.0.102.1",
- "trustedBy": "cfg1.yahoo.com"
- },
- {
- "hostname": "dockerhost3.yahoo.com",
- "type": "host",
- "ipAddress": "::102:1",
- "trustedBy": "cfg1.yahoo.com"
- },
- {
- "hostname": "dockerhost4.yahoo.com",
- "type": "host",
- "ipAddress": "127.0.103.1",
- "trustedBy": "cfg1.yahoo.com"
- },
- {
- "hostname": "dockerhost4.yahoo.com",
- "type": "host",
- "ipAddress": "::103:1",
- "trustedBy": "cfg1.yahoo.com"
- },
- {
- "hostname": "dockerhost5.yahoo.com",
- "type": "host",
- "ipAddress": "127.0.104.1",
- "trustedBy": "cfg1.yahoo.com"
- },
- {
- "hostname": "dockerhost5.yahoo.com",
- "type": "host",
- "ipAddress": "::104:1",
- "trustedBy": "cfg1.yahoo.com"
- },
- {
"hostname": "host1.yahoo.com",
"type": "tenant",
"ipAddress": "127.0.1.1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host1.yahoo.com",
"type": "tenant",
"ipAddress": "::1:1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host10.yahoo.com",
"type": "tenant",
"ipAddress": "127.0.10.1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host10.yahoo.com",
"type": "tenant",
"ipAddress": "::10:1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host13.yahoo.com",
"type": "tenant",
"ipAddress": "127.0.13.1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host13.yahoo.com",
"type": "tenant",
"ipAddress": "::13:1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host14.yahoo.com",
"type": "tenant",
"ipAddress": "127.0.14.1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host14.yahoo.com",
"type": "tenant",
"ipAddress": "::14:1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host2.yahoo.com",
"type": "tenant",
"ipAddress": "127.0.2.1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host2.yahoo.com",
"type": "tenant",
"ipAddress": "::2:1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host3.yahoo.com",
"type": "tenant",
"ipAddress": "127.0.3.1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host3.yahoo.com",
"type": "tenant",
"ipAddress": "::3:1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host4.yahoo.com",
"type": "tenant",
"ipAddress": "127.0.4.1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host4.yahoo.com",
"type": "tenant",
"ipAddress": "::4:1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host5.yahoo.com",
"type": "tenant",
"ipAddress": "127.0.5.1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host5.yahoo.com",
"type": "tenant",
"ipAddress": "::5:1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host55.yahoo.com",
"type": "tenant",
"ipAddress": "127.0.55.1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host55.yahoo.com",
"type": "tenant",
"ipAddress": "::55:1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host6.yahoo.com",
"type": "tenant",
"ipAddress": "127.0.6.1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host6.yahoo.com",
"type": "tenant",
"ipAddress": "::6:1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host7.yahoo.com",
"type": "tenant",
"ipAddress": "127.0.7.1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "host7.yahoo.com",
"type": "tenant",
"ipAddress": "::7:1",
+ "ports": [19070],
"trustedBy": "cfg1.yahoo.com"
},
{
"hostname": "test-node-pool-102-2",
"type": "tenant",
"ipAddress": "::102:2",
+ "ports": [19070],
+ "trustedBy": "cfg1.yahoo.com"
+ }
+ ],
+ "trustedNetworks": [
+ {
+ "network": "10.2.3.0/24",
+ "trustedBy": "cfg1.yahoo.com"
+ },
+ {
+ "network": "10.4.5.0/24",
"trustedBy": "cfg1.yahoo.com"
}
],
- "trustedNetworks": [],
"trustedPorts": [
{
"port":22,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/active-nodes.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/active-nodes.json
index 61ccea7dc94..c46bc6acbd2 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/active-nodes.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/active-nodes.json
@@ -12,6 +12,8 @@
@include(docker-node4.json),
@include(docker-node5.json),
@include(docker-node2.json),
- @include(docker-node1.json)
+ @include(docker-node1.json),
+ @include(cfg1.json),
+ @include(cfg2.json)
]
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json
index 6e2a3b87fe3..a9708f54d02 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json
@@ -1,14 +1,55 @@
{
"url": "http://localhost:8080/nodes/v2/node/cfg1.yahoo.com",
"id": "cfg1",
- "state": "ready",
+ "state": "active",
"type": "config",
"hostname": "cfg1.yahoo.com",
"flavor": "default",
"cpuCores": 2.0,
- "resources":{"vcpu":2.0,"memoryGb":16.0,"diskGb":400.0,"bandwidthGbps":10.0,"diskSpeed":"fast","storageType":"remote","architecture":"x86_64"},
- "realResources":{"vcpu":2.0,"memoryGb":16.0,"diskGb":400.0,"bandwidthGbps":10.0,"diskSpeed":"fast","storageType":"remote","architecture":"x86_64"},
+ "resources": {
+ "vcpu": 2.0,
+ "memoryGb": 16.0,
+ "diskGb": 400.0,
+ "bandwidthGbps": 10.0,
+ "diskSpeed": "fast",
+ "storageType": "remote",
+ "architecture": "x86_64"
+ },
+ "realResources": {
+ "vcpu": 2.0,
+ "memoryGb": 16.0,
+ "diskGb": 400.0,
+ "bandwidthGbps": 10.0,
+ "diskSpeed": "fast",
+ "storageType": "remote",
+ "architecture": "x86_64"
+ },
"environment": "BARE_METAL",
+ "owner": {
+ "tenant": "cfg",
+ "application": "cfg",
+ "instance": "cfg"
+ },
+ "membership": {
+ "clustertype": "container",
+ "clusterid": "configservers",
+ "group": "0",
+ "index": 0,
+ "retired": false
+ },
+ "restartGeneration": 0,
+ "currentRestartGeneration": 0,
+ "wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
+ "wantedVespaVersion": "6.42.0",
+ "requestedResources": {
+ "vcpu": 2.0,
+ "memoryGb": 16.0,
+ "diskGb": 400.0,
+ "bandwidthGbps": 10.0,
+ "diskSpeed": "fast",
+ "storageType": "remote",
+ "architecture": "x86_64"
+ },
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
@@ -27,6 +68,16 @@
"event": "readied",
"at": 123,
"agent": "system"
+ },
+ {
+ "event": "reserved",
+ "at": 123,
+ "agent": "application"
+ },
+ {
+ "event": "activated",
+ "at": 123,
+ "agent": "application"
}
],
"log": [
@@ -44,6 +95,21 @@
"event": "readied",
"at": 123,
"agent": "system"
+ },
+ {
+ "event": "reserved",
+ "at": 123,
+ "agent": "application"
+ },
+ {
+ "event": "reserved",
+ "at": 123,
+ "agent": "application"
+ },
+ {
+ "event": "activated",
+ "at": 123,
+ "agent": "application"
}
],
"ipAddresses": [
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json
index 20809fe51c3..3bd45acb856 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json
@@ -1,14 +1,55 @@
{
"url": "http://localhost:8080/nodes/v2/node/cfg2.yahoo.com",
"id": "cfg2",
- "state": "ready",
+ "state": "active",
"type": "config",
"hostname": "cfg2.yahoo.com",
"flavor": "default",
"cpuCores": 2.0,
- "resources":{"vcpu":2.0,"memoryGb":16.0,"diskGb":400.0,"bandwidthGbps":10.0,"diskSpeed":"fast","storageType":"remote","architecture":"x86_64"},
- "realResources":{"vcpu":2.0,"memoryGb":16.0,"diskGb":400.0,"bandwidthGbps":10.0,"diskSpeed":"fast","storageType":"remote","architecture":"x86_64"},
+ "resources": {
+ "vcpu": 2.0,
+ "memoryGb": 16.0,
+ "diskGb": 400.0,
+ "bandwidthGbps": 10.0,
+ "diskSpeed": "fast",
+ "storageType": "remote",
+ "architecture": "x86_64"
+ },
+ "realResources": {
+ "vcpu": 2.0,
+ "memoryGb": 16.0,
+ "diskGb": 400.0,
+ "bandwidthGbps": 10.0,
+ "diskSpeed": "fast",
+ "storageType": "remote",
+ "architecture": "x86_64"
+ },
"environment": "BARE_METAL",
+ "owner": {
+ "tenant": "cfg",
+ "application": "cfg",
+ "instance": "cfg"
+ },
+ "membership": {
+ "clustertype": "container",
+ "clusterid": "configservers",
+ "group": "0",
+ "index": 1,
+ "retired": false
+ },
+ "restartGeneration": 0,
+ "currentRestartGeneration": 0,
+ "wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
+ "wantedVespaVersion": "6.42.0",
+ "requestedResources": {
+ "vcpu": 2.0,
+ "memoryGb": 16.0,
+ "diskGb": 400.0,
+ "bandwidthGbps": 10.0,
+ "diskSpeed": "fast",
+ "storageType": "remote",
+ "architecture": "x86_64"
+ },
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
@@ -27,6 +68,16 @@
"event": "readied",
"at": 123,
"agent": "system"
+ },
+ {
+ "event": "reserved",
+ "at": 123,
+ "agent": "application"
+ },
+ {
+ "event": "activated",
+ "at": 123,
+ "agent": "application"
}
],
"log": [
@@ -44,6 +95,21 @@
"event": "readied",
"at": 123,
"agent": "system"
+ },
+ {
+ "event": "reserved",
+ "at": 123,
+ "agent": "application"
+ },
+ {
+ "event": "reserved",
+ "at": 123,
+ "agent": "application"
+ },
+ {
+ "event": "activated",
+ "at": 123,
+ "agent": "application"
}
],
"ipAddresses": [
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json
index 82e31abfcfa..7ae283e3916 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json
@@ -31,6 +31,25 @@
]
},
{
+ "id": "cfg:cfg:cfg:configservers",
+ "state": "reserved",
+ "changedAt": 123,
+ "application": "cfg",
+ "tenant": "cfg",
+ "instance": "cfg",
+ "cluster": "configservers",
+ "hostname": "lb-cfg.cfg.cfg-configservers",
+ "dnsZone": "zone-id-1",
+ "networks": [
+ "10.2.3.0/24",
+ "10.4.5.0/24"
+ ],
+ "ports": [
+ 4443
+ ],
+ "reals": []
+ },
+ {
"id": "tenant4:application4:instance4:id4",
"state": "active",
"changedAt": 123,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes-recursive-include-deprovisioned.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes-recursive-include-deprovisioned.json
index 2b650bad39b..66b44726e7e 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes-recursive-include-deprovisioned.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes-recursive-include-deprovisioned.json
@@ -1,10 +1,10 @@
{
"nodes": [
@include(node7.json),
- @include(cfg1.json),
@include(node3.json),
- @include(cfg2.json),
@include(node10.json),
+ @include(cfg1.json),
+ @include(cfg2.json),
@include(docker-node3.json),
@include(node14.json),
@include(node4.json),
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes-recursive.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes-recursive.json
index 55e216f454a..7b52bc576ae 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes-recursive.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes-recursive.json
@@ -1,10 +1,10 @@
{
"nodes": [
@include(node7.json),
- @include(cfg1.json),
@include(node3.json),
- @include(cfg2.json),
@include(node10.json),
+ @include(cfg1.json),
+ @include(cfg2.json),
@include(docker-node3.json),
@include(node14.json),
@include(node4.json),
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes.json
index 54ff2bc232f..86da5fb6e62 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/nodes.json
@@ -4,16 +4,16 @@
"url": "http://localhost:8080/nodes/v2/node/host7.yahoo.com"
},
{
- "url": "http://localhost:8080/nodes/v2/node/cfg1.yahoo.com"
+ "url": "http://localhost:8080/nodes/v2/node/host3.yahoo.com"
},
{
- "url": "http://localhost:8080/nodes/v2/node/host3.yahoo.com"
+ "url": "http://localhost:8080/nodes/v2/node/host10.yahoo.com"
},
{
- "url": "http://localhost:8080/nodes/v2/node/cfg2.yahoo.com"
+ "url": "http://localhost:8080/nodes/v2/node/cfg1.yahoo.com"
},
{
- "url": "http://localhost:8080/nodes/v2/node/host10.yahoo.com"
+ "url": "http://localhost:8080/nodes/v2/node/cfg2.yahoo.com"
},
{
"url": "http://localhost:8080/nodes/v2/node/dockerhost3.yahoo.com"
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/states-recursive.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/states-recursive.json
index 27767be6315..5ece0e642f1 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/states-recursive.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/states-recursive.json
@@ -9,9 +9,7 @@
"ready": {
"url": "http://localhost:8080/nodes/v2/state/ready",
"nodes": [
- @include(node3.json),
- @include(cfg1.json),
- @include(cfg2.json)
+ @include(node3.json)
]
},
"reserved": {
@@ -34,7 +32,9 @@
@include(docker-node4.json),
@include(docker-node5.json),
@include(docker-node2.json),
- @include(docker-node1.json)
+ @include(docker-node1.json),
+ @include(cfg1.json),
+ @include(cfg2.json)
]
},
"inactive": {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/stats.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/stats.json
index 38505726def..788eb6d359f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/stats.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/stats.json
@@ -1,6 +1,6 @@
{
"totalCost": 8.591999999999999,
- "totalAllocatedCost": 5.356,
+ "totalAllocatedCost": 6.468,
"load": {
"cpu": 0.0,
"memory": 0.0,