summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorfreva <valerijf@yahoo-inc.com>2016-12-13 14:28:21 +0100
committerfreva <valerijf@yahoo-inc.com>2016-12-13 14:28:21 +0100
commit50b365974b7fb5e413041a67e5e94a81cc48d6f0 (patch)
tree60e7de966b9c14e825e5b6235ef27d75ed02af65 /node-admin
parent6566c31bdef1136df5daf558df3cef3a59a5a855 (diff)
Simplified some Optional operations
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java17
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java38
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java20
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java6
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java14
5 files changed, 39 insertions, 56 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java
index f7a5351c77c..542598496ca 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java
@@ -209,7 +209,7 @@ public class DockerOperationsImpl implements DockerOperations {
command.withVolume("/etc/hosts", "/etc/hosts");
for (String pathInNode : DIRECTORIES_TO_MOUNT.keySet()) {
String pathInHost = maintainer.pathInHostFromPathInNode(nodeSpec.containerName, pathInNode).toString();
- command = command.withVolume(pathInHost, pathInNode);
+ command.withVolume(pathInHost, pathInNode);
}
// TODO: Enforce disk constraints
@@ -246,20 +246,17 @@ public class DockerOperationsImpl implements DockerOperations {
private void setupContainerNetworkingWithScript(ContainerName containerName) {
PrefixLogger logger = PrefixLogger.getNodeAgentLogger(DockerOperationsImpl.class, containerName);
- Optional<Docker.ContainerInfo> containerInfo = docker.inspectContainer(containerName);
- if (!containerInfo.isPresent()) {
- throw new RuntimeException("Container " + containerName + " does not exist");
- }
- Optional<Integer> containerPid = containerInfo.get().getPid();
- if (!containerPid.isPresent()) {
- throw new RuntimeException("Container " + containerName + " isn't running (pid not found)");
- }
+ Docker.ContainerInfo containerInfo = docker.inspectContainer(containerName)
+ .orElseThrow(() -> new RuntimeException("Container " + containerName + " does not exist"));
+
+ Integer containerPid = containerInfo.getPid()
+ .orElseThrow(() -> new RuntimeException("Container " + containerName + " isn't running (pid not found)"));
final List<String> command = new LinkedList<>();
command.add("sudo");
command.add(getDefaults().underVespaHome("libexec/vespa/node-admin/configure-container-networking.py"));
command.add("--fix-docker-gateway");
- command.add(containerPid.get().toString());
+ command.add(containerPid.toString());
for (int retry = 0; retry < 30; ++retry) {
try {
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
index 31cb806ccc5..1a3cbee8550 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
@@ -483,18 +483,17 @@ public class NodeAgentImpl implements NodeAgent {
.add("zone", environment.getZone())
.add("parentHostname", environment.getParentHostHostname());
- if (nodeSpec.owner.isPresent()) {
- dimensionsBuilder
- .add("tenantName", nodeSpec.owner.get().tenant)
- .add("app", nodeSpec.owner.get().application + "." + nodeSpec.owner.get().instance);
- }
- if (nodeSpec.membership.isPresent()) {
- dimensionsBuilder
- .add("clustertype", nodeSpec.membership.get().clusterType)
- .add("clusterid", nodeSpec.membership.get().clusterId);
- }
+ nodeSpec.owner.ifPresent(owner ->
+ dimensionsBuilder
+ .add("tenantName", owner.tenant)
+ .add("app", owner.application + "." + owner.instance));
+
+ nodeSpec.membership.ifPresent(membership ->
+ dimensionsBuilder
+ .add("clustertype", membership.clusterType)
+ .add("clusterid", membership.clusterId));
- if (vespaVersion.isPresent()) dimensionsBuilder.add("vespaVersion", vespaVersion.get());
+ vespaVersion.ifPresent(version -> dimensionsBuilder.add("vespaVersion", version));
Dimensions dimensions = dimensionsBuilder.build();
long currentCpuContainerTotalTime = ((Number) ((Map) stats.getCpuStats().get("cpu_usage")).get("total_usage")).longValue();
@@ -559,16 +558,17 @@ public class NodeAgentImpl implements NodeAgent {
.withTag("zone", environment.getZone())
.withTag("parentHostname", environment.getParentHostHostname());
- if (nodeSpec.owner.isPresent()) scheduleMaker
- .withTag("tenantName", nodeSpec.owner.get().tenant)
- .withTag("app", nodeSpec.owner.get().application + "." + nodeSpec.owner.get().instance);
+ nodeSpec.owner.ifPresent(owner ->
+ scheduleMaker
+ .withTag("tenantName", owner.tenant)
+ .withTag("app", owner.application + "." + owner.instance));
- if (nodeSpec.membership.isPresent()) scheduleMaker
- .withTag("clustertype", nodeSpec.membership.get().clusterType)
- .withTag("clusterid", nodeSpec.membership.get().clusterId);
+ nodeSpec.membership.ifPresent(membership ->
+ scheduleMaker
+ .withTag("clustertype", membership.clusterType)
+ .withTag("clusterid", membership.clusterId));
- if (nodeSpec.vespaVersion.isPresent()) scheduleMaker
- .withTag("vespaVersion", nodeSpec.vespaVersion.get());
+ nodeSpec.vespaVersion.ifPresent(version -> scheduleMaker.withTag("vespaVersion", version));
try {
scheduleMaker.writeTo(yamasAgentFolder);
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java
index b8a4e786e87..d137c86e9a3 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java
@@ -84,18 +84,14 @@ public class RestApiHandler extends LoggingRequestHandler{
String path = request.getUri().getPath();
// Check paths to disallow illegal state changes
if (path.endsWith("/resume")) {
- final Optional<String> errorMessage = refresher.setResumeStateAndCheckIfResumed(NodeAdminStateUpdater.State.RESUMED);
- if (errorMessage.isPresent()) {
- return new SimpleResponse(409, errorMessage.get());
- }
- return new SimpleResponse(200, "ok");
- }
- if (path.endsWith("/suspend")) {
- Optional<String> errorMessage = refresher.setResumeStateAndCheckIfResumed(NodeAdminStateUpdater.State.SUSPENDED);
- if (errorMessage.isPresent()) {
- return new SimpleResponse(409, errorMessage.get());
- }
- return new SimpleResponse(200, "ok");
+ return refresher.setResumeStateAndCheckIfResumed(NodeAdminStateUpdater.State.RESUMED)
+ .map(error -> new SimpleResponse(409, error))
+ .orElse(new SimpleResponse(200, "ok"));
+
+ } else if (path.endsWith("/suspend")) {
+ return refresher.setResumeStateAndCheckIfResumed(NodeAdminStateUpdater.State.SUSPENDED)
+ .map(error -> new SimpleResponse(409, error))
+ .orElse(new SimpleResponse(200, "ok"));
}
return new SimpleResponse(400, "unknown path" + path);
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java
index 05aad9c81f0..bb9285084b6 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java
@@ -9,7 +9,6 @@ import com.yahoo.vespa.hosted.provision.Node;
import org.junit.Test;
import java.io.IOException;
-import java.util.Optional;
/**
* @author freva
@@ -29,9 +28,8 @@ public class MultiDockerTest {
.build());
// Wait until it is marked ready
- Optional<ContainerNodeSpec> tempContainerNodeSpec;
- while ((tempContainerNodeSpec = dockerTester.getContainerNodeSpec(containerNodeSpec2.hostname)).isPresent()
- && tempContainerNodeSpec.get().nodeState != Node.State.ready) {
+ while (dockerTester.getContainerNodeSpec(containerNodeSpec2.hostname)
+ .filter(nodeSpec -> nodeSpec.nodeState != Node.State.ready).isPresent()) {
Thread.sleep(10);
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java
index 999f093311e..882a6378d18 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java
@@ -9,10 +9,6 @@ import com.yahoo.vespa.hosted.provision.Node;
import org.junit.Test;
import java.io.IOException;
-import java.util.Optional;
-
-import static org.hamcrest.core.Is.is;
-import static org.junit.Assert.assertThat;
/**
* Test NodeState transitions in NodeRepository
@@ -20,7 +16,7 @@ import static org.junit.Assert.assertThat;
* @author freva
*/
public class NodeStateTest {
- private static ContainerNodeSpec initialContainerNodeSpec = new ContainerNodeSpec.Builder()
+ private final ContainerNodeSpec initialContainerNodeSpec = new ContainerNodeSpec.Builder()
.hostname("host1")
.wantedDockerImage(new DockerImage("dockerImage"))
.containerName(new ContainerName("container"))
@@ -56,15 +52,11 @@ public class NodeStateTest {
.build());
// Wait until it is marked ready
- Optional<ContainerNodeSpec> containerNodeSpec;
- while ((containerNodeSpec = dockerTester.getContainerNodeSpec(initialContainerNodeSpec.hostname)).isPresent()
- && containerNodeSpec.get().nodeState != Node.State.ready) {
+ while (dockerTester.getContainerNodeSpec(initialContainerNodeSpec.hostname)
+ .filter(nodeSpec -> nodeSpec.nodeState != Node.State.ready).isPresent()) {
Thread.sleep(10);
}
- assertThat(dockerTester.getContainerNodeSpec(initialContainerNodeSpec.hostname)
- .get().nodeState, is(Node.State.ready));
-
dockerTester.getCallOrderVerifier()
.assertInOrder("executeInContainer with ContainerName: ContainerName { name=container }, args: [/usr/bin/env, test, -x, " + DockerOperationsImpl.NODE_PROGRAM + "]",
"executeInContainer with ContainerName: ContainerName { name=container }, args: [" + DockerOperationsImpl.NODE_PROGRAM + ", stop]",