From 2e7c2a13a853b8195bc4f51f6c3c1f61656c2b33 Mon Sep 17 00:00:00 2001 From: Varun Vasudev Date: Tue, 2 Aug 2016 16:55:10 +0530 Subject: [PATCH] YARN-5443. Add support for docker inspect command. Contributed by Shane Kumpf. --- .../runtime/docker/DockerInspectCommand.java | 41 +++++++++++++++ .../docker/TestDockerInspectCommand.java | 50 +++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerInspectCommand.java create mode 100644 hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/TestDockerInspectCommand.java diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerInspectCommand.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerInspectCommand.java new file mode 100644 index 0000000000..94b87b79f8 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerInspectCommand.java @@ -0,0 +1,41 @@ +/* + * * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * / + */ + +package org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.runtime.docker; + +/** + * Encapsulates the docker inspect command and its command + * line arguments. + */ +public class DockerInspectCommand extends DockerCommand { + private static final String INSPECT_COMMAND = "inspect"; + private String containerName; + + public DockerInspectCommand(String containerName) { + super(INSPECT_COMMAND); + this.containerName = containerName; + } + + public DockerInspectCommand getContainerStatus() { + super.addCommandArguments("--format='{{.State.Status}}'"); + super.addCommandArguments(containerName); + return this; + } +} \ No newline at end of file diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/TestDockerInspectCommand.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/TestDockerInspectCommand.java new file mode 100644 index 0000000000..3321364bed --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/TestDockerInspectCommand.java @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.runtime.docker; + +import static org.junit.Assert.assertEquals; +import org.junit.Before; +import org.junit.Test; + +/** + * Tests the docker inspect command and its command + * line arguments. + */ +public class TestDockerInspectCommand { + + private DockerInspectCommand dockerInspectCommand; + + private static final String CONTAINER_NAME = "foo"; + + @Before + public void setup() { + dockerInspectCommand = new DockerInspectCommand(CONTAINER_NAME); + } + + @Test + public void testGetCommandOption() { + assertEquals("inspect", dockerInspectCommand.getCommandOption()); + } + + @Test + public void testGetContainerStatus() throws Exception { + dockerInspectCommand.getContainerStatus(); + assertEquals("inspect --format='{{.State.Status}}' foo", + dockerInspectCommand.getCommandWithArguments()); + } +} \ No newline at end of file