From cc85df9c1a7ec41ead2d8a7482acdcc0324f4ffd Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Mon, 14 May 2018 14:46:29 +0200 Subject: Remove special handling of config servers in ACL --- .../com/yahoo/vespa/hosted/provision/NodeList.java | 6 ++ .../vespa/hosted/provision/NodeRepository.java | 20 +----- .../provision/restapi/v2/NodeAclResponse.java | 3 +- .../provision/testutils/MockNodeRepository.java | 6 +- .../provisioning/AclProvisioningTest.java | 40 ++++------- .../provision/provisioning/ProvisioningTester.java | 37 +++++++++- .../hosted/provision/restapi/v2/RestApiTest.java | 4 +- .../restapi/v2/responses/acl-config-server.json | 78 ++++++++++------------ .../restapi/v2/responses/acl-docker-host.json | 14 ++-- .../restapi/v2/responses/acl-tenant-node.json | 14 ++-- .../provision/restapi/v2/responses/cfg1.json | 36 ++++++++++ .../provision/restapi/v2/responses/cfg2.json | 36 ++++++++++ .../restapi/v2/responses/nodes-recursive.json | 2 + .../provision/restapi/v2/responses/nodes.json | 6 ++ .../restapi/v2/responses/states-recursive.json | 4 +- 15 files changed, 191 insertions(+), 115 deletions(-) create mode 100644 node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg1.json create mode 100644 node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg2.json (limited to 'node-repository') diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java index acf62ae91b9..bb47fedceba 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java @@ -87,6 +87,12 @@ public class NodeList { .collect(collectingAndThen(Collectors.toList(), NodeList::new)); } + public NodeList configServers() { + return nodes.stream() + .filter(node -> node.type() == NodeType.config) + .collect(collectingAndThen(Collectors.toList(), NodeList::new)); + } + public int size() { return nodes.size(); } /** Returns the immutable list of nodes in this */ 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 5ce88522fed..99a715b5bc1 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 @@ -180,7 +180,7 @@ public class NodeRepository extends AbstractComponent { // - nodes in same application // - config servers node.allocation().ifPresent(allocation -> trustedNodes.addAll(candidates.owner(allocation.owner()).asList())); - trustedNodes.addAll(getConfigNodes()); + trustedNodes.addAll(candidates.configServers().asList()); switch (node.type()) { case tenant: @@ -245,13 +245,6 @@ public class NodeRepository extends AbstractComponent { } } - /** Get config node by hostname */ - public Optional getConfigNode(String hostname) { - return getConfigNodes().stream() - .filter(n -> hostname.equals(n.hostname())) - .findFirst(); - } - /** Get default flavor override for an application, if present. */ public Optional getDefaultFlavorOverride(ApplicationId applicationId) { return db.getDefaultFlavorForApplication(applicationId); @@ -649,17 +642,6 @@ public class NodeRepository extends AbstractComponent { return resultingNodes; } - // Public for testing - public List getConfigNodes() { - // TODO: Revisit this when config servers are added to the repository - return Arrays.stream(curator.zooKeeperEnsembleConnectionSpec().split(",")) - .map(hostPort -> hostPort.split(":")[0]) - .map(host -> createNode(host, host, Optional.empty(), - flavors.getFlavorOrThrow("v-4-8-100"), // Must be a flavor that exists in Hosted Vespa - NodeType.config)) - .collect(Collectors.toList()); - } - /** Returns the time keeper of this system */ public Clock clock() { return clock; } 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 e9b3ea5e726..5dcb4ab6a71 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 @@ -40,8 +40,7 @@ public class NodeAclResponse extends HttpResponse { private void toSlime(String hostname, Cursor object) { Node node = nodeRepository.getNode(hostname) - .orElseGet(() -> nodeRepository.getConfigNode(hostname) - .orElseThrow(() -> new NotFoundException("No node with hostname '" + hostname + "'"))); + .orElseThrow(() -> new NotFoundException("No node with hostname '" + hostname + "'")); List acls = nodeRepository.getNodeAcls(node, aclsForChildren); 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 931ddc5e051..04a4a7f5fb8 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 @@ -58,9 +58,9 @@ public class MockNodeRepository extends NodeRepository { private void populate() { NodeRepositoryProvisioner provisioner = new NodeRepositoryProvisioner(this, flavors, Zone.defaultZone()); - List nodes = new ArrayList<>(); + // Regular nodes final List ipAddressesForAllHost = Arrays.asList("127.0.0.1", "::1"); Collections.sort(ipAddressesForAllHost); final HashSet ipAddresses = new HashSet<>(ipAddressesForAllHost); @@ -101,6 +101,10 @@ public class MockNodeRepository extends NodeRepository { nodes.add(createNode("dockerhost4", "dockerhost4.yahoo.com", ipAddresses, additionalIpAddresses, Optional.empty(), flavors.getFlavorOrThrow("large"), NodeType.host)); nodes.add(createNode("dockerhost5", "dockerhost5.yahoo.com", ipAddresses, additionalIpAddresses, Optional.empty(), flavors.getFlavorOrThrow("large"), NodeType.host)); + // Config servers + nodes.add(createNode("cfg1", "cfg1.yahoo.com", Collections.singleton("127.0.1.1"), Optional.empty(), flavors.getFlavorOrThrow("default"), NodeType.config)); + nodes.add(createNode("cfg2", "cfg2.yahoo.com", Collections.singleton("127.0.1.2"), Optional.empty(), flavors.getFlavorOrThrow("default"), NodeType.config)); + nodes = addNodes(nodes); nodes.remove(6); nodes.remove(7); 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 cb780f08cd9..1924c8e7332 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 @@ -8,10 +8,8 @@ import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.HostSpec; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.Zone; -import com.yahoo.vespa.curator.mock.MockCurator; import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.node.NodeAcl; -import com.yahoo.vespa.hosted.provision.testutils.MockNameResolver; import org.junit.Before; import org.junit.Test; @@ -34,22 +32,18 @@ import static org.junit.Assert.assertFalse; */ public class AclProvisioningTest { - private MockCurator curator; private ProvisioningTester tester; - private MockNameResolver nameResolver; private final List dockerBridgeNetwork = Collections.singletonList("172.17.0.0/16"); @Before public void before() { - this.curator = new MockCurator(); - this.nameResolver = new MockNameResolver().mockAnyLookup(); - this.tester = new ProvisioningTester(Zone.defaultZone(), createConfig(), curator, nameResolver); + this.tester = new ProvisioningTester(Zone.defaultZone(), createConfig()); } @Test public void trusted_nodes_for_allocated_node() { - List configServers = setConfigServers("cfg1:1234,cfg2:1234,cfg3:1234"); + List configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); // Populate repo tester.makeReadyNodes(10, "default"); @@ -71,7 +65,7 @@ public class AclProvisioningTest { @Test public void trusted_nodes_for_unallocated_node() { - List configServers = setConfigServers("cfg1:1234,cfg2:1234,cfg3:1234"); + List configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); // Populate repo tester.makeReadyNodes(10, "default"); @@ -91,7 +85,7 @@ public class AclProvisioningTest { @Test public void trusted_nodes_for_config_server() { - List configServers = setConfigServers("cfg1:1234,cfg2:1234,cfg3:1234"); + List configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); // Populate repo tester.makeReadyNodes(10, "default"); @@ -102,7 +96,7 @@ public class AclProvisioningTest { List tenantNodes = tester.nodeRepository().getNodes(NodeType.tenant); // Get trusted nodes for the first config server - Node node = tester.nodeRepository().getConfigNode("cfg1") + Node node = tester.nodeRepository().getNode("cfg1") .orElseThrow(() -> new RuntimeException("Failed to find cfg1")); List nodeAcls = tester.nodeRepository().getNodeAcls(node, false); @@ -112,7 +106,7 @@ public class AclProvisioningTest { @Test public void trusted_nodes_for_proxy() { - List configServers = setConfigServers("cfg1:1234,cfg2:1234,cfg3:1234"); + List configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); // Populate repo tester.makeReadyNodes(10, "default"); @@ -133,7 +127,7 @@ public class AclProvisioningTest { @Test public void trusted_nodes_for_docker_host() { - List configServers = setConfigServers("cfg1:1234,cfg2:1234,cfg3:1234"); + List configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); // Populate repo tester.makeReadyNodes(2, "default", NodeType.host); @@ -152,8 +146,8 @@ public class AclProvisioningTest { @Test public void trusted_nodes_for_docker_hosts_nodes_in_zone_application() { + List configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); ApplicationId applicationId = tester.makeApplicationId(); // use same id for both allocate calls below - List configServers = setConfigServers("cfg1:1234,cfg2:1234,cfg3:1234"); // Populate repo tester.makeReadyNodes(2, "default", NodeType.host); @@ -172,7 +166,7 @@ public class AclProvisioningTest { @Test public void trusted_nodes_for_child_nodes_of_docker_host() { - List configServers = setConfigServers("cfg1:1234,cfg2:1234,cfg3:1234"); + List configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); // Populate repo List dockerHostNodes = tester.makeReadyNodes(2, "default", NodeType.host); @@ -197,19 +191,16 @@ public class AclProvisioningTest { @Test public void resolves_hostnames_from_connection_spec() { - setConfigServers("cfg1:1234,cfg2:1234,cfg3:1234"); - nameResolver.addRecord("cfg1", "127.0.0.1") - .addRecord("cfg2", "127.0.0.2") - .addRecord("cfg3", "127.0.0.3"); + tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); List readyNodes = tester.makeReadyNodes(1, "default", NodeType.proxy); List nodeAcls = tester.nodeRepository().getNodeAcls(readyNodes.get(0), false); assertEquals(3, nodeAcls.get(0).trustedNodes().size()); Iterator trustedNodes = nodeAcls.get(0).trustedNodes().iterator(); - assertEquals(singleton("127.0.0.1"), trustedNodes.next().ipAddresses()); - assertEquals(singleton("127.0.0.2"), trustedNodes.next().ipAddresses()); - assertEquals(singleton("127.0.0.3"), trustedNodes.next().ipAddresses()); + assertEquals(singleton("127.0.1.1"), trustedNodes.next().ipAddresses()); + assertEquals(singleton("127.0.1.2"), trustedNodes.next().ipAddresses()); + assertEquals(singleton("127.0.1.3"), trustedNodes.next().ipAddresses()); } private List allocateNodes(int nodeCount) { @@ -228,11 +219,6 @@ public class AclProvisioningTest { return tester.getNodes(applicationId, Node.State.active).asList(); } - private List setConfigServers(String connectionSpec) { - curator.setZooKeeperEnsembleConnectionSpec(connectionSpec); - return tester.nodeRepository().getConfigNodes(); - } - private static void assertAcls(List> expected, NodeAcl actual) { assertAcls(expected, Collections.emptyList(), Collections.singletonList(actual)); } 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 7e982d17603..60ce3c9b567 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 @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.provision.provisioning; +import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.Capacity; @@ -30,10 +31,12 @@ import com.yahoo.vespa.hosted.provision.node.filter.NodeHostFilter; import com.yahoo.vespa.hosted.provision.persistence.NameResolver; import com.yahoo.vespa.hosted.provision.testutils.MockNameResolver; import com.yahoo.vespa.orchestrator.Orchestrator; +import com.yahoo.vespa.service.monitor.application.ConfigServerApplication; import java.time.temporal.TemporalAmount; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -41,7 +44,6 @@ import java.util.Optional; import java.util.Set; import java.util.UUID; import java.util.function.Function; -import java.util.function.UnaryOperator; import java.util.logging.Level; import java.util.stream.Collectors; @@ -276,6 +278,39 @@ public class ProvisioningTester { return nodes; } + List makeConfigServers(int n, String flavor, Version configServersVersion) { + List nodes = new ArrayList<>(n); + MockNameResolver nameResolver = (MockNameResolver)nodeRepository().nameResolver(); + + for (int i = 1; i <= n; i++) { + String hostname = "cfg" + i; + String ipv4 = "127.0.1." + i; + + nameResolver.addRecord(hostname, ipv4); + Node node = nodeRepository.createNode(hostname, + hostname, + Collections.singleton(ipv4), + Optional.empty(), + nodeFlavors.getFlavorOrThrow(flavor), + NodeType.config); + nodes.add(node); + } + + nodes = nodeRepository.addNodes(nodes); + nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName()); + nodeRepository.setReady(nodes, Agent.system, getClass().getSimpleName()); + + ConfigServerApplication application = ConfigServerApplication.CONFIG_SERVER_APPLICATION; + List hosts = prepare( + application.getApplicationId(), + application.getClusterSpecWithVersion(configServersVersion), + application.getCapacity(), + 1); + activate(application.getApplicationId(), new HashSet<>(hosts)); + return nodeRepository.getNodes(application.getApplicationId(), Node.State.active); + } + + List makeReadyNodes(int n, String flavor, NodeType type, int additionalIps) { List nodes = makeProvisionedNodes(n, flavor, type, additionalIps); nodes = nodeRepository.setDirty(nodes, Agent.system, getClass().getSimpleName()); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/RestApiTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/RestApiTest.java index 24ed065d736..6643788a291 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/RestApiTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/RestApiTest.java @@ -86,7 +86,7 @@ public class RestApiTest { 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)); - assertReboot(15, new Request("http://localhost:8080/nodes/v2/command/reboot", + assertReboot(17, new Request("http://localhost:8080/nodes/v2/command/reboot", new byte[0], Request.Method.POST)); assertResponseContains(new Request("http://localhost:8080/nodes/v2/node/host2.yahoo.com"), "\"rebootGeneration\":4"); @@ -336,7 +336,7 @@ public class RestApiTest { @Test public void acl_request_by_config_server() throws Exception { - assertFile(new Request("http://localhost:8080/nodes/v2/acl/cfg1"), "acl-config-server.json"); + assertFile(new Request("http://localhost:8080/nodes/v2/acl/cfg1.yahoo.com"), "acl-config-server.json"); } @Test 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 ca3556af805..d1dc7e22fcd 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 @@ -1,203 +1,197 @@ { "trustedNodes": [ { - "hostname": "cfg1", + "hostname": "cfg1.yahoo.com", "type": "config", - "ipAddress": "(ignore)", - "trustedBy": "cfg1" + "ipAddress": "127.0.1.1", + "trustedBy": "cfg1.yahoo.com" }, { - "hostname": "cfg2", + "hostname": "cfg2.yahoo.com", "type": "config", - "ipAddress": "(ignore)", - "trustedBy": "cfg1" - }, - { - "hostname": "cfg3", - "type": "config", - "ipAddress": "(ignore)", - "trustedBy": "cfg1" + "ipAddress": "127.0.1.2", + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "dockerhost1.yahoo.com", "type": "host", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "dockerhost1.yahoo.com", "type": "host", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "dockerhost2.yahoo.com", "type": "host", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "dockerhost2.yahoo.com", "type": "host", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "dockerhost3.yahoo.com", "type": "host", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "dockerhost3.yahoo.com", "type": "host", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "dockerhost4.yahoo.com", "type": "host", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "dockerhost4.yahoo.com", "type": "host", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "dockerhost5.yahoo.com", "type": "host", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "dockerhost5.yahoo.com", "type": "host", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host1.yahoo.com", "type": "tenant", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host1.yahoo.com", "type": "tenant", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host10.yahoo.com", "type": "tenant", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host10.yahoo.com", "type": "tenant", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host2.yahoo.com", "type": "tenant", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host2.yahoo.com", "type": "tenant", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host3.yahoo.com", "type": "tenant", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host3.yahoo.com", "type": "tenant", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host4.yahoo.com", "type": "tenant", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host4.yahoo.com", "type": "tenant", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host5.yahoo.com", "type": "tenant", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host5.yahoo.com", "type": "tenant", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host55.yahoo.com", "type": "tenant", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host55.yahoo.com", "type": "tenant", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host6.yahoo.com", "type": "tenant", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host6.yahoo.com", "type": "tenant", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host7.yahoo.com", "type": "tenant", "ipAddress": "::1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "host7.yahoo.com", "type": "tenant", "ipAddress": "127.0.0.1", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" }, { "hostname": "test-container-1", "type": "tenant", "ipAddress": "::2", - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" } ], "trustedNetworks": [], "trustedPorts": [ { "port": 4443, - "trustedBy": "cfg1" + "trustedBy": "cfg1.yahoo.com" } ] } 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 ec423ed0dc5..7b1af066065 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 @@ -1,21 +1,15 @@ { "trustedNodes": [ { - "hostname": "cfg1", + "hostname": "cfg1.yahoo.com", "type": "config", - "ipAddress": "(ignore)", + "ipAddress": "127.0.1.1", "trustedBy": "dockerhost1.yahoo.com" }, { - "hostname": "cfg2", + "hostname": "cfg2.yahoo.com", "type": "config", - "ipAddress": "(ignore)", - "trustedBy": "dockerhost1.yahoo.com" - }, - { - "hostname": "cfg3", - "type": "config", - "ipAddress": "(ignore)", + "ipAddress": "127.0.1.2", "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 2f37c1859a2..e3ea3b62bec 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 @@ -1,21 +1,15 @@ { "trustedNodes": [ { - "hostname": "cfg1", + "hostname": "cfg1.yahoo.com", "type": "config", - "ipAddress": "(ignore)", + "ipAddress": "127.0.1.1", "trustedBy": "foo.yahoo.com" }, { - "hostname": "cfg2", + "hostname": "cfg2.yahoo.com", "type": "config", - "ipAddress": "(ignore)", - "trustedBy": "foo.yahoo.com" - }, - { - "hostname": "cfg3", - "type": "config", - "ipAddress": "(ignore)", + "ipAddress": "127.0.1.2", "trustedBy": "foo.yahoo.com" }, { diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg1.json new file mode 100644 index 00000000000..796b03e7e68 --- /dev/null +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg1.json @@ -0,0 +1,36 @@ +{ + "url": "http://localhost:8080/nodes/v2/node/cfg1.yahoo.com", + "id": "cfg1.yahoo.com", + "state": "ready", + "type": "config", + "hostname": "cfg1.yahoo.com", + "openStackId": "cfg1", + "flavor": "default", + "canonicalFlavor": "default", + "minDiskAvailableGb": 400.0, + "minMainMemoryAvailableGb": 16.0, + "description": "Flavor-name-is-default", + "minCpuCores": 2.0, + "fastDisk": true, + "environment": "BARE_METAL", + "rebootGeneration": 1, + "currentRebootGeneration": 0, + "failCount": 0, + "hardwareFailure": false, + "wantToRetire": false, + "wantToDeprovision": false, + "history": [ + { + "event": "provisioned", + "at": 123, + "agent": "system" + }, + { + "event": "readied", + "at": 123, + "agent": "system" + } + ], + "ipAddresses": ["127.0.1.1"], + "additionalIpAddresses": [] +} diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg2.json new file mode 100644 index 00000000000..361459390f9 --- /dev/null +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg2.json @@ -0,0 +1,36 @@ +{ + "url": "http://localhost:8080/nodes/v2/node/cfg2.yahoo.com", + "id": "cfg2.yahoo.com", + "state": "ready", + "type": "config", + "hostname": "cfg2.yahoo.com", + "openStackId": "cfg2", + "flavor": "default", + "canonicalFlavor": "default", + "minDiskAvailableGb": 400.0, + "minMainMemoryAvailableGb": 16.0, + "description": "Flavor-name-is-default", + "minCpuCores": 2.0, + "fastDisk": true, + "environment": "BARE_METAL", + "rebootGeneration": 1, + "currentRebootGeneration": 0, + "failCount": 0, + "hardwareFailure": false, + "wantToRetire": false, + "wantToDeprovision": false, + "history": [ + { + "event": "provisioned", + "at": 123, + "agent": "system" + }, + { + "event": "readied", + "at": 123, + "agent": "system" + } + ], + "ipAddresses": ["127.0.1.2"], + "additionalIpAddresses": [] +} diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/nodes-recursive.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/nodes-recursive.json index 475b914989b..57aee72e9f8 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/nodes-recursive.json +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/nodes-recursive.json @@ -1,7 +1,9 @@ { "nodes": [ @include(node7.json), + @include(cfg1.json), @include(node3.json), + @include(cfg2.json), @include(node10.json), @include(node1.json), @include(docker-node4.json), diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/nodes.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/nodes.json index 3bfaa95d5ee..1c069951750 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/nodes.json +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/nodes.json @@ -3,9 +3,15 @@ { "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/cfg2.yahoo.com" + }, { "url": "http://localhost:8080/nodes/v2/node/host10.yahoo.com" }, diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/states-recursive.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/states-recursive.json index 628ab53e9f0..e60ebe37246 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/states-recursive.json +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/states-recursive.json @@ -9,7 +9,9 @@ "ready": { "url": "http://localhost:8080/nodes/v2/state/ready", "nodes": [ - @include(node3.json) + @include(node3.json), + @include(cfg1.json), + @include(cfg2.json) ] }, "reserved": { -- cgit v1.2.3