diff options
author | Jon Bratseth <jonbratseth@yahoo.com> | 2016-09-04 16:00:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-04 16:00:49 +0200 |
commit | 9c77a8cdfa0ae4874e254c85feec7965524b51d3 (patch) | |
tree | e040b05fa79e086b8b1a1890d4d912faccdba00c /node-repository | |
parent | 3b6478d3a6db1dd5c5cdfc50ce5aadd53f72cf92 (diff) |
Revert "Revert "Revert "Revert "Revert "Bratseth/lockdown zk"""""
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java | 33 | ||||
-rw-r--r-- | node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java | 66 |
2 files changed, 5 insertions, 94 deletions
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 327246e3099..7751abb1d4b 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 @@ -14,7 +14,6 @@ import com.yahoo.vespa.hosted.provision.node.filter.NodeFilter; import com.yahoo.vespa.hosted.provision.node.filter.NodeListFilter; import com.yahoo.vespa.hosted.provision.node.filter.StateFilter; import com.yahoo.vespa.hosted.provision.persistence.CuratorDatabaseClient; -import com.yahoo.vespa.zookeeper.ZooKeeperServer; import java.time.Clock; import java.util.ArrayList; @@ -56,7 +55,6 @@ import java.util.stream.Collectors; public class NodeRepository extends AbstractComponent { private final CuratorDatabaseClient zkClient; - private final Curator curator; /** * Creates a node repository form a zookeeper provider. @@ -73,7 +71,6 @@ public class NodeRepository extends AbstractComponent { */ public NodeRepository(NodeFlavors flavors, Curator curator, Clock clock) { this.zkClient = new CuratorDatabaseClient(flavors, curator, clock); - this.curator = curator; // read and write all nodes to make sure they are stored in the latest version of the serialized format for (Node.State state : Node.State.values()) @@ -129,9 +126,7 @@ public class NodeRepository extends AbstractComponent { throw new IllegalArgumentException("Cannot add " + node.hostname() + ": A node with this name already exists"); } try (Mutex lock = lockUnallocated()) { - List<Node> addedNodes = zkClient.addNodes(nodes); - updateAllowedHosts(); - return addedNodes; + return zkClient.addNodes(nodes); } } @@ -247,16 +242,14 @@ public class NodeRepository extends AbstractComponent { /** * Removes a node. A node must be in the failed or parked state before it can be removed. * - * @return true if the node was removed, false if it was not found in one of these states + * @return true if the node was removed, false if it was not found */ public boolean remove(String hostname) { Optional<Node> nodeToRemove = getNode(hostname, Node.State.failed, Node.State.parked); - if ( ! nodeToRemove.isPresent()) return false; - + if ( ! nodeToRemove.isPresent()) + return false; try (Mutex lock = lock(nodeToRemove.get())) { - boolean removed = zkClient.removeNode(nodeToRemove.get().state(), hostname); - updateAllowedHosts(); - return removed; + return zkClient.removeNode(nodeToRemove.get().state(), hostname); } } @@ -347,21 +340,5 @@ public class NodeRepository extends AbstractComponent { private Mutex lock(Node node) { return node.allocation().isPresent() ? lock(node.allocation().get().owner()) : lockUnallocated(); } - - private void updateAllowedHosts() { - StringBuilder s = new StringBuilder(); - - // Add tenant hosts - for (Node node : getNodes(Node.Type.tenant)) - s.append(node.hostname()).append(","); - - // Add the zooKeeper servers - for (String hostPort : curator.connectionSpec().split(",")) - s.append(hostPort.split(":")[0]).append(","); - - if (s.length() > 0) - s.setLength(s.length()-1); // remove last comma - System.setProperty(ZooKeeperServer.ZOOKEEPER_VESPA_CLIENTS_PROPERTY, s.toString()); - } } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java deleted file mode 100644 index dc4744c9eaf..00000000000 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.yahoo.vespa.hosted.provision; - -import com.yahoo.test.ManualClock; -import com.yahoo.vespa.config.nodes.NodeRepositoryConfig; -import com.yahoo.vespa.curator.mock.MockCurator; -import com.yahoo.vespa.hosted.provision.node.Configuration; -import com.yahoo.vespa.hosted.provision.node.NodeFlavors; -import com.yahoo.vespa.hosted.provision.testutils.FlavorConfigBuilder; -import com.yahoo.vespa.zookeeper.ZooKeeperServer; -import org.junit.Test; -import java.time.Clock; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Optional; -import java.util.Set; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -/** - * tests basic operation of the node repository - * - * @author bratseth - */ -public class NodeRepositoryTest { - - @Test - public void nodeRepositoryTest() { - NodeFlavors nodeFlavors = new NodeFlavors(createConfig()); - Clock clock = new ManualClock(); - MockCurator curator = new MockCurator(); - curator.setConnectionSpec("server1:1234,server2:5678"); - NodeRepository nodeRepository = new NodeRepository(nodeFlavors, curator, clock); - - assertEquals(0, nodeRepository.getNodes(Node.Type.tenant).size()); - - List<Node> nodes = new ArrayList<>(); - nodes.add(nodeRepository.createNode("id1", "host1", Optional.empty(), new Configuration(nodeFlavors.getFlavorOrThrow("default")), Node.Type.tenant)); - nodes.add(nodeRepository.createNode("id2", "host2", Optional.empty(), new Configuration(nodeFlavors.getFlavorOrThrow("default")), Node.Type.tenant)); - nodes.add(nodeRepository.createNode("id3", "host3", Optional.empty(), new Configuration(nodeFlavors.getFlavorOrThrow("default")), Node.Type.tenant)); - nodeRepository.addNodes(nodes); - - assertEquals(3, nodeRepository.getNodes(Node.Type.tenant).size()); - assertEquals(asSet("host1,host2,host3,server1,server2"), asSet(System.getProperty(ZooKeeperServer.ZOOKEEPER_VESPA_CLIENTS_PROPERTY))); - - nodeRepository.move("host2", Node.State.parked); - assertTrue(nodeRepository.remove("host2")); - - assertEquals(2, nodeRepository.getNodes(Node.Type.tenant).size()); - assertEquals(asSet("host1,host3,server1,server2"), asSet(System.getProperty(ZooKeeperServer.ZOOKEEPER_VESPA_CLIENTS_PROPERTY))); - } - - private Set<String> asSet(String s) { - return new HashSet<>(Arrays.asList(s.split(","))); - } - - private NodeRepositoryConfig createConfig() { - FlavorConfigBuilder b = new FlavorConfigBuilder(); - b.addFlavor("default", 2., 4., 100, "BARE_METAL").cost(3); - b.addFlavor("small", 1., 2., 50, "BARE_METAL").cost(2); - return b.build(); - } - -} |