This is an automated email from the ASF dual-hosted git repository.

timoninmaxim pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 3d7383662e2 IGNITE-27010 Implement control.sh status command for 
rolling upgrade (#12521)
3d7383662e2 is described below

commit 3d7383662e275e67df90e2cc613b682d1869df79
Author: Aleksandr Chesnokov <[email protected]>
AuthorDate: Wed Dec 3 13:11:02 2025 +0300

    IGNITE-27010 Implement control.sh status command for rolling upgrade 
(#12521)
---
 .../ignite/util/RollingUpgradeCommandTest.java     | 118 +++++++++++++++++++++
 .../rollingupgrade/RollingUpgradeCommand.java      |   3 +-
 .../RollingUpgradeStatusCommand.java               |  87 +++++++++++++++
 ...skResult.java => RollingUpgradeStatusNode.java} |  95 ++++++++++-------
 .../rollingupgrade/RollingUpgradeStatusTask.java   |  72 +++++++++++++
 .../rollingupgrade/RollingUpgradeTaskResult.java   |  27 +++++
 ...ridCommandHandlerClusterByClassTest_help.output |   4 +
 ...andHandlerClusterByClassWithSSLTest_help.output |   4 +
 8 files changed, 370 insertions(+), 40 deletions(-)

diff --git 
a/modules/control-utility/src/test/java/org/apache/ignite/util/RollingUpgradeCommandTest.java
 
b/modules/control-utility/src/test/java/org/apache/ignite/util/RollingUpgradeCommandTest.java
index b924fb4186f..4d7b52dc7b9 100644
--- 
a/modules/control-utility/src/test/java/org/apache/ignite/util/RollingUpgradeCommandTest.java
+++ 
b/modules/control-utility/src/test/java/org/apache/ignite/util/RollingUpgradeCommandTest.java
@@ -17,11 +17,21 @@
 
 package org.apache.ignite.util;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Consumer;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteEx;
 import 
org.apache.ignite.internal.management.rollingupgrade.RollingUpgradeCommand;
+import 
org.apache.ignite.internal.management.rollingupgrade.RollingUpgradeStatusCommand;
+import 
org.apache.ignite.internal.management.rollingupgrade.RollingUpgradeStatusNode;
 import 
org.apache.ignite.internal.management.rollingupgrade.RollingUpgradeTaskResult;
 import org.apache.ignite.lang.IgniteProductVersion;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
 import org.junit.Test;
 
+import static java.util.stream.Collectors.toList;
 import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_BUILD_VER;
 import static 
org.apache.ignite.internal.commandline.CommandHandler.EXIT_CODE_OK;
 
@@ -39,6 +49,9 @@ public class RollingUpgradeCommandTest extends 
GridCommandHandlerClusterByClassA
     /** */
     public static final String ROLLING_UPGRADE = "--rolling-upgrade";
 
+    /** */
+    public static final String STATUS = "status";
+
     /** {@inheritDoc} */
     @Override protected void beforeTestsStarted() throws Exception {
         super.beforeTestsStarted();
@@ -177,4 +190,109 @@ public class RollingUpgradeCommandTest extends 
GridCommandHandlerClusterByClassA
 
         assertTrue(crd.context().rollingUpgrade().enabled());
     }
+
+    /** */
+    @Test
+    public void testStatusWhenDisabled() {
+        int res = execute(ROLLING_UPGRADE, STATUS);
+
+        assertEquals(EXIT_CODE_OK, res);
+
+        RollingUpgradeTaskResult taskRes = 
(RollingUpgradeTaskResult)lastOperationResult;
+
+        assertNull(taskRes.errorMessage());
+        assertNull(taskRes.currentVersion());
+        assertNull(taskRes.targetVersion());
+
+        assertNull(taskRes.nodes());
+
+        RollingUpgradeStatusCommand statusCmd = new 
RollingUpgradeStatusCommand();
+
+        List<String> lines = new ArrayList<>();
+
+        statusCmd.printResult(null, taskRes, lines::add);
+
+        List<String> expectedLines = new ArrayList<>();
+
+        expectedLines.add("Rolling upgrade status: disabled");
+
+        assertEquals(expectedLines, lines);
+    }
+
+    /** */
+    @Test
+    public void testStatusWhenEnabled() throws Exception {
+        IgniteProductVersion curVer = 
IgniteProductVersion.fromString(crd.localNode().attribute(ATTR_BUILD_VER));
+
+        String targetVerStr = curVer.major() + "." + (curVer.minor() + 1) + 
"." + curVer.maintenance();
+        IgniteProductVersion targetVer = 
IgniteProductVersion.fromString(targetVerStr);
+
+        execute(ROLLING_UPGRADE, ENABLE, targetVerStr);
+
+        Consumer<IgniteConfiguration> cfgC = cfg -> {
+            TcpDiscoverySpi discoSpi = new TcpDiscoverySpi() {
+                @Override public void setNodeAttributes(Map<String, Object> 
attrs, IgniteProductVersion ver) {
+                    super.setNodeAttributes(attrs, ver);
+                    attrs.put(ATTR_BUILD_VER, targetVerStr);
+                }
+            };
+
+            
discoSpi.setIpFinder(((TcpDiscoverySpi)cfg.getDiscoverySpi()).getIpFinder());
+            cfg.setDiscoverySpi(discoSpi);
+        };
+
+        try (IgniteEx ignored = startGrid(SERVER_NODE_CNT + 1, cfgC)) {
+            int res = execute(ROLLING_UPGRADE, STATUS);
+
+            assertEquals(EXIT_CODE_OK, res);
+        }
+
+        RollingUpgradeTaskResult taskRes = 
(RollingUpgradeTaskResult)lastOperationResult;
+
+        assertNull(taskRes.errorMessage());
+        assertEquals(curVer, taskRes.currentVersion());
+        assertEquals(targetVer, taskRes.targetVersion());
+
+        List<RollingUpgradeStatusNode> nodes = taskRes.nodes();
+
+        assertNotNull(nodes);
+        assertEquals(SERVER_NODE_CNT + 2, nodes.size());
+
+        List<RollingUpgradeStatusNode> oldNodes = nodes.stream().filter(node 
-> node.version().equals(curVer)).collect(toList());
+
+        List<RollingUpgradeStatusNode> newNodes = nodes.stream().filter(node 
-> node.version().equals(targetVer)).collect(toList());
+
+        assertEquals(SERVER_NODE_CNT + 1, oldNodes.size());
+        assertEquals(1, newNodes.size());
+
+        RollingUpgradeStatusCommand statusCmd = new 
RollingUpgradeStatusCommand();
+
+        List<String> lines = new ArrayList<>();
+
+        statusCmd.printResult(null, taskRes, lines::add);
+
+        List<String> expectedLines = new ArrayList<>();
+
+        expectedLines.add("Rolling upgrade status: enabled");
+        expectedLines.add("Current version: " + curVer);
+        expectedLines.add("Target version: " + targetVer);
+
+        expectedLines.add("Version " + curVer + ":");
+        oldNodes.forEach(node -> expectedLines.add("    Node[id=" + 
node.uuid() +
+            ", consistentId=" + node.consistentId() +
+            ", addrs=" + node.addresses() +
+            ", order=" + node.order() +
+            ", isClient=" + node.client() +
+            "]"));
+
+        expectedLines.add("Version " + targetVer + ":");
+        newNodes.forEach(node -> expectedLines.add("    Node[id=" + 
node.uuid() +
+            ", consistentId=" + node.consistentId() +
+            ", addrs=" + node.addresses() +
+            ", order=" + node.order() +
+            ", isClient=" + node.client() +
+            "]"));
+
+        assertEquals(expectedLines, lines);
+    }
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeCommand.java
index c68f0378998..9ac1b41822c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeCommand.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeCommand.java
@@ -25,7 +25,8 @@ public class RollingUpgradeCommand extends 
CommandRegistryImpl {
     public RollingUpgradeCommand() {
         super(
             new RollingUpgradeEnableCommand(),
-            new RollingUpgradeDisableCommand()
+            new RollingUpgradeDisableCommand(),
+            new RollingUpgradeStatusCommand()
         );
     }
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeStatusCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeStatusCommand.java
new file mode 100644
index 00000000000..a46d63b6ec5
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeStatusCommand.java
@@ -0,0 +1,87 @@
+/*
+ * 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.management.rollingupgrade;
+
+import java.util.Collection;
+import java.util.TreeMap;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.internal.management.api.ComputeCommand;
+import org.apache.ignite.internal.management.api.NoArg;
+import org.apache.ignite.lang.IgniteExperimental;
+
+import static 
org.apache.ignite.internal.management.api.CommandUtils.coordinatorOrNull;
+
+/** Command to get status of rolling upgrade mode. */
+@IgniteExperimental
+public class RollingUpgradeStatusCommand implements ComputeCommand<NoArg, 
RollingUpgradeTaskResult> {
+    /** {@inheritDoc} */
+    @Override public String description() {
+        return "Get status of rolling upgrade mode";
+    }
+
+    /** {@inheritDoc} */
+    @Override public Class<NoArg> argClass() {
+        return NoArg.class;
+    }
+
+    /** {@inheritDoc} */
+    @Override public Class<RollingUpgradeStatusTask> taskClass() {
+        return RollingUpgradeStatusTask.class;
+    }
+
+    /** {@inheritDoc} */
+    @Override public void printResult(NoArg arg, RollingUpgradeTaskResult res, 
Consumer<String> printer) {
+        printer.accept("Rolling upgrade status: " + (res.targetVersion() != 
null ? "enabled" : "disabled"));
+
+        if (res.targetVersion() == null)
+            return;
+
+        printer.accept("Current version: " + res.currentVersion());
+        printer.accept("Target version: " + res.targetVersion());
+
+        if (res.nodes() == null || res.nodes().isEmpty()) {
+            printer.accept("No nodes information available");
+            return;
+        }
+
+        res.nodes().stream()
+            .collect(Collectors.groupingBy(RollingUpgradeStatusNode::version, 
TreeMap::new, Collectors.toList()))
+            .forEach((ver, nodes) -> {
+                printer.accept("Version " + ver + ":");
+                nodes.forEach(node -> printer.accept("    Node[id=" + 
node.uuid() +
+                    ", consistentId=" + node.consistentId() +
+                    ", addrs=" + node.addresses() +
+                    ", order=" + node.order() +
+                    ", isClient=" + node.client() +
+                    "]"));
+            });
+    }
+
+    /** {@inheritDoc} */
+    @Override public Collection<ClusterNode> nodes(Collection<ClusterNode> 
nodes, NoArg arg) {
+        Collection<ClusterNode> coordinator = coordinatorOrNull(nodes);
+
+        if (coordinator == null)
+            throw new IgniteException("Could not find coordinator among nodes: 
" + nodes);
+
+        return coordinator;
+    }
+}
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeTaskResult.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeStatusNode.java
similarity index 50%
copy from 
modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeTaskResult.java
copy to 
modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeStatusNode.java
index 178120654c2..eb22b9c5b19 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeTaskResult.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeStatusNode.java
@@ -20,83 +20,100 @@ package 
org.apache.ignite.internal.management.rollingupgrade;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
+import java.util.Collection;
+import java.util.UUID;
+import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.internal.dto.IgniteDataTransferObject;
-import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteProductVersion;
 
-/** */
-public class RollingUpgradeTaskResult extends IgniteDataTransferObject {
+import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_BUILD_VER;
+
+/** Node status information for rolling upgrade. */
+public class RollingUpgradeStatusNode extends IgniteDataTransferObject {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** */
-    private IgniteProductVersion curVer;
+    private UUID uuid;
 
     /** */
-    private IgniteProductVersion targetVer;
+    private Object consistentId;
 
     /** */
-    private String errMsg;
+    private Collection<String> addresses;
 
     /** */
-    public RollingUpgradeTaskResult(IgniteProductVersion curVer, 
IgniteProductVersion targetVer, String errMsg) {
-        this.curVer = curVer;
-        this.targetVer = targetVer;
-        this.errMsg = errMsg;
-    }
+    private IgniteProductVersion ver;
+
+    /** */
+    private long order;
+
+    /** */
+    private boolean client;
 
     /** */
-    public RollingUpgradeTaskResult() {
+    public RollingUpgradeStatusNode() {
         // No-op.
     }
 
     /** */
-    public IgniteProductVersion currentVersion() {
-        return curVer;
+    public RollingUpgradeStatusNode(ClusterNode node) {
+        ver = IgniteProductVersion.fromString(node.attribute(ATTR_BUILD_VER));
+        uuid = node.id();
+        consistentId = node.consistentId();
+        addresses = node.addresses();
+        order = node.order();
+        client = node.isClient();
     }
 
-    /** */
-    public void currentVersion(IgniteProductVersion curVer) {
-        this.curVer = curVer;
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws 
IOException {
+        out.writeObject(ver);
+        U.writeUuid(out, uuid);
+        out.writeObject(consistentId);
+        U.writeCollection(out, addresses);
+        out.writeLong(order);
+        out.writeBoolean(client);
     }
 
-    /** */
-    public IgniteProductVersion targetVersion() {
-        return targetVer;
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(ObjectInput in) throws 
IOException, ClassNotFoundException {
+        ver = (IgniteProductVersion)in.readObject();
+        uuid = U.readUuid(in);
+        consistentId = in.readObject();
+        addresses = U.readCollection(in);
+        order = in.readLong();
+        client = in.readBoolean();
     }
 
     /** */
-    public void targetVersion(IgniteProductVersion targetVer) {
-        this.targetVer = targetVer;
+    public IgniteProductVersion version() {
+        return ver;
     }
 
     /** */
-    public String errorMessage() {
-        return errMsg;
+    public Collection<String> addresses() {
+        return addresses;
     }
 
     /** */
-    public void errorMessage(String errMsg) {
-        this.errMsg = errMsg;
+    public UUID uuid() {
+        return uuid;
     }
 
-    /** {@inheritDoc} */
-    @Override protected void writeExternalData(ObjectOutput out) throws 
IOException {
-        out.writeObject(curVer);
-        out.writeObject(targetVer);
-        U.writeString(out, errMsg);
+    /** */
+    public Object consistentId() {
+        return consistentId;
     }
 
-    /** {@inheritDoc} */
-    @Override protected void readExternalData(ObjectInput in) throws 
IOException, ClassNotFoundException {
-        this.curVer = (IgniteProductVersion)in.readObject();
-        this.targetVer = (IgniteProductVersion)in.readObject();
-        this.errMsg = U.readString(in);
+    /** */
+    public long order() {
+        return order;
     }
 
-    /** {@inheritDoc} */
-    @Override public String toString() {
-        return S.toString(RollingUpgradeTaskResult.class, this);
+    /** */
+    public boolean client() {
+        return client;
     }
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeStatusTask.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeStatusTask.java
new file mode 100644
index 00000000000..af5084748f8
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeStatusTask.java
@@ -0,0 +1,72 @@
+/*
+ * 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.management.rollingupgrade;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.management.api.NoArg;
+import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.util.lang.IgnitePair;
+import org.apache.ignite.internal.visor.VisorJob;
+import org.apache.ignite.internal.visor.VisorOneNodeTask;
+import org.apache.ignite.lang.IgniteProductVersion;
+
+/** Task to obtain rolling upgrade status. */
+@GridInternal
+public class RollingUpgradeStatusTask extends VisorOneNodeTask<NoArg, 
RollingUpgradeTaskResult> {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** {@inheritDoc} */
+    @Override protected VisorJob<NoArg, RollingUpgradeTaskResult> job(NoArg 
arg) {
+        return new RollingUpgradeStatusJob(arg, debug);
+    }
+
+    /** */
+    private static class RollingUpgradeStatusJob extends VisorJob<NoArg, 
RollingUpgradeTaskResult> {
+        /** */
+        private static final long serialVersionUID = 0L;
+
+        /** */
+        protected RollingUpgradeStatusJob(NoArg arg, boolean debug) {
+            super(arg, debug);
+        }
+
+        /** {@inheritDoc} */
+        @Override protected RollingUpgradeTaskResult run(NoArg arg) throws 
IgniteException {
+            IgnitePair<IgniteProductVersion> vers = 
ignite.context().rollingUpgrade().versions();
+
+            List<RollingUpgradeStatusNode> nodes = null;
+
+            if (vers != null && vers.get2() != null)
+                nodes = ignite.context().discovery().allNodes().stream()
+                    .map(node -> new RollingUpgradeStatusNode(node))
+                    .collect(Collectors.toList());
+
+            RollingUpgradeTaskResult res = new RollingUpgradeTaskResult(
+                vers == null ? null : vers.get1(),
+                vers == null ? null : vers.get2(),
+                null,
+                nodes
+            );
+
+            return res;
+        }
+    }
+}
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeTaskResult.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeTaskResult.java
index 178120654c2..99e9b593712 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeTaskResult.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/rollingupgrade/RollingUpgradeTaskResult.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.management.rollingupgrade;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
+import java.util.List;
 import org.apache.ignite.internal.dto.IgniteDataTransferObject;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
@@ -39,11 +40,25 @@ public class RollingUpgradeTaskResult extends 
IgniteDataTransferObject {
     /** */
     private String errMsg;
 
+    /** */
+    private List<RollingUpgradeStatusNode> nodes;
+
     /** */
     public RollingUpgradeTaskResult(IgniteProductVersion curVer, 
IgniteProductVersion targetVer, String errMsg) {
+        this(curVer, targetVer, errMsg, null);
+    }
+
+    /** */
+    public RollingUpgradeTaskResult(
+        IgniteProductVersion curVer,
+        IgniteProductVersion targetVer,
+        String errMsg,
+        List<RollingUpgradeStatusNode> nodes
+    ) {
         this.curVer = curVer;
         this.targetVer = targetVer;
         this.errMsg = errMsg;
+        this.nodes = nodes;
     }
 
     /** */
@@ -81,11 +96,22 @@ public class RollingUpgradeTaskResult extends 
IgniteDataTransferObject {
         this.errMsg = errMsg;
     }
 
+    /** */
+    public List<RollingUpgradeStatusNode> nodes() {
+        return nodes;
+    }
+
+    /** */
+    public void nodes(List<RollingUpgradeStatusNode> nodes) {
+        this.nodes = nodes;
+    }
+
     /** {@inheritDoc} */
     @Override protected void writeExternalData(ObjectOutput out) throws 
IOException {
         out.writeObject(curVer);
         out.writeObject(targetVer);
         U.writeString(out, errMsg);
+        U.writeCollection(out, nodes);
     }
 
     /** {@inheritDoc} */
@@ -93,6 +119,7 @@ public class RollingUpgradeTaskResult extends 
IgniteDataTransferObject {
         this.curVer = (IgniteProductVersion)in.readObject();
         this.targetVer = (IgniteProductVersion)in.readObject();
         this.errMsg = U.readString(in);
+        this.nodes = U.readList(in);
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassTest_help.output
 
b/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassTest_help.output
index 9bf90f38eac..a456cc42598 100644
--- 
a/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassTest_help.output
+++ 
b/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassTest_help.output
@@ -383,6 +383,10 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
   Disable rolling upgrade mode. All nodes in the cluster must be running the 
same version:
     control.(sh|bat) --rolling-upgrade disable
 
+  [EXPERIMENTAL]
+    Get status of rolling upgrade mode:
+      control.(sh|bat) --rolling-upgrade status
+
   Print system view content:
     control.(sh|bat) --system-view system_view_name [--node-id 
node_id|--node-ids nodeId1,nodeId2,..|--all-nodes]
 
diff --git 
a/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassWithSSLTest_help.output
 
b/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassWithSSLTest_help.output
index 21cef2d908e..bdd83c95836 100644
--- 
a/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassWithSSLTest_help.output
+++ 
b/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassWithSSLTest_help.output
@@ -383,6 +383,10 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
   Disable rolling upgrade mode. All nodes in the cluster must be running the 
same version:
     control.(sh|bat) --rolling-upgrade disable
 
+  [EXPERIMENTAL]
+    Get status of rolling upgrade mode:
+      control.(sh|bat) --rolling-upgrade status
+
   Print system view content:
     control.(sh|bat) --system-view system_view_name [--node-id 
node_id|--node-ids nodeId1,nodeId2,..|--all-nodes]
 

Reply via email to