summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorJon Bratseth <jonbratseth@yahoo.com>2016-09-04 16:00:49 +0200
committerGitHub <noreply@github.com>2016-09-04 16:00:49 +0200
commit9c77a8cdfa0ae4874e254c85feec7965524b51d3 (patch)
treee040b05fa79e086b8b1a1890d4d912faccdba00c /node-repository
parent3b6478d3a6db1dd5c5cdfc50ce5aadd53f72cf92 (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.java33
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java66
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();
- }
-
-}