ID | IEP-88 |
Author | |
Sponsor | |
Created |
|
Status | ACTIVE |
Ignite 3 CLI tool is a command-line utility that acts as an entry point for all monitoring and management operations with Apache Ignite clusters. A user should download the tool from the website and then use it to:
The tool should be designed and developed with an explicit focus on usability and respect for https://clig.dev/#guidelines. In addition to regular commands, it should feature a fully-fledged REPL for different functions. REPL mode must provide the following capabilities:
REPL mode is used by default and is activated if the ignite3
command is executed without parameters.
The tool should connect to a remote cluster via REST endpoints provided by the cluster. For SQL REPL mode the JDBC is used.
Benefits of using REST as a communication realization between CLI and Ignite 3 cluster:
If a user makes a mistake in syntax, an appropriate error message should be shown. It must describe what exactly is wrong. Possible options: unknown command, unknown parameter, missing mandatory parameter, etc.
In non-REPL mode, if a user attempts to execute a command that is only available in REPL, the tool should suggest using the REPL mode.
Errors and messing should be sent into stderr. The output of commands should be sent to stdout.
Generally (exclusions are defined on a case-by-case basis), every parameter for every command should have two name aliases: a long version starting with two dashes (e.g., --cluster-endpoint-url
), and an optional short single-character version starting with a single dash (e.g., -u
).
The long version name can be separated from the value by either a space or by ‘=’:
--cluster-endpoint-url localhost:8080
--cluster-endpoint-url=localhost:8080
The short version name can be separated from the value only by a space:
-u localhost:8080
Options without a value (i.e. on-off switches) are allowed. If several such options in a single command are provided using their short names, they can be collapsed. For example, ignite3 -a -b -c
is equivalent to ignite -abc
.
There's a -v | --verbose
parameter which turns on additional logging which can help with debugging errors.
CLI tool should have configurable defaults. They could be placed in the config file and modified by the user. Also, a special command can be used to set the default value. For example:
ignite3 cli config set ignite.cluster-endpoint-url=http://localhost:3344
The configuration file location should be configurable through environment variable:
export IGNITE_CLI_CONFIG_FILE=./.config/path
ignite3 topology
Exit codes have to be mapped with Ignite 3 error codes.
KsqlDB can be queried from Ksql CLI https://docs.ksqldb.io/en/latest/operate-and-deploy/installation/cli-config/.
https://github.com/hazelcast/hazelcast-commandline-client
https://docs.snowflake.com/en/user-guide/snowsql-use.html
Help must be available for every command and should include at least the following:
REPL mode
command spec | alias | description |
---|---|---|
help | Full list of commands with their descriptions | |
help <command> | <command> --help[-h] | Detailed help for a specific command |
non-REPL mode
command spec | alias | description |
---|---|---|
ignite3 help | Full list of commands with their descriptions | |
ignite3 help <command> | ignite3 <command> --help[-h] | Detailed help for a specific command |
This is a REPL-only command.
command spec | description |
---|---|
clear | Clear the terminal |
Stop current interactive session. This is a REPL-only command.
command spec | description |
---|---|
exit | Exit from interactive mode |
Connects to a cluster. This is a REPL-only command.
command spec | description |
---|---|
connect [cluster-endpoint-url] | Create a session for the cluster, i.e. subsequent commands do not require the cluster URL anymore |
Disconnects the current session. This is a REPL-only command.
command spec | description |
---|---|
disconnect | Disconnect the current session |
REPL mode
command spec | description |
---|---|
sql [--jdbc-url] [--script-file | query] | If executed without |
non-REPL mode
command spec | description |
---|---|
ignite3 sql [--jdbc-url] <--script-file | query> | Execute sql query and print the result |
REPL mode
command spec | alias | description |
---|---|---|
version | Show the version of the CLI Tool |
non-REPL mode
command spec | alias | description |
---|---|---|
ignite3 version | ignite3 --version | Show the version of the CLI Tool |
Initializes cluster in a way described in IEP-77.
REPL mode
command spec | description |
---|---|
cluster init [--cluster-endpoint-url] <--meta-storage-node> [--cmg-node] <--cluster-name> | Initialize the cluster |
non-REPL mode
command spec | description |
---|---|
ignite3 cluster init [--cluster-endpoint-url] <--meta-storage-node> [--cmg-node] <--cluster-name> | Initialize the cluster |
meta-storage-node
is a list with a minimum 1 argument, cmg-node
is a list but could be empty.
Show the detailed status of the cluster including its name, status, and the number of nodes in physical topology.
REPL mode
command spec | description |
---|---|
cluster status [--cluster-endpoint-url] | Show the status of the cluster |
non-REPL mode
command spec | description |
---|---|
ignite3 cluster status [--cluster-endpoint-url] | Show the status of the cluster |
Has to be rendered in HOCON format.
REPL mode
command spec | description |
---|---|
cluster config show [--cluster-endpoint-url] [selector] | Show cluster configuration |
non-REPL mode
command spec | description |
---|---|
ignite3 cluster config show [--cluster-endpoint-url] [selector] | Show cluster configuration |
REPL mode
command spec | description |
---|---|
cluster config update [--cluster-endpoint-url] <config in HOCON format or path to file> | Update the cluster configuration with provided HOCON configuration |
non-REPL mode
command spec | description |
---|---|
ignite3 cluster config update [--cluster-endpoint-url] <config in HOCON format or path to file> | Update the cluster configuration with provided HOCON configuration |
According to the join protocol, we are going to have two types of node topologies: "physical" (a.k.a. network) topology and "logical" topology. It may be convenient for the user to know which nodes have passed validation and have joined the logical topology, therefore it is suggested to implement a CLI command for this purpose.
Response example:
consistent ID, ID, address, status
node 1, e2d4988a-b836-4e7e-a888-2639e6f79ef0, 127.0.0.1
node 2, 5cb561fc-1963-4f95-98f8-deb407669a86, 127.0.0.2
REPL mode
command spec | description |
---|---|
cluster topology physical [--cluster-endpoint-url] | Show the physical topology of the cluster |
non-REPL mode
command spec | description |
---|---|
ignite3 cluster topology physical [--cluster-endpoint-url] | Show the physical topology of the cluster |
REPL mode
command spec | description |
---|---|
cluster topology logical [--cluster-endpoint-url] | Show the logical topology of the cluster |
non-REPL mode
command spec | description |
---|---|
ignite3 cluster topology logical [--cluster-endpoint-url] | Show the logical topology of the cluster |
Shows the status of the node. Could be starting, started, stopping, and recovering.
REPL mode
command spec | description |
---|---|
node status [--node-url] | Shows the node status |
non-REPL mode
command spec | description |
---|---|
ignite3 node status [--node-url] | Shows the node status |
Has to be rendered in HOCON format.
REPL mode
command spec | description |
---|---|
node config show [--node-url] [selector] | Read the local node configuration |
non-REPL mode
command spec | description |
---|---|
ignite3 node config show [--node-url] [selector] | Read the local node configuration |
REPL mode
command spec | description |
---|---|
node config update [--node-url] <config in HOCON format or path to file> | Update the connected local node configuration with provided HOCON configuration |
non-REPL mode
command spec | description |
---|---|
ignite3 node config update [--node-url] <config in HOCON format or path to file> | Update the local node configuration with provided HOCON configuration |
REPL mode
command spec | description |
---|---|
node version | Show the ignite node build version |
non-REPL mode
command spec | description |
---|---|
ignite3 node version | Show the ignite node build version |
REPL mode
command spec | description |
---|---|
node metric enable [--node-url] <srcName> | Enable node metric source |
non-REPL mode
command spec | description |
---|---|
ignite3 node metric enable [--node-url] <srcName> | Enable node metric source |
REPL mode
command spec | description |
---|---|
node metric disable [--node-url] <srcName> | Disable node metric source |
non-REPL mode
command spec | description |
---|---|
ignite3 node metric disable [--node-url] <srcName> | Disable node metric source |
REPL mode
command spec | description |
---|---|
node metric list [--node-url] | List node metric sources |
non-REPL mode
command spec | description |
---|---|
ignite3 node metric list [--node-url] | List node metric sources |
REPL mode
command spec | description |
---|---|
cli config get <config key> | Show the config value for the current profile. |
non-REPL mode
command spec | description |
---|---|
ignite3 cli config get [--profile] <config key> | Show the config value for the specified or default profile. |
REPL mode
command spec | description |
---|---|
cli config set <config key-value> | Set the config value for the current profile. |
non-REPL mode
command spec | description |
---|---|
ignite3 cli config set [--profile] <config key-value> | Set the config value for the specified or default profile. |
REPL mode
command spec | description |
---|---|
cli config show | Show the config contents for the current profile. |
non-REPL mode
command spec | description |
---|---|
ignite3 cli config show [--profile] | Show the config contents for the specified or default profile. |
REPL mode
command spec | description |
---|---|
cli config profile show | Show current default profile of CLI Tool |
non-REPL mode
command spec | description |
---|---|
ignite3 cli config show | Show current default profile |
REPL mode
command spec | description |
---|---|
cli config profile list | List profiles of CLI Tool |
non-REPL mode
command spec | description |
---|---|
ignite3 cli config list | List profiles |
cli config profile activate
REPL mode
command spec | description |
---|---|
cli config profile activate <profileName> | Activate profile as default for CLI Tool |
non-REPL mode
command spec | description |
---|---|
ignite3 cli config profile activate <profileName> | Activate profile as default for CLI Tool |
REPL mode
command spec | description |
---|---|
cli config profile create [--name -n] [--copy-from -c] [--activate -a] | Create new profile and optionally copy content from another profile and optionally activate new profile as default for CLI Tool |
non-REPL mode
command spec | description |
---|---|
ignite3 cli config profile create [--name -n] [--copy-from -c] [--activate -a] | Create new profile and optionally copy content from another profile and optionally activate new profile as default for CLI Tool |