aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorHarald Musum <musum@yahoo-inc.com>2016-11-30 08:40:00 +0100
committerHarald Musum <musum@yahoo-inc.com>2016-11-30 08:40:00 +0100
commit87a8ae64326730bd562b76278447092b66c9cbcf (patch)
tree1e66bc72cecd79d907ec0297cc74b4e186279728 /node-admin
parent2df45242b26edb39adcb9228a28384a16ba19187 (diff)
Handle non-existing node better
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImpl.java17
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImplTest.java12
2 files changed, 21 insertions, 8 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImpl.java
index 5e4c593b868..43219ccf2e2 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImpl.java
@@ -65,15 +65,18 @@ public class NodeRepositoryImpl implements NodeRepository {
}
@Override
- public Optional<ContainerNodeSpec> getContainerNodeSpec(String hostName) throws IOException {
- final GetNodesResponse.Node nodeResponse = requestExecutor.get("/nodes/v2/node/" + hostName,
- port,
- GetNodesResponse.Node.class);
-
- if (nodeResponse == null) {
+ public Optional<ContainerNodeSpec> getContainerNodeSpec(String hostName) {
+ try {
+ GetNodesResponse.Node nodeResponse = requestExecutor.get("/nodes/v2/node/" + hostName,
+ port,
+ GetNodesResponse.Node.class);
+ if (nodeResponse == null) {
+ return Optional.empty();
+ }
+ return Optional.of(createContainerNodeSpec(nodeResponse));
+ } catch (ConfigServerHttpRequestExecutor.NotFoundException e) {
return Optional.empty();
}
- return Optional.of(createContainerNodeSpec(nodeResponse));
}
private static ContainerNodeSpec createContainerNodeSpec(GetNodesResponse.Node node)
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImplTest.java
index 9c18edfcba5..3fa8d70bfdb 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImplTest.java
@@ -24,6 +24,7 @@ import java.util.Optional;
import java.util.Set;
import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
@@ -100,7 +101,7 @@ public class NodeRepositoryImplTest {
}
@Test
- public void testGetContainers() throws InterruptedException, IOException {
+ public void testGetContainer() throws InterruptedException, IOException {
waitForJdiscContainerToServe();
NodeRepository nodeRepositoryApi = new NodeRepositoryImpl(configServerHosts, port, "dockerhost4");
String hostname = "host4.yahoo.com";
@@ -111,6 +112,15 @@ public class NodeRepositoryImplTest {
}
@Test
+ public void testGetContainerForNonExistingNode() throws InterruptedException, IOException {
+ waitForJdiscContainerToServe();
+ NodeRepository nodeRepositoryApi = new NodeRepositoryImpl(configServerHosts, port, "dockerhost4");
+ String hostname = "host-that-does-not-exist";
+ Optional<ContainerNodeSpec> nodeSpec = nodeRepositoryApi.getContainerNodeSpec(hostname);
+ assertFalse(nodeSpec.isPresent());
+ }
+
+ @Test
public void testUpdateNodeAttributes() throws InterruptedException, IOException {
waitForJdiscContainerToServe();
NodeRepository nodeRepositoryApi = new NodeRepositoryImpl(configServerHosts, port, "dockerhost4");