http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e1c3c8ce/modules/visor-console/src/main/scala/org/gridgain/visor/commands/node/Packet.scala
----------------------------------------------------------------------
diff --git 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/node/Packet.scala
 
b/modules/visor-console/src/main/scala/org/gridgain/visor/commands/node/Packet.scala
deleted file mode 100644
index 6d8c636..0000000
--- 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/node/Packet.scala
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.gridgain.visor.commands
-
-/**
- * ==Overview==
- * Contains Visor command `node` implementation.
- *
- * ==Help==
- * {{{
- * +--------------------------------+
- * | node | Prints node statistics. |
- * +--------------------------------+
- * }}}
- *
- * ====Specification====
- * {{{
- *     node "{-id8=<node-id8>|-id=<node-id>} {-a}"
- *     node
- * }}}
- *
- * ====Arguments====
- * {{{
- *     -id8=<node-id8>
- *         ID8 of node. Either '-id8' or '-id' can be specified.
- *         If neither specified - command starts in interactive mode.
- *     -id=<node-id>
- *         Full ID of node. Either '-id8' or '-id' can  be specified.
- *         If neither specified - command starts in interactive mode.
- *     -a
- *         Print extended information.
- *         By default - only abbreviated statistics is printed.
- * }}}
- *
- * ====Examples====
- * {{{
- *     node
- *         Starts command in interactive mode.
- *     node "-id8=12345678"
- *         Prints statistics for specified node.
- *     node "-id8=12345678 -a"
- *         Prints full statistics for specified node.
- * }}}
- */
-package object node

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e1c3c8ce/modules/visor-console/src/main/scala/org/gridgain/visor/commands/node/VisorNodeCommand.scala
----------------------------------------------------------------------
diff --git 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/node/VisorNodeCommand.scala
 
