diff options
author | freva <valerijf@yahoo-inc.com> | 2016-12-13 14:28:21 +0100 |
---|---|---|
committer | freva <valerijf@yahoo-inc.com> | 2016-12-13 14:28:21 +0100 |
commit | 50b365974b7fb5e413041a67e5e94a81cc48d6f0 (patch) | |
tree | 60e7de966b9c14e825e5b6235ef27d75ed02af65 /node-admin | |
parent | 6566c31bdef1136df5daf558df3cef3a59a5a855 (diff) |
Simplified some Optional operations
Diffstat (limited to 'node-admin')
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]", |