Repository: hadoop Updated Branches: refs/heads/trunk b12e69475 -> fb1e8bb0c
HDDS-528. add cli command to checkChill mode status and exit chill mode. Contributed by chencan. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/fb1e8bb0 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/fb1e8bb0 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/fb1e8bb0 Branch: refs/heads/trunk Commit: fb1e8bb0ccdea7d296cab2aa83a377905266ff5e Parents: b12e694 Author: Márton Elek <e...@apache.org> Authored: Thu Nov 15 13:51:41 2018 +0100 Committer: Márton Elek <e...@apache.org> Committed: Thu Nov 15 13:59:56 2018 +0100 ---------------------------------------------------------------------- .../scm/client/ContainerOperationClient.java | 20 +++++++ .../hadoop/hdds/scm/client/ScmClient.java | 16 +++++ .../hdds/scm/cli/ChillModeCheckSubcommand.java | 61 ++++++++++++++++++++ .../hadoop/hdds/scm/cli/ChillModeCommands.java | 60 +++++++++++++++++++ .../hdds/scm/cli/ChillModeExitSubcommand.java | 57 ++++++++++++++++++ .../org/apache/hadoop/hdds/scm/cli/SCMCLI.java | 1 + 6 files changed, 215 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/fb1e8bb0/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/client/ContainerOperationClient.java ---------------------------------------------------------------------- diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/client/ContainerOperationClient.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/client/ContainerOperationClient.java index b9f38fe..2bba709 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/client/ContainerOperationClient.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/client/ContainerOperationClient.java @@ -440,4 +440,24 @@ public class ContainerOperationClient implements ScmClient { } return size; } + + /** + * Check if SCM is in chill mode. + * + * @return Returns true if SCM is in chill mode else returns false. + * @throws IOException + */ + public boolean inChillMode() throws IOException { + return storageContainerLocationClient.inChillMode(); + } + + /** + * Force SCM out of chill mode. + * + * @return returns true if operation is successful. + * @throws IOException + */ + public boolean forceExitChillMode() throws IOException { + return storageContainerLocationClient.forceExitChillMode(); + } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/fb1e8bb0/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java ---------------------------------------------------------------------- diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java index b3c0c94..0af3b16 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java @@ -171,4 +171,20 @@ public interface ScmClient extends Closeable { Pipeline createReplicationPipeline(HddsProtos.ReplicationType type, HddsProtos.ReplicationFactor factor, HddsProtos.NodePool nodePool) throws IOException; + + /** + * Check if SCM is in chill mode. + * + * @return Returns true if SCM is in chill mode else returns false. + * @throws IOException + */ + boolean inChillMode() throws IOException; + + /** + * Force SCM out of chill mode. + * + * @return returns true if operation is successful. + * @throws IOException + */ + boolean forceExitChillMode() throws IOException; } http://git-wip-us.apache.org/repos/asf/hadoop/blob/fb1e8bb0/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ChillModeCheckSubcommand.java ---------------------------------------------------------------------- diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ChillModeCheckSubcommand.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ChillModeCheckSubcommand.java new file mode 100644 index 0000000..41f413b --- /dev/null +++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ChillModeCheckSubcommand.java @@ -0,0 +1,61 @@ +/** + * 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 + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * 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.hdds.scm.cli; + +import java.util.concurrent.Callable; + +import org.apache.hadoop.hdds.cli.HddsVersionProvider; +import org.apache.hadoop.hdds.scm.client.ScmClient; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import picocli.CommandLine.Command; +import picocli.CommandLine.ParentCommand; + +/** + * This is the handler that process chill mode check command. + */ +@Command( + name = "status", + description = "Check if SCM is in chill mode", + mixinStandardHelpOptions = true, + versionProvider = HddsVersionProvider.class) +public class ChillModeCheckSubcommand implements Callable<Void> { + + private static final Logger LOG = + LoggerFactory.getLogger(ChillModeCheckSubcommand.class); + + @ParentCommand + private ChillModeCommands parent; + + @Override + public Void call() throws Exception { + try (ScmClient scmClient = parent.getParent().createScmClient()) { + + boolean execReturn = scmClient.inChillMode(); + + // Output data list + if(execReturn){ + LOG.info("SCM is in chill mode."); + } else { + LOG.info("SCM is out of chill mode."); + } + return null; + } + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/fb1e8bb0/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ChillModeCommands.java ---------------------------------------------------------------------- diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ChillModeCommands.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ChillModeCommands.java new file mode 100644 index 0000000..b06bab9 --- /dev/null +++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ChillModeCommands.java @@ -0,0 +1,60 @@ +/** + * 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 + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * 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.hdds.scm.cli; + +import java.util.concurrent.Callable; + +import org.apache.hadoop.hdds.cli.HddsVersionProvider; +import org.apache.hadoop.hdds.cli.MissingSubcommandException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import picocli.CommandLine.Command; +import picocli.CommandLine.ParentCommand; + +/** + * Subcommand to group chill mode related operations. + */ +@Command( + name = "chillmode", + description = "Chill mode specific operations", + mixinStandardHelpOptions = true, + versionProvider = HddsVersionProvider.class, + subcommands = { + ChillModeCheckSubcommand.class, + ChillModeExitSubcommand.class, + }) +public class ChillModeCommands implements Callable<Void> { + + private static final Logger LOG = + LoggerFactory.getLogger(ChillModeCommands.class); + + @ParentCommand + private SCMCLI parent; + + public SCMCLI getParent() { + return parent; + } + + @Override + public Void call() throws Exception { + throw new MissingSubcommandException( + this.parent.getCmd().getSubcommands().get("chillmode"). + getUsageMessage()); + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/fb1e8bb0/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ChillModeExitSubcommand.java ---------------------------------------------------------------------- diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ChillModeExitSubcommand.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ChillModeExitSubcommand.java new file mode 100644 index 0000000..62df125 --- /dev/null +++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ChillModeExitSubcommand.java @@ -0,0 +1,57 @@ +/** + * 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 + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * 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.hdds.scm.cli; + +import java.util.concurrent.Callable; + +import org.apache.hadoop.hdds.cli.HddsVersionProvider; +import org.apache.hadoop.hdds.scm.client.ScmClient; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import picocli.CommandLine.Command; +import picocli.CommandLine.ParentCommand; + +/** + * This is the handler that process chill mode exit command. + */ +@Command( + name = "exit", + description = "Force SCM out of chill mode", + mixinStandardHelpOptions = true, + versionProvider = HddsVersionProvider.class) +public class ChillModeExitSubcommand implements Callable<Void> { + + private static final Logger LOG = + LoggerFactory.getLogger(ChillModeExitSubcommand.class); + + @ParentCommand + private ChillModeCommands parent; + + @Override + public Void call() throws Exception { + try (ScmClient scmClient = parent.getParent().createScmClient()) { + + boolean execReturn = scmClient.forceExitChillMode(); + if(execReturn){ + LOG.info("SCM exit chill mode successfully."); + } + return null; + } + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/fb1e8bb0/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/SCMCLI.java ---------------------------------------------------------------------- diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/SCMCLI.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/SCMCLI.java index 5ce0658..31a36fb 100644 --- a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/SCMCLI.java +++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/SCMCLI.java @@ -73,6 +73,7 @@ import picocli.CommandLine.Option; + "operations.", versionProvider = HddsVersionProvider.class, subcommands = { + ChillModeCommands.class, ListSubcommand.class, InfoSubcommand.class, DeleteSubcommand.class, --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org