b/modules/visor-console/src/main/scala/org/gridgain/visor/commands/node/VisorNodeCommand.scala
deleted file mode 100644
index f855de8..0000000
--- 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/node/VisorNodeCommand.scala
+++ /dev/null
@@ -1,342 +0,0 @@
-/*
- * 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.gridgain.visor.commands.node
-
-import org.apache.ignite.internal.GridNodeAttributes
-import org.apache.ignite.internal.util.GridUtils
-import org.apache.ignite.internal.util.typedef.internal.U
-import GridNodeAttributes._
-import org.apache.ignite.internal.util.lang.{GridFunc => F}
-import org.apache.ignite.internal.util.typedef.X
-
-import org.apache.ignite.cluster.ClusterNode
-import org.jetbrains.annotations._
-
-import java.util.UUID
-
-import org.gridgain.visor._
-import org.gridgain.visor.commands.{VisorConsoleCommand, VisorTextTable}
-import org.gridgain.visor.visor._
-
-import scala.collection.JavaConversions._
-import scala.language.{implicitConversions, reflectiveCalls}
-import scala.util.control.Breaks._
-
-/**
- * ==Overview==
- * Contains Visor command `node` implementation.
- *
- * ==Help==
- * {{{
- * +--------------------------------+
- * | node | Prints node statistics. |
- * +--------------------------------+
- * }}}
- *
- * ====Specification====
- * {{{
- *     node "{-id8=<node-id8>|-id=<node-id>} {-a}"
- *     node
- * }}}
- *
- * ====Arguments====
- * {{{
- *     -id8=<node-id8>
- *         ID8 of node. Either '-id8' or '-id' can be specified.
- *         If neither specified - command starts in interactive mode.
- *     -id=<node-id>
- *         Full ID of node. Either '-id8' or '-id' can  be specified.
- *         If neither specified - command starts in interactive mode.
- *     -a
- *         Print extended information.
- *         By default - only abbreviated statistics is printed.
- * }}}
- *
- * ====Examples====
- * {{{
- *     node
- *         Starts command in interactive mode.
- *     node "-id8=12345678"
- *         Prints statistics for specified node.
- *     node "-id8=12345678 -a"
- *         Prints full statistics for specified node.
- * }}}
- */
-class VisorNodeCommand {
-    /**
-     * Prints error message and advise.
-     *
-     * @param errMsgs Error messages.
-     */
-    private def scold(errMsgs: Any*) {
-        assert(errMsgs != null)
-
-        warn(errMsgs: _*)
-        warn("Type 'help node' to see how to use this command.")
-    }
-
-    /**
-     * ===Command===
-     * Run command in interactive mode.
-     *
-     * ===Examples===
-     * <ex>node</ex>
-     * Starts command in interactive mode.
-     */
-    def node() {
-        if (!isConnected)
-            adviseToConnect()
-        else
-            askForNode("Select node from:") match {
-                case Some(id) => ask("Detailed statistics (y/n) [n]: ", "n") 
match {
-                    case "n" | "N" => nl(); node("-id=" + id)
-                    case "y" | "Y" => nl(); node("-a -id=" + id)
-                    case x => nl(); warn("Invalid answer: " + x)
-                }
-                case None => ()
-            }
-    }
-
-    /**
-     * ===Command===
-     * Prints full node information.
-     *
-     * ===Examples===
-     * <ex>node "-id8=12345678"</ex>
-     * Prints information for specified node.
-     *
-     * <ex>node "-id8=12345678 -all"</ex>
-     * Prints full information for specified node.
-     *
-     * @param args Command arguments.
-     */
-    def node(@Nullable args: String) = breakable {
-        if (!isConnected)
-            adviseToConnect()
-        else
-            try {
-                val argLst = parseArgs(args)
-
-                if (argLst.isEmpty)
-                    warn("Missing arguments.").^^
-                else {
-                    val id8 = argValue("id8", argLst)
-                    val id = argValue("id", argLst)
-                    val all = hasArgFlag("a", argLst)
-
-                    var node: ClusterNode = null
-
-                    if (id8.isDefined) {
-                        val ns = nodeById8(id8.get)
-
-                        if (ns.size != 1)
-                            warn("Unknown (invalid) node ID8: " + id8.get).^^
-                        else
-                            node = ns.head
-                    }
-                    else if (id.isDefined)
-                        try
-                            node = grid.node(UUID.fromString(id.get))
-                        catch {
-                            case e: IllegalArgumentException => warn("Invalid 
node ID: " + id.get).^^
-                        }
-                    else
-                        warn("Invalid arguments: " + args).^^
-
-                    if (node != null) {
-                        val t = VisorTextTable()
-
-                        t.autoBorder = false
-
-                        t.maxCellWidth = 60
-
-                        t += ("ID", node.id)
-                        t += ("ID8", nid8(node))
-                        t += ("Order", node.order)
-
-                        (0 /: node.addresses())((b, a) => { t += ("Address (" 
+ b + ")", a); b + 1 })
-
-                        val m = node.metrics
-
-                        val gridName: String = node.attribute(ATTR_GRID_NAME)
-
-                        val ver = GridUtils.productVersion(node)
-                        val verStr = ver.major() + "." + ver.minor() + "." + 
ver.maintenance() +
-                            (if (F.isEmpty(ver.stage())) "" else "-" + 
ver.stage())
-
-                        if (all) {
-                            t += ("OS info", "" +
-                                node.attribute("os.name") + " " +
-                                node.attribute("os.arch") + " " +
-                                node.attribute("os.version")
-                            )
-                            t += ("OS user", node.attribute(ATTR_USER_NAME))
-                            t += ("Deployment mode", 
node.attribute(ATTR_DEPLOYMENT_MODE))
-                            t += ("Language runtime", 
node.attribute(ATTR_LANG_RUNTIME))
-                            t += ("Ignite version", verStr)
-                            t += ("JRE information", 
node.attribute(ATTR_JIT_NAME))
-                            t += ("Non-loopback IPs", node.attribute(ATTR_IPS))
-                            t += ("Enabled MACs", node.attribute(ATTR_MACS))
-                            t += ("Grid name", safe(gridName, "<default>"))
-                            t += ("JVM start time", 
formatDateTime(m.getStartTime))
-                            t += ("Node start time", 
formatDateTime(m.getNodeStartTime))
-                            t += ("Up time", X.timeSpan2HMSM(m.getUpTime))
-                            t += ("CPUs", formatNumber(m.getTotalCpus))
-                            t += ("Last metric update", 
formatDateTime(m.getLastUpdateTime))
-                            t += ("Maximum active jobs", 
formatNumber(m.getMaximumActiveJobs))
-                            t += ("Current active jobs", 
formatNumber(m.getCurrentActiveJobs))
-                            t += ("Average active jobs", 
formatDouble(m.getAverageActiveJobs))
-                            t += ("Maximum waiting jobs", 
formatNumber(m.getMaximumWaitingJobs))
-                            t += ("Current waiting jobs", 
formatNumber(m.getCurrentWaitingJobs))
-                            t += ("Average waiting jobs", 
formatDouble(m.getAverageWaitingJobs))
-                            t += ("Maximum rejected jobs", 
formatNumber(m.getMaximumRejectedJobs))
-                            t += ("Current rejected jobs", 
formatNumber(m.getCurrentRejectedJobs))
-                            t += ("Average rejected jobs", 
formatDouble(m.getAverageRejectedJobs))
-                            t += ("Maximum cancelled jobs", 
formatNumber(m.getMaximumCancelledJobs))
-                            t += ("Current cancelled jobs", 
formatNumber(m.getCurrentCancelledJobs))
-                            t += ("Average cancelled jobs", 
formatDouble(m.getAverageCancelledJobs))
-                            t += ("Total rejected jobs", 
formatNumber(m.getTotalRejectedJobs))
-                            t += ("Total executed jobs", 
formatNumber(m.getTotalExecutedJobs))
-                            t += ("Total cancelled jobs", 
formatNumber(m.getTotalCancelledJobs))
-                            t += ("Maximum job wait time", 
formatNumber(m.getMaximumJobWaitTime) + "ms")
-                            t += ("Current job wait time", 
formatNumber(m.getCurrentJobWaitTime) + "ms")
-                            t += ("Average job wait time", 
formatDouble(m.getAverageJobWaitTime) + "ms")
-                            t += ("Maximum job execute time", 
formatNumber(m.getMaximumJobExecuteTime) + "ms")
-                            t += ("Curent job execute time", 
formatNumber(m.getCurrentJobExecuteTime) + "ms")
-                            t += ("Average job execute time", 
formatDouble(m.getAverageJobExecuteTime) + "ms")
-                            t += ("Total busy time", 
formatNumber(m.getTotalBusyTime) + "ms")
-                            t += ("Busy time %", 
formatDouble(m.getBusyTimePercentage * 100) + "%")
-                            t += ("Current CPU load %", 
formatDouble(m.getCurrentCpuLoad * 100) + "%")
-                            t += ("Average CPU load %", 
formatDouble(m.getAverageCpuLoad * 100) + "%")
-                            t += ("Heap memory initialized", 
formatMemory(m.getHeapMemoryInitialized))
-                            t += ("Heap memory used", 
formatMemory(m.getHeapMemoryUsed))
-                            t += ("Heap memory committed", 
formatMemory(m.getHeapMemoryCommitted))
-                            t += ("Heap memory maximum", 
formatMemory(m.getHeapMemoryMaximum))
-                            t += ("Non-heap memory initialized", 
formatMemory(m.getNonHeapMemoryInitialized))
-                            t += ("Non-heap memory used", 
formatMemory(m.getNonHeapMemoryUsed))
-                            t += ("Non-heap memory committed", 
formatMemory(m.getNonHeapMemoryCommitted))
-                            t += ("Non-heap memory maximum", 
formatMemory(m.getNonHeapMemoryMaximum))
-                            t += ("Current thread count", 
formatNumber(m.getCurrentThreadCount))
-                            t += ("Maximum thread count", 
formatNumber(m.getMaximumThreadCount))
-                            t += ("Total started thread count", 
formatNumber(m.getTotalStartedThreadCount))
-                            t += ("Current daemon thread count", 
formatNumber(m.getCurrentDaemonThreadCount))
-                        }
-                        else {
-                            t += ("OS info", "" +
-                                node.attribute("os.name") + " " +
-                                node.attribute("os.arch") + " " +
-                                node.attribute("os.version")
-                            )
-                            t += ("OS user", node.attribute(ATTR_USER_NAME))
-                            t += ("Deployment mode", 
node.attribute(ATTR_DEPLOYMENT_MODE))
-                            t += ("Language runtime", 
node.attribute(ATTR_LANG_RUNTIME))
-                            t += ("Ignite version", verStr)
-                            t += ("JRE information", 
node.attribute(ATTR_JIT_NAME))
-                            t += ("Grid name", safe(gridName, "<default>"))
-                            t += ("JVM start time", 
formatDateTime(m.getStartTime))
-                            t += ("Node start time", 
formatDateTime(m.getNodeStartTime))
-                            t += ("Up time", X.timeSpan2HMSM(m.getUpTime))
-                            t += ("Last metric update", 
formatDateTime(m.getLastUpdateTime))
-                            t += ("CPUs", formatNumber(m.getTotalCpus))
-                            t += ("Thread count", 
formatNumber(m.getCurrentThreadCount))
-                            t += ("Cur/avg active jobs", 
formatNumber(m.getCurrentActiveJobs) +
-                                "/" + formatDouble(m.getAverageActiveJobs))
-                            t += ("Cur/avg waiting jobs", 
formatNumber(m.getCurrentWaitingJobs) +
-                                "/" + formatDouble(m.getAverageWaitingJobs))
-                            t += ("Cur/avg rejected jobs", 
formatNumber(m.getCurrentRejectedJobs) +
-                                "/" + formatDouble(m.getAverageRejectedJobs))
-                            t += ("Cur/avg cancelled jobs", 
formatNumber(m.getCurrentCancelledJobs) +
-                                "/" + formatDouble(m.getAverageCancelledJobs))
-                            t += ("Cur/avg job wait time", 
formatNumber(m.getCurrentJobWaitTime) +
-                                "/" + formatDouble(m.getAverageJobWaitTime) + 
"ms")
-                            t += ("Cur/avg job execute time", 
formatNumber(m.getCurrentJobExecuteTime) +
-                                "/" + formatDouble(m.getAverageJobExecuteTime) 
+ "ms")
-                            t += ("Cur/avg CPU load %", 
formatDouble(m.getCurrentCpuLoad * 100) +
-                                "/" + formatDouble(m.getAverageCpuLoad * 100) 
+ "%")
-                            t += ("Heap memory used/max", 
formatMemory(m.getHeapMemoryUsed) +
-                                "/" +  formatMemory(m.getHeapMemoryMaximum))
-                        }
-
-                        println("Time of the snapshot: " + 
formatDateTime(System.currentTimeMillis))
-
-                        t.render()
-
-                        if (!all)
-                            println("\nUse \"-a\" flag to see detailed 
statistics.")
-                    }
-                }
-            }
-            catch {
-                case e: Exception => scold(e.getMessage)
-            }
-    }
-}
-
-/**
- * Companion object that does initialization of the command.
- */
-object VisorNodeCommand {
-    // Adds command's help to visor.
-    addHelp(
-        name = "node",
-        shortInfo = "Prints node statistics.",
-        spec = List(
-            "node {-id8=<node-id8>|-id=<node-id>} {-a}",
-            "node"
-        ),
-        args = List(
-            "-id8=<node-id8>" -> List(
-                "Note that either '-id8' or '-id' can be specified and " +
-                    "you can also use '@n0' ... '@nn' variables as shortcut to 
<node-id8>.",
-                "If neither specified - command starts in interactive mode."
-            ),
-            "-id=<node-id>" -> List(
-                "Full ID of node. Either '-id8' or '-id' can  be specified.",
-                "If neither specified - command starts in interactive mode."
-            ),
-            "-a" -> List(
-                "Print extended information.",
-                "By default - only abbreviated statistics is printed."
-            )
-        ),
-        examples = List(
-            "node" ->
-                "Starts command in interactive mode.",
-            "node -id8=12345678" ->
-                "Prints statistics for specified node.",
-            "node -id8=@n0 -a" ->
-                "Prints full statistics for specified node with id8 taken from 
'n0' memory variable."
-        ),
-        ref = VisorConsoleCommand(cmd.node, cmd.node)
-    )
-
-    /** Singleton command. */
-    private val cmd = new VisorNodeCommand
-
-    /**
-     * Singleton.
-     */
-    def apply() = cmd
-
-    /**
-     * Implicit converter from visor to commands "pimp".
-     *
-     * @param vs Visor tagging trait.
-     */
-    implicit def fromNode2Visor(vs: VisorTag) = cmd
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e1c3c8ce/modules/visor-console/src/main/scala/org/gridgain/visor/commands/ping/Packet.scala
----------------------------------------------------------------------
diff --git 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/ping/Packet.scala
 
b/modules/visor-console/src/main/scala/org/gridgain/visor/commands/ping/Packet.scala
deleted file mode 100644
index e1f414b..0000000
--- 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/ping/Packet.scala
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.gridgain.visor.commands
-
-/**
- * ==Command==
- * Visor 'ping' command implementation.
- *
- * ==Help==
- * {{{
- * +--------------------+
- * | ping | Pings node. |
- * +--------------------+
- * }}}
- *
- * ====Specification====
- * {{{
- *     ping {"id81 id82 ... id8k"}
- * }}}
- *
- * ====Arguments====
- * {{{
- *     id8k
- *         ID8 of the node to ping.
- * }}}
- *
- * ====Examples====
- * {{{
- *     ping "12345678"
- *         Pings node with '12345678' ID8.
- *     ping
- *         Pings all nodes in the topology.
- * }}}
- */
-package object ping

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e1c3c8ce/modules/visor-console/src/main/scala/org/gridgain/visor/commands/ping/VisorPingCommand.scala
----------------------------------------------------------------------
diff --git 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/ping/VisorPingCommand.scala
 
b/modules/visor-console/src/main/scala/org/gridgain/visor/commands/ping/VisorPingCommand.scala
deleted file mode 100644
index ce257e6..0000000
--- 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/ping/VisorPingCommand.scala
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * 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.gridgain.visor.commands.ping
-
-import org.apache.ignite.cluster.ClusterNode
-
-import java.util.concurrent._
-
-import org.gridgain.visor._
-import org.gridgain.visor.commands.{VisorConsoleCommand, VisorTextTable}
-import org.gridgain.visor.visor._
-
-import scala.collection.JavaConversions._
-import scala.language.{implicitConversions, reflectiveCalls}
-import scala.util.control.Breaks._
-
-/**
- * Ping result container.
- */
-private class Result {
-    /** Total pings count. */
-    var total = 0
-
-    /** Successful pings count. */
-    var oks = 0
-
-    /** Failed pings count */
-    var fails = 0
-
-    /** Failed nodes. */
-    val failedNodes = collection.mutable.Set.empty[ClusterNode]
-}
-
-/**
- * Thread that pings one node.
- */
-private case class Pinger(n: ClusterNode, res: Result) extends Runnable {
-    assert(n != null)
-    assert(res != null)
-
-    override def run() {
-        val ok = grid.pingNode(n.id())
-
-        res.synchronized {
-            res.total += 1
-
-            if (ok)
-                res.oks += 1
-            else {
-                res.fails += 1
-                res.failedNodes += n
-            }
-        }
-    }
-}
-
-/**
- * ==Command==
- * Visor 'ping' command implementation.
- *
- * ==Help==
- * {{{
- * +--------------------+
- * | ping | Pings node. |
- * +--------------------+
- * }}}
- *
- * ====Specification====
- * {{{
- *     ping {"id81 id82 ... id8k"}
- * }}}
- *
- * ====Arguments====
- * {{{
- *     id8k
- *         ID8 of the node to ping.
- * }}}
- *
- * ====Examples====
- * {{{
- *     ping "12345678"
- *         Pings node with '12345678' ID8.
- *     ping
- *         Pings all nodes in the topology.
- * }}}
- */
-class VisorPingCommand {
-    /**
-     * Prints error message and advise.
-     *
-     * @param errMsgs Error messages.
-     */
-    private def scold(errMsgs: Any*) {
-        assert(errMsgs != null)
-
-        warn(errMsgs: _*)
-        warn("Type 'help ping' to see how to use this command.")
-    }
-
-    /**
-     * ===Command===
-     * Pings node(s) by its ID8.
-     *
-     * ===Examples===
-     * <ex>ping "12345678 56781234"</ex>
-     * Pings nodes with '12345678' and '56781234' ID8s.
-     *
-     * @param args List of node ID8s. If empty or null - pings all nodes in 
the topology.
-     */
-    def ping(args: String) = breakable {
-        if (!isConnected)
-            adviseToConnect()
-        else {
-            val argLst = parseArgs(args)
-
-            val res = new Result()
-
-            var pings = List.empty[Pinger]
-
-            if (argLst.isEmpty)
-                pings ++= grid.nodes().map(Pinger(_, res))
-            else {
-                for (id8 <- argLst) {
-                    if (id8._1 != null || id8._2 == null)
-                        scold("Invalid ID8: " + argName(id8))
-                    else {
-                        val ns = nodeById8(id8._2)
-
-                        if (ns.size() != 1)
-                            scold("Unknown ID8: " + argName(id8))
-                        else
-                            pings +:= Pinger(ns.head, res)
-                    }
-                }
-            }
-
-            if (pings.isEmpty)
-                scold("Topology is empty.")
-            else {
-                try
-                    pings.map(pool.submit(_)).foreach(_.get)
-                catch {
-                    case _: RejectedExecutionException => scold("Ping failed 
due to system error.").^^
-                }
-
-                val t = VisorTextTable()
-
-                // No synchronization on 'res' is needed since all threads
-                // are finished and joined.
-                t += ("Total pings", res.total)
-                t += ("Successful pings", res.oks + " (" + formatInt(100 * 
res.oks / res.total) + "%)")
-                t += ("Failed pings", res.fails + " (" + formatInt(100 * 
res.fails / res.total) + "%)")
-
-                if (res.failedNodes.nonEmpty)
-                    t += ("Failed nodes", res.failedNodes.map(n => 
nodeId8Addr(n.id)))
-
-                t.render()
-            }
-        }
-    }
-
-    /**
-     * ===Command===
-     * Pings all nodes in the topology.
-     *
-     * ===Examples===
-     * <ex>ping</ex>
-     * Pings all nodes in the topology.
-     */
-    def ping() {
-        ping("")
-    }
-}
-
-/**
- * Companion object that does initialization of the command.
- */
-object VisorPingCommand {
-    // Adds command's help to visor.
-    addHelp(
-        name = "ping",
-        shortInfo = "Pings node.",
-        spec = List("ping <id81> <id82> ... <id8k>"),
-        args = List(
-            ("<id8k>",
-                "ID8 of the node to ping. Note you can also use '@n0' ... 
'@nn' variables as shortcut to <id8k>.")
-        ),
-        examples = List(
-            "ping 12345678" ->
-                "Pings node with '12345678' ID8.",
-            "ping @n0" ->
-                "Pings node with 'specified node with ID8 taken from 'n0' 
memory variable.",
-            "ping" ->
-                "Pings all nodes in the topology."
-        ),
-        ref = VisorConsoleCommand(cmd.ping, cmd.ping)
-    )
-
-    /** Singleton command. */
-    private val cmd = new VisorPingCommand
-
-    /**
-     * Singleton.
-     */
-    def apply() = cmd
-
-    /**
-     * Implicit converter from visor to commands "pimp".
-     *
-     * @param vs Visor tagging trait.
-     */
-    implicit def fromPing2Visor(vs: VisorTag) = cmd
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e1c3c8ce/modules/visor-console/src/main/scala/org/gridgain/visor/commands/start/Packet.scala
----------------------------------------------------------------------
diff --git 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/start/Packet.scala
 
b/modules/visor-console/src/main/scala/org/gridgain/visor/commands/start/Packet.scala
deleted file mode 100644
index df69ac1..0000000
--- 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/start/Packet.scala
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.gridgain.visor.commands
-
-/**
- * ==Overview==
- * Contains Visor command `start` implementation.
- *
- * ==Help==
- * {{{
- * +-----------------------------------------------------+
- * | start | Starts one or more nodes on remote host(s). |
- * |       | Uses SSH protocol to execute commands.      |
- * +-----------------------------------------------------+
- * }}}
- *
- * ====Specification====
- * {{{
- *     start "-f=<path> {-m=<num>} {-r}"
- *     start "-h=<hostname> {-p=<num>} {-u=<username>} {-pw=<password>} 
{-k=<path>}
- *         {-n=<num>} {-g=<path>} {-c=<path>} {-s=<path>} {-m=<num>} {-r}"
- * }}}
- *
- * ====Arguments====
- * {{{
- *     -f=<path>
- *         Path to INI file that contains topology specification.
- *     -h=<hostname>
- *         Hostname where to start nodes.
- *
- *         Can define several hosts if their IPs are sequential.
- *         Example of range is 192.168.1.100~150,
- *         which means all IPs from 192.168.1.100 to 192.168.1.150 inclusively.
- *     -p=<num>
- *         Port number (default is 22).
- *     -u=<username>
- *         Username (if not defined, current local username will be used).
- *     -pw=<password>
- *         Password (if not defined, private key file must be defined).
- *     -k=<path>
- *         Path to private key file. Define if key authentication is used.
- *     -n=<num>
- *         Expected number of nodes on the host.
- *         If some nodes are started already, then only remaining nodes will 
be started.
- *         If current count of nodes is equal to this number and '-r' flag is 
not set, then nothing will happen.
- *     -g=<path>
- *         Path to GridGain installation folder.
- *         If not defined, GRIDGAIN_HOME environment variable must be set on 
remote hosts.
- *     -c=<path>
- *         Path to configuration file (relative to GridGain home).
- *         If not provided, default GridGain configuration is used.
- *     -s=<path>
- *         Path to start script (relative to GridGain home).
- *         Default is "bin/ggstart.sh" for Unix or
- *         "bin\ggstart.bat" for Windows.
- *     -m=<num>
- *         Defines maximum number of nodes that can be started in parallel on 
one host.
- *         This actually means number of parallel SSH connections to each SSH 
server.
- *         Default is 5.
- *     -r
- *         Indicates that existing nodes on the host will be restarted.
- *         By default, if flag is not present, existing nodes will be left as 
is.
- * }}}
- *
- * ====Examples====
- * {{{
- *     start "-h=10.1.1.10 -u=uname -pw=passwd -n=3"
- *         Starts three nodes with default configuration (password 
authentication).
- *     start "-h=192.168.1.100~104 -u=uname -k=/home/uname/.ssh/is_rsa -n=5"
- *         Starts 25 nodes on 5 hosts (5 nodes per host) with default 
configuration (key-based authentication).
- *     start "-f=start-nodes.ini -r"
- *         Starts topology defined in 'start-nodes.ini' file. Existing nodes 
are stopped.
- * }}}
- */
-package object start

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e1c3c8ce/modules/visor-console/src/main/scala/org/gridgain/visor/commands/start/VisorStartCommand.scala
----------------------------------------------------------------------
diff --git 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/start/VisorStartCommand.scala
 
b/modules/visor-console/src/main/scala/org/gridgain/visor/commands/start/VisorStartCommand.scala
deleted file mode 100644
index 6356ca5..0000000
--- 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/start/VisorStartCommand.scala
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
- * 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.gridgain.visor.commands.start
-
-import org.apache.ignite._
-
-import java.io._
-import java.util.concurrent._
-
-import org.apache.ignite.internal.util.GridUtils
-import org.apache.ignite.internal.util.typedef.internal.U
-import org.gridgain.visor._
-import org.gridgain.visor.commands.{VisorConsoleCommand, VisorTextTable}
-import org.gridgain.visor.visor._
-
-import scala.collection.JavaConversions._
-import scala.language.{implicitConversions, reflectiveCalls}
-import scala.util.control.Breaks._
-
-/**
- * Node start attempt result.
- */
-private case class Result(
-    host: String,
-    ok: Boolean,
-    errMsg: String = null
-) {
-    assert(host != null)
-}
-
-/**
- * ==Overview==
- * Contains Visor command `start` implementation.
- *
- * ==Help==
- * {{{
- * +-----------------------------------------------------+
- * | start | Starts one or more nodes on remote host(s). |
- * |       | Uses SSH protocol to execute commands.      |
- * +-----------------------------------------------------+
- * }}}
- *
- * ====Specification====
- * {{{
- *     start "-f=<path> {-m=<num>} {-r}"
- *     start "-h=<hostname> {-p=<num>} {-u=<username>} {-pw=<password>} 
{-k=<path>}
- *         {-n=<num>} {-g=<path>} {-c=<path>} {-s=<path>} {-m=<num>} {-r}"
- * }}}
- *
- * ====Arguments====
- * {{{
- *     -f=<path>
- *         Path to INI file that contains topology specification.
- *     -h=<hostname>
- *         Hostname where to start nodes.
- *
- *         Can define several hosts if their IPs are sequential.
- *         Example of range is 192.168.1.100~150,
- *         which means all IPs from 192.168.1.100 to 192.168.1.150 inclusively.
- *     -p=<num>
- *         Port number (default is 22).
- *     -u=<username>
- *         Username (if not defined, current local username will be used).
- *     -pw=<password>
- *         Password (if not defined, private key file must be defined).
- *     -k=<path>
- *         Path to private key file. Define if key authentication is used.
- *     -n=<num>
- *         Expected number of nodes on the host.
- *         If some nodes are started already, then only remaining nodes will 
be started.
- *         If current count of nodes is equal to this number and '-r' flag is 
not set, then nothing will happen.
- *     -g=<path>
- *         Path to GridGain installation folder.
- *         If not defined, GRIDGAIN_HOME environment variable must be set on 
remote hosts.
- *     -c=<path>
- *         Path to configuration file (relative to GridGain home).
- *         If not provided, default GridGain configuration is used.
- *     -s=<path>
- *         Path to start script (relative to GridGain home).
- *         Default is "bin/ggstart.sh" for Unix or
- *         "bin\ggstart.bat" for Windows.
- *     -m=<num>
- *         Defines maximum number of nodes that can be started in parallel on 
one host.
- *         This actually means number of parallel SSH connections to each SSH 
server.
- *         Default is 5.
- *     -t=<num>
- *         Defines connection timeout in milliseconds.
- *         Default is 2000.
- *     -r
- *         Indicates that existing nodes on the host will be restarted.
- *         By default, if flag is not present, existing nodes will be left as 
is.
- * }}}
- *
- * ====Examples====
- * {{{
- *     start "-h=10.1.1.10 -u=uname -pw=passwd -n=3"
- *         Starts three nodes with default configuration (password 
authentication).
- *     start "-h=192.168.1.100~104 -u=uname -k=/home/uname/.ssh/is_rsa -n=5"
- *         Starts 25 nodes on 5 hosts (5 nodes per host) with default 
configuration (key-based authentication).
- *     start "-f=start-nodes.ini -r"
- *         Starts topology defined in 'start-nodes.ini' file. Existing nodes 
are stopped.
- * }}}
- */
-class VisorStartCommand {
-    /** Default maximum number of parallel connections. */
-    private final val DFLT_MAX_CONN = 5
-
-    /** Default connection timeout. */
-    private final val DFLT_TIMEOUT = 2000
-
-    /**
-     * Prints error message and advise.
-     *
-     * @param errMsgs Error messages.
-     */
-    private def scold(errMsgs: Any*) {
-        assert(errMsgs != null)
-
-        nl()
-
-        warn(errMsgs: _*)
-        warn("Type 'help start' to see how to use this command.")
-    }
-
-    /**
-     * Catch point for missing arguments case.
-     */
-    def start() {
-        scold("Missing arguments.")
-    }
-
-    /**
-     * ===Command===
-     * Starts or restart one or more nodes on remote host.
-     * Uses SSH protocol to execute commands.
-     *
-     * ===Examples===
-     * <ex>start "-h=uname:passwd@host#3"</ex>
-     * Starts three nodes with default configuration (password authentication).
-     *
-     * <ex>start "-h=uname@host#3 -k=ssh-key.pem"</ex>
-     * Starts three nodes with default configuration (key authentication).
-     *
-     * <ex>start "-f=hosts.txt -c=config/spring.xml"</ex>
-     * Reads `hosts.txt` file and starts nodes with provided configuration.
-     *
-     * @param args Command arguments.
-     */
-    def start(args: String) = breakable {
-        assert(args != null)
-
-        if (!isConnected)
-            adviseToConnect()
-        else {
-            val argLst = parseArgs(args)
-
-            val fileOpt = argValue("f", argLst)
-            val hostOpt = argValue("h", argLst)
-            val portOpt = argValue("p", argLst)
-            val unameOpt = argValue("u", argLst)
-            val passwdOpt = argValue("pw", argLst)
-            val keyOpt = argValue("k", argLst)
-            val nodesOpt = argValue("n", argLst)
-            val ggHomeOpt = argValue("g", argLst)
-            val cfgOpt = argValue("c", argLst)
-            val scriptOpt = argValue("s", argLst)
-            val maxConnOpt = argValue("m", argLst)
-            val timeoutOpt = argValue("t", argLst)
-            val restart = hasArgFlag("r", argLst)
-
-            val maxConn = maxConnOpt match {
-                case None => DFLT_MAX_CONN
-                case Some(mc) =>
-                    try {
-                        mc.toInt
-                    }
-                    catch {
-                        case e: NumberFormatException =>
-                            scold("Invalid maximum number of parallel 
connections: " + maxConnOpt.get).^^
-
-                        0 // Never happens.
-                    }
-            }
-
-            if (maxConn <= 0)
-                scold("Invalid maximum number of parallel connections: " + 
maxConn).^^
-
-            val timeout = timeoutOpt match {
-                case None => DFLT_TIMEOUT
-                case Some(to) =>
-                    try {
-                        to.toInt
-                    }
-                    catch {
-                        case e: NumberFormatException =>
-                            scold("Invalid timeout: " + to).^^
-
-                        0 // Never happens.
-                    }
-            }
-
-            if (timeout <= 0)
-                scold("Invalid connection timeout: " + timeout).^^
-
-            var res = Seq.empty[Result]
-
-            if (fileOpt.isDefined) {
-                val file = new File(fileOpt.get)
-
-                if (!file.exists())
-                    scold("File not found: " + file.getAbsolutePath).^^
-
-                if (file.isDirectory)
-                    scold("File is a directory: " + file.getAbsolutePath).^^
-
-                try
-                    res = grid.startNodes(file, restart, timeout, 
maxConn).map(t => {
-                        Result(t.get1, t.get2, t.get3)
-                    }).toSeq
-                catch {
-                    case e: IgniteCheckedException => scold(e.getMessage).^^
-                    case _: RejectedExecutionException => scold("Failed due to 
system error.").^^
-                }
-            }
-            else {
-                if (hostOpt.isEmpty)
-                    scold("Hostname is required.").^^
-
-                val port: java.lang.Integer =
-                    try {
-                        if (portOpt.isDefined) portOpt.get.toInt else 
null.asInstanceOf[java.lang.Integer]
-                    }
-                    catch {
-                        case e: NumberFormatException => scold("Invalid port 
number: " + portOpt.get).^^
-
-                        0 // Never happens.
-                    }
-
-                if (port != null && port <= 0)
-                    scold("Invalid port number: " + port).^^
-
-                val keyFile = if (keyOpt.isDefined) new File(keyOpt.get) else 
null
-
-                if (keyFile != null && (!keyFile.exists || !keyFile.isFile))
-                    scold("File not found: " + keyFile.getAbsolutePath).^^
-
-                val nodes: java.lang.Integer =
-                    try {
-                        if (nodesOpt.isDefined) nodesOpt.get.toInt else 
null.asInstanceOf[java.lang.Integer]
-                    }
-                    catch {
-                        case e: NumberFormatException => scold("Invalid number 
of nodes: " + nodesOpt.get).^^
-
-                        0 // Never happens.
-                    }
-
-                if (nodes != null && nodes <= 0)
-                    scold("Invalid number of nodes: " + nodes).^^
-
-                val params: Map[String, AnyRef] = Map(
-                    "host" -> hostOpt.get,
-                    "port" -> port,
-                    "uname" -> unameOpt.orNull,
-                    "passwd" -> passwdOpt.orNull,
-                    "key" -> keyFile,
-                    "nodes" -> nodes,
-                    "ggHome" -> ggHomeOpt.orNull,
-                    "cfg" -> cfgOpt.orNull,
-                    "script" -> scriptOpt.orNull
-                )
-
-                try
-                    res = grid.startNodes(asJavaCollection(Seq(params)), null, 
restart, timeout, maxConn).
-                        map(t => Result(t.get1, t.get2, t.get3)).toSeq
-                catch {
-                    case e: IgniteCheckedException => scold(e.getMessage).^^
-                    case _: RejectedExecutionException => scold("Failed due to 
system error.").^^
-                }
-            }
-
-            val resT = VisorTextTable()
-
-            resT += ("Successful start attempts", res.count(_.ok))
-            resT += ("Failed start attempts", res.count(!_.ok))
-
-            resT.render()
-
-            if (res.exists(!_.ok)) {
-                nl()
-
-                println("Errors:")
-
-                val errT = VisorTextTable()
-
-                errT.maxCellWidth = 70
-
-                errT #= ("Host", "Error")
-
-                res.filter(!_.ok) foreach (r => { errT += (r.host, 
r.errMsg.replace("\t", " ").split(GridUtils.nl()).toSeq) })
-
-                errT.render()
-            }
-
-            nl()
-
-            println("Type 'top' to see current topology.")
-
-            nl()
-
-            println("NOTE:")
-            println("    - Successful start attempt DOES NOT mean that node 
actually started.")
-            println("    - For large topologies (> 100s nodes) it can take 
over 10 minutes for all nodes to start.")
-            println("    - See individual node log for details.")
-        }
-    }
-}
-
-/**
- * Companion object that does initialization of the command.
- */
-object VisorStartCommand {
-    addHelp(
-        name = "start",
-        shortInfo = "Starts or restarts nodes on remote hosts.",
-        longInfo = List(
-            "Starts one or more nodes on remote host(s).",
-            "Uses SSH protocol to execute commands."
-        ),
-        spec = List(
-            "start -f=<path> {-m=<num>} {-r}",
-            "start -h=<hostname> {-p=<num>} {-u=<username>} {-pw=<password>} 
{-k=<path>}",
-                "{-n=<num>} {-g=<path>} {-c=<path>} {-s=<path>} {-m=<num>} 
{-r}"
-        ),
-        args = List(
-            "-f=<path>" -> List(
-                "Path to INI file that contains topology specification."
-            ),
-            "-h=<hostname>" -> List(
-                "Hostname where to start nodes.",
-                " ",
-                "Can define several hosts if their IPs are sequential.",
-                "Example of range is 192.168.1.100~150,",
-                "which means all IPs from 192.168.1.100 to 192.168.1.150 
inclusively."
-            ),
-            "-p=<num>" -> List(
-                "Port number (default is 22)."
-            ),
-            "-u=<username>" -> List(
-                "Username (if not defined, current local username will be 
used)."
-            ),
-            "-pw=<password>" -> List(
-                "Password (if not defined, private key file must be defined)."
-            ),
-            "-k=<path>" -> List(
-                "Path to private key file. Define if key authentication is 
used."
-            ),
-            "-n=<num>" -> List(
-                "Expected number of nodes on the host.",
-                "If some nodes are started already, then only remaining nodes 
will be started.",
-                "If current count of nodes is equal to this number and '-r' 
flag is not set, then nothing will happen."
-            ),
-            "-g=<path>" -> List(
-                "Path to GridGain installation folder.",
-                "If not defined, GRIDGAIN_HOME environment variable must be 
set on remote hosts."
-            ),
-            "-c=<path>" -> List(
-                "Path to configuration file (relative to GridGain home).",
-                "If not provided, default GridGain configuration is used."
-            ),
-            "-s=<path>" -> List(
-                "Path to start script (relative to GridGain home).",
-                "Default is \"bin/ggstart.sh\" for Unix or",
-                "\"bin\\ggstart.bat\" for Windows."
-            ),
-            "-m=<num>" -> List(
-                "Defines maximum number of nodes that can be started in 
parallel on one host.",
-                "This actually means number of parallel SSH connections to 
each SSH server.",
-                "Default is 5."
-            ),
-            "-t=<num>" -> List(
-                "Defines connection timeout in milliseconds.",
-                "Default is 2000."
-            ),
-            "-r" -> List(
-                "Indicates that existing nodes on the host will be restarted.",
-                "By default, if flag is not present, existing nodes will be 
left as is."
-            )
-        ),
-        examples = List(
-            "start -h=10.1.1.10 -u=uname -pw=passwd -n=3" ->
-                "Starts three nodes with default configuration (password 
authentication).",
-            "start -h=192.168.1.100~104 -u=uname -k=/home/uname/.ssh/is_rsa 
-n=5" ->
-                "Starts 25 nodes on 5 hosts (5 nodes per host) with default 
configuration (key-based authentication).",
-            "start -f=start-nodes.ini -r" ->
-                "Starts topology defined in 'start-nodes.ini' file. Existing 
nodes are stopped."
-        ),
-        ref = VisorConsoleCommand(cmd.start, cmd.start)
-    )
-
-    /** Singleton command. */
-    private val cmd = new VisorStartCommand
-
-    /**
-     * Singleton.
-     */
-    def apply() = cmd
-
-    /**
-     * Implicit converter from visor to commands "pimp".
-     *
-     * @param vs Visor tagging trait.
-     */
-    implicit def fromStart2Visor(vs: VisorTag) = cmd
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e1c3c8ce/modules/visor-console/src/main/scala/org/gridgain/visor/commands/tasks/Packet.scala
----------------------------------------------------------------------
diff --git 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/tasks/Packet.scala
 
b/modules/visor-console/src/main/scala/org/gridgain/visor/commands/tasks/Packet.scala
deleted file mode 100644
index 917dc6f..0000000
--- 
a/modules/visor-console/src/main/scala/org/gridgain/visor/commands/tasks/Packet.scala
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * 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.gridgain.visor.commands
-
-/**
- * ==Overview==
- * Visor 'tasks' command implementation.
- *
- * ==Help==
- * {{{
- * 
+---------------------------------------------------------------------------------------+
- * | tasks | Prints statistics about tasks and executions.                     
            |
- * |       |                                                                   
            |
- * |       | Note that this command depends on GridGain events.                
            |
- * |       |                                                                   
            |
- * |       | GridGain events can be individually enabled and disabled and 
disabled events  |
- * |       | can affect the results produced by this command. Note also that 
configuration |
- * |       | of Event Storage SPI that is responsible for temporary storage of 
generated   |
- * |       | events on each node can also affect the functionality of this 
command.        |
- * |       |                                                                   
            |
- * |       | By default - all events are enabled and GridGain stores last 
10,000 local     |
- * |       | events on each node. Both of these defaults can be changed in 
configuration.  |
- * 
+---------------------------------------------------------------------------------------+
- * }}}
- *
- * ====Specification====
- * {{{
- *     tasks
- *     tasks "-l {-t=<num>s|m|h|d} {-r}"
- *     tasks "-s=<substring> {-t=<num>s|m|h|d} {-r}"
- *     tasks "-g {-t=<num>s|m|h|d} {-r}"
- *     tasks "-h {-t=<num>s|m|h|d} {-r}"
- *     tasks "-n=<task-name> {-r}"
- *     tasks "-e=<exec-id>"
- * }}}
- *
- * ====Arguments====
- * {{{
- *     -l
- *         List all tasks and executions for a given time period.
- *         Executions sorted chronologically (see '-r'), and tasks 
alphabetically
- *         See '-t=<num>s|m|h|d' on how to specify the time limit.
- *         Default time period is one hour, i.e '-t=1h'
- *
- *         This is a default mode when command is called without parameters.
- *     -s=<substring>
- *         List all tasks and executions for a given task name substring.
- *         Executions sorted chronologically (see '-r'), and tasks 
alphabetically
- *         See '-t=<num>s|m|h|d' on how to specify the time limit.
- *         Default time period is one hour, i.e '-t=1h'
- *     -g
- *         List all tasks grouped by nodes for a given time period.
- *         Tasks sorted alphabetically
- *         See '-t=<num>s|m|h|d' on how to specify the time limit.
- *         Default time period is one hour, i.e '-t=1h'
- *     -h
- *         List all tasks grouped by hosts for a given time period.
- *         Tasks sorted alphabetically
- *         See '-t=<num>s|m|h|d' on how to specify the time limit.
- *         Default time period is one hour, i.e '-t=1h'
- *     -t=<num>s|m|h|d
- *         Defines time frame for '-l' parameter:
- *            =<num>s Last <num> seconds.
- *            =<num>m Last <num> minutes.
- *            =<num>h Last <num> hours.
- *            =<num>d Last <num> days.
- *     -r
- *         Reverse sorting of executions.
- *     -n=<task-name>
- *         Prints aggregated statistic for named task.
- *     -e=<exec-id>
- *         Prints aggregated statistic for given task execution.
- * }}}
- *
- * ====Examples====
- * {{{
- *     tasks "-l"
- *         Prints list of all tasks and executions for the last hour (default).
- *     tasks
- *         Prints list of all tasks and executions for the last hour (default).
- *     tasks "-l -t=5m"
- *         Prints list of tasks and executions that started during last 5 
minutes.
- *     tasks "-s=Task"
- *         Prints list of all tasks and executions that have 'Task' in task 
name.
- *     tasks "-g"
- *         Prints list of tasks grouped by nodes.
- *     tasks "-g -t=5m"
- *         Prints list of tasks that started during last 5 minutes grouped by 
nodes.
- *     tasks "-h"
- *         Prints list of tasks grouped by hosts.
- *     tasks "-h -t=5m"
- *         Prints list of tasks that started during last 5 minutes grouped by 
hosts.
- *     tasks "-n=GridTask"
- *         Prints summary for task named 'GridTask'.
- *     tasks "-e=7D5CB773-225C-4165-8162-3BB67337894B"
- *         Traces task execution with ID 
'7D5CB773-225C-4165-8162-3BB67337894B'.
- *     tasks "-e=@e1"
- *         Traces task execution with ID taken from 'e1' memory variable.
- * }}}
- */
-package object tasks

Reply via email to