This is an automated email from the ASF dual-hosted git repository.
mpochatkin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new c8bd7550b6 IGNITE-22463 Improve CLI error message when executing
commands on uninitialized cluster (#3921)
c8bd7550b6 is described below
commit c8bd7550b6bb3b989a7d0a79dc576c16f98ae37f
Author: Maksim Myskov <[email protected]>
AuthorDate: Wed Jun 26 15:43:54 2024 +0300
IGNITE-22463 Improve CLI error message when executing commands on
uninitialized cluster (#3921)
---
...liCommandTestNotInitializedIntegrationBase.java | 7 +
.../cli/commands/ItNonInitializedClusterTest.java | 161 +++++++++++++++++++++
...t.java => ItReplNonInitializedClusterTest.java} | 22 ++-
.../cluster/config/ClusterConfigShowCommand.java | 4 +-
.../config/ClusterConfigShowReplCommand.java | 2 +-
.../cluster/config/ClusterConfigUpdateCommand.java | 4 +-
.../config/ClusterConfigUpdateReplCommand.java | 2 +-
.../cluster/topology/LogicalTopologyCommand.java | 4 +-
.../topology/LogicalTopologyReplCommand.java | 2 +-
.../cluster/unit/ClusterUnitDeployCommand.java | 2 +-
.../cluster/unit/ClusterUnitDeployReplCommand.java | 2 +-
.../cluster/unit/ClusterUnitListCommand.java | 2 +-
.../cluster/unit/ClusterUnitListReplCommand.java | 2 +-
.../cluster/unit/ClusterUnitUndeployCommand.java | 2 +-
.../unit/ClusterUnitUndeployReplCommand.java | 2 +-
.../node/metric/NodeMetricSetListCommand.java | 2 +
.../node/metric/NodeMetricSetListReplCommand.java | 2 +
.../metric/NodeMetricSourceDisableCommand.java | 2 +-
.../metric/NodeMetricSourceDisableReplCommand.java | 2 +-
.../node/metric/NodeMetricSourceEnableCommand.java | 2 +-
.../metric/NodeMetricSourceEnableReplCommand.java | 2 +-
.../node/metric/NodeMetricSourceListCommand.java | 2 +-
.../metric/NodeMetricSourceListReplCommand.java | 2 +-
.../commands/node/unit/NodeUnitListCommand.java | 2 +-
.../node/unit/NodeUnitListReplCommand.java | 2 +-
.../partitions/reset/ResetPartitionsCommand.java | 2 +
.../reset/ResetPartitionsReplCommand.java | 2 +
.../restart/RestartPartitionsCommand.java | 2 +
.../restart/RestartPartitionsReplCommand.java | 2 +
.../partitions/states/PartitionStatesCommand.java | 2 +
.../states/PartitionStatesReplCommand.java | 2 +
.../ClusterNotInitializedExceptionHandler.java | 18 +++
32 files changed, 240 insertions(+), 30 deletions(-)
diff --git
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/CliCommandTestNotInitializedIntegrationBase.java
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/CliCommandTestNotInitializedIntegrationBase.java
index 6057e7d0ed..86bcbba6b5 100644
---
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/CliCommandTestNotInitializedIntegrationBase.java
+++
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/CliCommandTestNotInitializedIntegrationBase.java
@@ -27,6 +27,13 @@ import org.junit.jupiter.api.TestInfo;
* won't be initialized. If you want to use initialized cluster use {@link
CliIntegrationTest} directly.
*/
public class CliCommandTestNotInitializedIntegrationBase extends
CliIntegrationTest {
+
+ protected static String CLUSTER_NOT_INITIALIZED_ERROR_MESSAGE = "Probably,
you have not initialized the cluster, "
+ + "try to run ignite cluster init command";
+
+ protected static String CLUSTER_NOT_INITIALIZED_REPL_ERROR_MESSAGE =
"Probably, you have not initialized the cluster, "
+ + "try to run cluster init command";
+
@BeforeAll
@Override
protected void beforeAll(TestInfo testInfo) {
diff --git
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/ItNonInitializedClusterTest.java
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/ItNonInitializedClusterTest.java
new file mode 100644
index 0000000000..e3aab836c2
--- /dev/null
+++
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/ItNonInitializedClusterTest.java
@@ -0,0 +1,161 @@
+/*
+ * 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.ignite.internal.cli.commands;
+
+import static
org.apache.ignite.internal.cli.commands.Options.Constants.CLUSTER_URL_OPTION;
+import static
org.apache.ignite.internal.cli.commands.Options.Constants.RECOVERY_PARTITION_GLOBAL_OPTION;
+import static
org.apache.ignite.internal.cli.commands.Options.Constants.RECOVERY_TABLE_NAME_OPTION;
+import static
org.apache.ignite.internal.cli.commands.Options.Constants.RECOVERY_ZONE_NAME_OPTION;
+import static org.junit.jupiter.api.Assertions.assertAll;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests for non-initialized cluster fir Non-REPL mode.
+ */
+public class ItNonInitializedClusterTest extends
CliCommandTestNotInitializedIntegrationBase {
+
+ protected String getExpectedErrorMessage() {
+ return CLUSTER_NOT_INITIALIZED_ERROR_MESSAGE;
+ }
+
+ private Path testDirectory;
+ private String testFile;
+
+ @BeforeAll
+ void beforeAll() throws IOException {
+ testDirectory = Files.createDirectory(WORK_DIR.resolve("test"));
+ testFile =
Files.createFile(testDirectory.resolve("test.txt")).toString();
+ }
+
+ @Test
+ @DisplayName("Should print error message when run node metric list on not
initialized cluster")
+ void nodeMetricListError() {
+ execute("node", "metric", "list");
+
+ assertAll(
+ () -> assertErrOutputContains("Cannot list metrics"),
+ () -> assertErrOutputContains(getExpectedErrorMessage())
+ );
+ }
+
+ @Test
+ @DisplayName("Should print error message when run node metric source list
on not initialized cluster")
+ void nodeMetricSourceListError() {
+ execute("node", "metric", "source", "list");
+
+ assertAll(
+ () -> assertErrOutputContains("Cannot list metrics"),
+ () -> assertErrOutputContains(getExpectedErrorMessage())
+ );
+ }
+
+ @Test
+ @DisplayName("Should print error message when run node metric source
enable on not initialized cluster")
+ void nodeMetricSourceEnableError() {
+ execute("node", "metric", "source", "enable", "metricName");
+
+ assertAll(
+ () -> assertErrOutputContains("Cannot enable metrics"),
+ () -> assertErrOutputContains(getExpectedErrorMessage())
+ );
+ }
+
+ @Test
+ @DisplayName("Should print error message when run node metric source
disable on not initialized cluster")
+ void nodeMetricSourceDisableError() {
+ execute("node", "metric", "source", "disable", "metricName");
+
+ assertAll(
+ () -> assertErrOutputContains("Cannot disable metrics"),
+ () -> assertErrOutputContains(getExpectedErrorMessage())
+ );
+ }
+
+ @Test
+ @DisplayName("Should print error message when recovery reset-partitions on
not initialized cluster")
+ void resetPartitionsError() {
+ execute("recovery", "partitions", "reset", CLUSTER_URL_OPTION,
NODE_URL,
+ RECOVERY_TABLE_NAME_OPTION, "tableName",
+ RECOVERY_ZONE_NAME_OPTION, "zoneName");
+ assertAll(
+ () -> assertErrOutputContains("Cannot reset partitions"),
+ () -> assertErrOutputContains(getExpectedErrorMessage())
+ );
+ }
+
+ @Test
+ @DisplayName("Should print error message when recovery partition-states on
not initialized cluster")
+ void partitionsStatesError() {
+ execute("recovery", "partitions", "states", CLUSTER_URL_OPTION,
NODE_URL,
+ RECOVERY_PARTITION_GLOBAL_OPTION);
+ assertAll(
+ () -> assertErrOutputContains("Cannot list partition states"),
+ () -> assertErrOutputContains(getExpectedErrorMessage())
+ );
+ }
+
+ @Test
+ @DisplayName("Should print error message when recovery restart-partitions
on not initialized cluster")
+ void partitionsRestartErrror() {
+ execute("recovery", "partitions", "restart", CLUSTER_URL_OPTION,
NODE_URL,
+ RECOVERY_TABLE_NAME_OPTION, "tableName",
RECOVERY_ZONE_NAME_OPTION, "zoneName");
+ assertAll(
+ () -> assertErrOutputContains("Cannot restart partitions"),
+ () -> assertErrOutputContains(getExpectedErrorMessage())
+ );
+ }
+
+ @Test
+ @DisplayName("Should print error message when deploy a unit on not
initialized cluster")
+ void unitDeployError() {
+ execute("cluster", "unit", "deploy", "test.unit.id.1", "--version",
"1.0.0", "--path", testFile);
+
+ assertAll(
+ () -> assertErrOutputContains("Cannot deploy unit"),
+ () -> assertErrOutputContains(getExpectedErrorMessage())
+ );
+ }
+
+ @Test
+ @DisplayName("Should display error when undeploy a unit on not initialized
cluster")
+ void unitUndeployError() {
+ execute("cluster", "unit", "undeploy", "test.unit.id.2", "--version",
"1.0.0");
+
+ assertAll(
+ () -> assertErrOutputContains("Cannot undeploy unit"),
+ () -> assertErrOutputContains(getExpectedErrorMessage())
+ );
+ }
+
+ @Test
+ @DisplayName("Should display error when listing deploy units on not
initialized cluster")
+ void listUnitsError() {
+ execute("node", "unit", "list");
+
+ assertAll(
+ () -> assertErrOutputContains("Cannot list units"),
+ () -> assertErrOutputContains(getExpectedErrorMessage())
+ );
+ }
+}
diff --git
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/recovery/partitions/restart/ItRestartPartitionsReplCommandTest.java
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/ItReplNonInitializedClusterTest.java
similarity index 64%
rename from
modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/recovery/partitions/restart/ItRestartPartitionsReplCommandTest.java
rename to
modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/ItReplNonInitializedClusterTest.java
index 0bffc6df58..5f236bdd0b 100644
---
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/recovery/partitions/restart/ItRestartPartitionsReplCommandTest.java
+++
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/ItReplNonInitializedClusterTest.java
@@ -15,13 +15,27 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.cli.commands.recovery.partitions.restart;
+package org.apache.ignite.internal.cli.commands;
-/** Test class for {@link RestartPartitionsReplCommand}. */
-public class ItRestartPartitionsReplCommandTest extends
ItRestartPartitionsTest {
+import org.junit.jupiter.api.BeforeEach;
+
+/**
+ * Tests for non-initialized cluster fir REPL mode.
+ */
+public class ItReplNonInitializedClusterTest extends
ItNonInitializedClusterTest {
@Override
protected Class<?> getCommandClass() {
- return RestartPartitionsReplCommand.class;
+ return TopLevelCliReplCommand.class;
+ }
+
+ @BeforeEach
+ void connect() {
+ execute("connect");
+ }
+
+ @Override
+ protected String getExpectedErrorMessage() {
+ return CLUSTER_NOT_INITIALIZED_REPL_ERROR_MESSAGE;
}
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigShowCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigShowCommand.java
index 091987aa92..0b8f1334af 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigShowCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigShowCommand.java
@@ -61,9 +61,7 @@ public class ClusterConfigShowCommand extends BaseCommand
implements Callable<In
.output(spec.commandLine().getOut())
.errOutput(spec.commandLine().getErr())
.decorator(new JsonDecorator(isHighlightEnabled()))
- .exceptionHandler(new ClusterNotInitializedExceptionHandler(
- "Cannot show cluster config", "ignite cluster init"
- ))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
show cluster config"))
.verbose(verbose)
.build()
.runPipeline();
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigShowReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigShowReplCommand.java
index d01e84599d..c606ef1a07 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigShowReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigShowReplCommand.java
@@ -63,7 +63,7 @@ public class ClusterConfigShowReplCommand extends BaseCommand
implements Runnabl
question.askQuestionIfNotConnected(clusterUrl.getClusterUrl())
.map(this::configShowCallInput)
.then(Flows.fromCall(call))
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot show cluster config", "cluster
init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
show cluster config"))
.verbose(verbose)
.print(new JsonDecorator(isHighlightEnabled()))
.start();
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigUpdateCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigUpdateCommand.java
index 55daeecd3a..49135925f8 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigUpdateCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigUpdateCommand.java
@@ -52,9 +52,7 @@ public class ClusterConfigUpdateCommand extends BaseCommand
implements Callable<
.inputProvider(this::buildCallInput)
.output(spec.commandLine().getOut())
.errOutput(spec.commandLine().getErr())
- .exceptionHandler(new ClusterNotInitializedExceptionHandler(
- "Cannot update cluster config", "ignite cluster init"
- ))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
update cluster config"))
.verbose(verbose)
.build()
.runPipeline();
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigUpdateReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigUpdateReplCommand.java
index 73250006cd..2021a7c9b3 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigUpdateReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigUpdateReplCommand.java
@@ -54,7 +54,7 @@ public class ClusterConfigUpdateReplCommand extends
BaseCommand implements Runna
question.askQuestionIfNotConnected(clusterUrl.getClusterUrl())
.map(this::configUpdateCallInput)
.then(Flows.fromCall(call))
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot update cluster config", "cluster
init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
update cluster config"))
.verbose(verbose)
.print()
.start();
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyCommand.java
index 5afa5a53cf..b9fd71b1cd 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyCommand.java
@@ -56,9 +56,7 @@ public class LogicalTopologyCommand extends BaseCommand
implements Callable<Inte
.output(spec.commandLine().getOut())
.errOutput(spec.commandLine().getErr())
.decorator(new TopologyDecorator(plain))
- .exceptionHandler(new ClusterNotInitializedExceptionHandler(
- "Cannot show logical topology", "ignite cluster init"
- ))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
show logical topology"))
.verbose(verbose)
.build()
.runPipeline();
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyReplCommand.java
index 2eb008b52c..4739dc4a50 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyReplCommand.java
@@ -57,7 +57,7 @@ public class LogicalTopologyReplCommand extends BaseCommand
implements Runnable
question.askQuestionIfNotConnected(clusterUrl.getClusterUrl())
.map(UrlCallInput::new)
.then(Flows.fromCall(call))
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot show logical topology", "cluster
init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
show logical topology"))
.print(new TopologyDecorator(plain))
.start();
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitDeployCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitDeployCommand.java
index 38eb288c09..357dc39ac4 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitDeployCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitDeployCommand.java
@@ -48,7 +48,7 @@ public class ClusterUnitDeployCommand extends BaseCommand
implements Callable<In
.output(spec.commandLine().getOut())
.errOutput(spec.commandLine().getErr())
.verbose(verbose)
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot deploy unit", "ignite cluster
init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
deploy unit"))
.build().runPipeline();
}
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitDeployReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitDeployReplCommand.java
index 14ff293556..e7e0b23f1b 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitDeployReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitDeployReplCommand.java
@@ -55,7 +55,7 @@ public class ClusterUnitDeployReplCommand extends BaseCommand
implements Runnabl
.output(spec.commandLine().getOut())
.errOutput(spec.commandLine().getErr())
.verbose(verbose)
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot deploy unit", "cluster init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
deploy unit"))
.build().runPipeline()
))
.start();
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitListCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitListCommand.java
index 2eca96a3df..dea9d7a16b 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitListCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitListCommand.java
@@ -58,7 +58,7 @@ public class ClusterUnitListCommand extends BaseCommand
implements Callable<Inte
.errOutput(spec.commandLine().getErr())
.verbose(verbose)
.decorator(new UnitListDecorator(plain))
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot list units", "ignite cluster
init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
list units"))
.build().runPipeline();
}
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitListReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitListReplCommand.java
index ab874ace9a..5b696ca297 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitListReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitListReplCommand.java
@@ -58,7 +58,7 @@ public class ClusterUnitListReplCommand extends BaseCommand
implements Runnable
question.askQuestionIfNotConnected(clusterUrl.getClusterUrl())
.map(listOptions::toListUnitCallInput)
.then(Flows.fromCall(call))
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot list units", "cluster init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
list units"))
.verbose(verbose)
.print(new UnitListDecorator(plain))
.start();
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitUndeployCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitUndeployCommand.java
index b435bb991d..3502e9cdf9 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitUndeployCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitUndeployCommand.java
@@ -63,7 +63,7 @@ public class ClusterUnitUndeployCommand extends BaseCommand
implements Callable<
.output(spec.commandLine().getOut())
.errOutput(spec.commandLine().getErr())
.verbose(verbose)
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot undeploy unit", "ignite cluster
init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
undeploy unit"))
.build().runPipeline();
}
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitUndeployReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitUndeployReplCommand.java
index df8fdc493a..870301372b 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitUndeployReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/unit/ClusterUnitUndeployReplCommand.java
@@ -64,7 +64,7 @@ public class ClusterUnitUndeployReplCommand extends
BaseCommand implements Runna
.clusterUrl(clusterUrl)
.build())
.then(Flows.fromCall(call))
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot undeploy unit", "cluster init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
undeploy unit"))
.verbose(verbose)
.print()
.start();
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSetListCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSetListCommand.java
index 9867ecda54..da07db099a 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSetListCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSetListCommand.java
@@ -27,6 +27,7 @@ import org.apache.ignite.internal.cli.commands.BaseCommand;
import org.apache.ignite.internal.cli.commands.node.NodeUrlProfileMixin;
import org.apache.ignite.internal.cli.core.call.CallExecutionPipeline;
import org.apache.ignite.internal.cli.core.call.UrlCallInput;
+import
org.apache.ignite.internal.cli.core.exception.handler.ClusterNotInitializedExceptionHandler;
import org.apache.ignite.internal.cli.decorators.MetricSetListDecorator;
import picocli.CommandLine.Command;
import picocli.CommandLine.Mixin;
@@ -54,6 +55,7 @@ public class NodeMetricSetListCommand extends BaseCommand
implements Callable<In
.errOutput(spec.commandLine().getErr())
.decorator(new MetricSetListDecorator(plain))
.verbose(verbose)
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
list metrics"))
.build()
.runPipeline();
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSetListReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSetListReplCommand.java
index 5bbc6b9b4b..2b6d9ac1e9 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSetListReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSetListReplCommand.java
@@ -26,6 +26,7 @@ import org.apache.ignite.internal.cli.commands.BaseCommand;
import org.apache.ignite.internal.cli.commands.node.NodeUrlMixin;
import
org.apache.ignite.internal.cli.commands.questions.ConnectToClusterQuestion;
import org.apache.ignite.internal.cli.core.call.UrlCallInput;
+import
org.apache.ignite.internal.cli.core.exception.handler.ClusterNotInitializedExceptionHandler;
import org.apache.ignite.internal.cli.core.flow.builder.Flows;
import org.apache.ignite.internal.cli.decorators.MetricSetListDecorator;
import picocli.CommandLine.Command;
@@ -54,6 +55,7 @@ public class NodeMetricSetListReplCommand extends BaseCommand
implements Runnabl
question.askQuestionIfNotConnected(nodeUrl.getNodeUrl())
.map(UrlCallInput::new)
.then(Flows.fromCall(call))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
list metrics"))
.print(new MetricSetListDecorator(plain))
.start();
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceDisableCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceDisableCommand.java
index 1529ec55de..27fd4bde0d 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceDisableCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceDisableCommand.java
@@ -49,7 +49,7 @@ public class NodeMetricSourceDisableCommand extends
BaseCommand implements Calla
.output(spec.commandLine().getOut())
.errOutput(spec.commandLine().getErr())
.verbose(verbose)
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot disable metrics", "ignite cluster
init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
disable metrics"))
.build()
.runPipeline();
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceDisableReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceDisableReplCommand.java
index bf8d525f9f..d485e067b2 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceDisableReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceDisableReplCommand.java
@@ -49,7 +49,7 @@ public class NodeMetricSourceDisableReplCommand extends
BaseCommand implements R
question.askQuestionIfNotConnected(nodeUrl.getNodeUrl())
.map(metricSource::buildDisableCallInput)
.then(Flows.fromCall(call))
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot disable metrics", "cluster init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
disable metrics"))
.verbose(verbose)
.print()
.start();
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceEnableCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceEnableCommand.java
index 0c2fdd45d1..6e4ef57512 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceEnableCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceEnableCommand.java
@@ -49,7 +49,7 @@ public class NodeMetricSourceEnableCommand extends
BaseCommand implements Callab
.output(spec.commandLine().getOut())
.errOutput(spec.commandLine().getErr())
.verbose(verbose)
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot enable metrics", "ignite cluster
init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
enable metrics"))
.build()
.runPipeline();
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceEnableReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceEnableReplCommand.java
index 84cc518371..9f47a2d270 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceEnableReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceEnableReplCommand.java
@@ -49,7 +49,7 @@ public class NodeMetricSourceEnableReplCommand extends
BaseCommand implements Ru
question.askQuestionIfNotConnected(nodeUrl.getNodeUrl())
.map(metricSource::buildEnableCallInput)
.then(Flows.fromCall(call))
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot enable metrics", "cluster init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
enable metrics"))
.verbose(verbose)
.print()
.start();
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceListCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceListCommand.java
index ab1814ed2a..abd7d27fc7 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceListCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceListCommand.java
@@ -55,7 +55,7 @@ public class NodeMetricSourceListCommand extends BaseCommand
implements Callable
.errOutput(spec.commandLine().getErr())
.decorator(new MetricSourceListDecorator(plain))
.verbose(verbose)
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot list metrics", "ignite cluster
init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
list metrics"))
.build()
.runPipeline();
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceListReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceListReplCommand.java
index 99bcc97b31..a14f4b1bfd 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceListReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricSourceListReplCommand.java
@@ -55,7 +55,7 @@ public class NodeMetricSourceListReplCommand extends
BaseCommand implements Runn
question.askQuestionIfNotConnected(nodeUrl.getNodeUrl())
.map(UrlCallInput::new)
.then(Flows.fromCall(call))
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot list metrics", "cluster init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
list metrics"))
.print(new MetricSourceListDecorator(plain))
.start();
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/unit/NodeUnitListCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/unit/NodeUnitListCommand.java
index 96245c1df5..27ccc9d349 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/unit/NodeUnitListCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/unit/NodeUnitListCommand.java
@@ -58,7 +58,7 @@ public class NodeUnitListCommand extends BaseCommand
implements Callable<Integer
.errOutput(spec.commandLine().getErr())
.verbose(verbose)
.decorator(new UnitListDecorator(plain))
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot list units", "ignite cluster
init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
list units"))
.build().runPipeline();
}
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/unit/NodeUnitListReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/unit/NodeUnitListReplCommand.java
index 5e35d6d365..a4ad93a99e 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/unit/NodeUnitListReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/unit/NodeUnitListReplCommand.java
@@ -57,7 +57,7 @@ public class NodeUnitListReplCommand extends BaseCommand
implements Runnable {
question.askQuestionIfNotConnected(nodeUrl.getNodeUrl())
.map(listOptions::toListUnitCallInput)
.then(Flows.fromCall(call))
- .exceptionHandler(new
ClusterNotInitializedExceptionHandler("Cannot list units", "cluster init"))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
list units"))
.verbose(verbose)
.print(new UnitListDecorator(plain))
.start();
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/reset/ResetPartitionsCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/reset/ResetPartitionsCommand.java
index 124703cb32..33330ed018 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/reset/ResetPartitionsCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/reset/ResetPartitionsCommand.java
@@ -23,6 +23,7 @@ import
org.apache.ignite.internal.cli.call.recovery.reset.ResetPartitionsCall;
import
org.apache.ignite.internal.cli.call.recovery.reset.ResetPartitionsCallInput;
import org.apache.ignite.internal.cli.commands.BaseCommand;
import org.apache.ignite.internal.cli.core.call.CallExecutionPipeline;
+import
org.apache.ignite.internal.cli.core.exception.handler.ClusterNotInitializedExceptionHandler;
import picocli.CommandLine.Command;
import picocli.CommandLine.Mixin;
@@ -42,6 +43,7 @@ public class ResetPartitionsCommand extends BaseCommand
implements Callable<Inte
.output(spec.commandLine().getOut())
.errOutput(spec.commandLine().getErr())
.verbose(verbose)
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
reset partitions"))
.build()
.runPipeline();
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/reset/ResetPartitionsReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/reset/ResetPartitionsReplCommand.java
index d2951415cd..87fc635050 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/reset/ResetPartitionsReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/reset/ResetPartitionsReplCommand.java
@@ -22,6 +22,7 @@ import
org.apache.ignite.internal.cli.call.recovery.reset.ResetPartitionsCall;
import
org.apache.ignite.internal.cli.call.recovery.reset.ResetPartitionsCallInput;
import org.apache.ignite.internal.cli.commands.BaseCommand;
import
org.apache.ignite.internal.cli.commands.questions.ConnectToClusterQuestion;
+import
org.apache.ignite.internal.cli.core.exception.handler.ClusterNotInitializedExceptionHandler;
import org.apache.ignite.internal.cli.core.flow.builder.Flows;
import picocli.CommandLine.Command;
import picocli.CommandLine.Mixin;
@@ -44,6 +45,7 @@ public class ResetPartitionsReplCommand extends BaseCommand
implements Runnable
.map(url -> ResetPartitionsCallInput.of(options, url))
.then(Flows.fromCall(call))
.verbose(verbose)
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
reset partitions"))
.print()
.start();
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/restart/RestartPartitionsCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/restart/RestartPartitionsCommand.java
index 07ffc5767a..b12924e3ac 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/restart/RestartPartitionsCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/restart/RestartPartitionsCommand.java
@@ -23,6 +23,7 @@ import
org.apache.ignite.internal.cli.call.recovery.restart.RestartPartitionsCal
import
org.apache.ignite.internal.cli.call.recovery.restart.RestartPartitionsCallInput;
import org.apache.ignite.internal.cli.commands.BaseCommand;
import org.apache.ignite.internal.cli.core.call.CallExecutionPipeline;
+import
org.apache.ignite.internal.cli.core.exception.handler.ClusterNotInitializedExceptionHandler;
import picocli.CommandLine.Command;
import picocli.CommandLine.Mixin;
@@ -42,6 +43,7 @@ public class RestartPartitionsCommand extends BaseCommand
implements Callable<In
.output(spec.commandLine().getOut())
.errOutput(spec.commandLine().getErr())
.verbose(verbose)
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
restart partitions"))
.build()
.runPipeline();
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/restart/RestartPartitionsReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/restart/RestartPartitionsReplCommand.java
index d392cfefa6..b71c337295 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/restart/RestartPartitionsReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/restart/RestartPartitionsReplCommand.java
@@ -22,6 +22,7 @@ import
org.apache.ignite.internal.cli.call.recovery.restart.RestartPartitionsCal
import
org.apache.ignite.internal.cli.call.recovery.restart.RestartPartitionsCallInput;
import org.apache.ignite.internal.cli.commands.BaseCommand;
import
org.apache.ignite.internal.cli.commands.questions.ConnectToClusterQuestion;
+import
org.apache.ignite.internal.cli.core.exception.handler.ClusterNotInitializedExceptionHandler;
import org.apache.ignite.internal.cli.core.flow.builder.Flows;
import picocli.CommandLine.Command;
import picocli.CommandLine.Mixin;
@@ -44,6 +45,7 @@ public class RestartPartitionsReplCommand extends BaseCommand
implements Runnabl
.map(url -> RestartPartitionsCallInput.of(options, url))
.then(Flows.fromCall(call))
.verbose(verbose)
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
restart partitions"))
.print()
.start();
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/states/PartitionStatesCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/states/PartitionStatesCommand.java
index 30776e1ec1..08b2d4ea90 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/states/PartitionStatesCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/states/PartitionStatesCommand.java
@@ -23,6 +23,7 @@ import
org.apache.ignite.internal.cli.call.recovery.PartitionStatesCall;
import org.apache.ignite.internal.cli.call.recovery.PartitionStatesCallInput;
import org.apache.ignite.internal.cli.commands.BaseCommand;
import org.apache.ignite.internal.cli.core.call.CallExecutionPipeline;
+import
org.apache.ignite.internal.cli.core.exception.handler.ClusterNotInitializedExceptionHandler;
import org.apache.ignite.internal.cli.decorators.TableDecorator;
import picocli.CommandLine.Command;
import picocli.CommandLine.Mixin;
@@ -44,6 +45,7 @@ public class PartitionStatesCommand extends BaseCommand
implements Callable<Inte
.errOutput(spec.commandLine().getErr())
.decorator(new TableDecorator(options.plain()))
.verbose(verbose)
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createHandler("Cannot
list partition states"))
.build()
.runPipeline();
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/states/PartitionStatesReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/states/PartitionStatesReplCommand.java
index f43ded24a3..bbae949018 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/states/PartitionStatesReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/recovery/partitions/states/PartitionStatesReplCommand.java
@@ -22,6 +22,7 @@ import
org.apache.ignite.internal.cli.call.recovery.PartitionStatesCall;
import org.apache.ignite.internal.cli.call.recovery.PartitionStatesCallInput;
import org.apache.ignite.internal.cli.commands.BaseCommand;
import
org.apache.ignite.internal.cli.commands.questions.ConnectToClusterQuestion;
+import
org.apache.ignite.internal.cli.core.exception.handler.ClusterNotInitializedExceptionHandler;
import org.apache.ignite.internal.cli.core.flow.builder.Flows;
import org.apache.ignite.internal.cli.decorators.TableDecorator;
import picocli.CommandLine.Command;
@@ -45,6 +46,7 @@ public class PartitionStatesReplCommand extends BaseCommand
implements Runnable
.map(url -> PartitionStatesCallInput.of(options, url))
.then(Flows.fromCall(call))
.print(new TableDecorator(options.plain()))
+
.exceptionHandler(ClusterNotInitializedExceptionHandler.createReplHandler("Cannot
list partition states"))
.verbose(verbose)
.start();
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/exception/handler/ClusterNotInitializedExceptionHandler.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/exception/handler/ClusterNotInitializedExceptionHandler.java
index 7cbde65b61..6864c3059c 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/exception/handler/ClusterNotInitializedExceptionHandler.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/exception/handler/ClusterNotInitializedExceptionHandler.java
@@ -61,4 +61,22 @@ public class ClusterNotInitializedExceptionHandler extends
IgniteCliApiException
}
return super.handle(err, e);
}
+
+ /**
+ * Creates handler for Non-REPL command.
+ *
+ * @param message command-specific text like 'cannot list nodes'
+ */
+ public static ClusterNotInitializedExceptionHandler createHandler(String
message) {
+ return new ClusterNotInitializedExceptionHandler(message, "ignite
cluster init");
+ }
+
+ /**
+ * Creates handler for REPL command.
+ *
+ * @param message command-specific text like 'cannot list nodes'
+ */
+ public static ClusterNotInitializedExceptionHandler
createReplHandler(String message) {
+ return new ClusterNotInitializedExceptionHandler(message, "cluster
init");
+ }
}