View Source

{section}
{column:width=50%}

h1. Usage of Petals CLI

{code}
usage: Petals JMX Command Line Interface

[-d] [-y] [-h <host>] [-n <port>] [-u <user>] [-p <password>] [-H | -V | -f <file> | -c <command> <command-args> | -C]

-c,--command <command> Execute a command given on the command line.
-C,--console Enable the mode 'console'.
-d,--debug Print stack trace and debugging informations
-f,--file <filename> Enable the script file execution. If filename is '-', commands are read from the stdin.
-H,--help Print this help message and exit.
-h,--host <host> remote petals ESB host name.
-n,--port <port> port number.
-p,--password <password> password.
-u,--user <user> username.
-V,--version Print the version number and exit.

Which evolution would you like on Petals? Share it! http://www.petalslink.com/feedback
{code}

h1. Available commands of Petals CLI

When launched petals-cli, it offers the following commands :
- *deploy*: Deploy and start a JBI artifact in petals container.
- *exit*: Exit this shell.
- *help*: Display this help message or help for a specific command.
- *listartefacts*: List JBI artifacts name and current status.
- *listregistry*: List the entries of the registry.
- *load*: Load properties from files.
- *print*: Print a message.
- *pwd*: Print the working directory.
- *set*: Assign a value to the system property named key.
- *show*: Print informations about a JBI artifact.
- *shutdown*: Shutdown the container.
- *stop*: Stop the container.
- *undeploy*: Stop and uninstall or undeploy JBI artifacts.
- *version*: Print version informations about petals container.

{column}
{column:width=25%}
{panel:title=Table of contents}{toc}{panel}
{panel:title=Contributors}{contributors:order=name|mode=list}{panel}
{column}
{section}

h1. Use cases

Petals CLI realizes the following use-cases.

h2. Petals CLI capabilities about script and shell usages

h3. Interactive console

Launching the Petals CLI with the following command line starts an interactive console with a prompt where the user can enter commands:
{code}
> ./petals-cli.sh -C

Type 'help' for help.
------------------------------------------------------------------------------
petals-cli>
{code}

This command is wrapped by another shell: petals-cli-console.sh

h3. Execution of a Petals CLI command directly on the command line

Launching the Petals CLI with the following command line executes the command specified on the command line:
{code}
> ./petals-cli.sh -c <command> <command-args>
{code}

h3. Execution of a Petals script file

Launching the Petals CLI with the following command line executes commands of a Petals script:
{code}
> ./petals-cli.sh -f <filename>
{code}
{info}A Petals script is text file containing command supported by Petals CLI.{info}

h3. Execution of an inlined Petals script

Launching the Petals CLI with the following command line executes commands provided through the 'stdin':
{code}
> cat <filename> | ./petals-cli.sh -f -
> ./petals-cli.sh -f - << EOF
<command1> <command1-args>
<command2> <command2-args>
EOF
{code}

h2. Return code of Petals CLI

h3. Return code when all is ok

When there is no error about options and arguments on the command line, the return code of Petals CLI is 0

h3. Return code on error about option or arguments on the command line

When there is an error about options and arguments on the command line, the return code of Petals CLI is 1

h3. Return code on error about option and arguments of a command

When there is an error about options and arguments of a command, the return code of Petals CLI is 1

h2. Error management

h3. Options et argument parsing error management

If an error of parsing of options and/or arguments of the command line or commands, Petals CLI is interrupted with the right return code.

h3. Error management of a command set on the command line

If an error occurs during the execution of a command set on the command line:
- the command is interrupted,
- Petals CLI is interrupted with the return code 2

h3. Error management of a command entered in interactive mode (mode 'console')

If an error occurs during the execution of a command entered in interactive mode:
- the error message is displayed
- Petals CLI is not interrupted, the user can enter other commands

h3. Error management of a command read from stdin or a file (mode 'script')

If an error occurs during the execution of a flow of commands:
- the command that has thrown the error is interrupted,
- the return code of the command can be check using the commands *{{isParsingErrorReturned}}*, *{{isExecutionErrorReturned}}*, *{{isNoErrorReturned}}*, the ternary conditional operator, and the attribute *{{lastErrorCode}}*:
{code}
> ./petals-cli.sh -f - << EOF
deploy <artifact-url>
isNoErrorReturned ? listartefacts : exit lastErrorCode
EOF
{code}
Note:
- the return values of command {{isParsingErrorReturned}}, {{isExecutionErrorReturned}} and {{isNoErrorReturned}} are re-intialized when invoking command. Only the error of the last command execution can be checked.
- the attribute {{lastErrorCode}} is an argument of the command {{exit}} to return the return code of the last executed command.

h2. Connection to a Petals node

h3. Connection options from the command line

All parameters needed to a JMX connection to a remote Petals node must be configurable on the command line as options:
{code}
> ./petals-cli.sh -h <host> -n <port> -u <user> -p <password> -c <command>
> ./petals-cli.sh -h <host> -n <port> -u <user> -p <password> -C
Conected on <host1>:<port1> with <user1>
petals-cli>
{code}

h3. Interacting with several Petals node without exiting Petals CLI

In interactive mode or script mode, we should be able to close a connection and open another one without leaving Petals CLI. This is done by commands 'close' and 'open'. If no arguments are set on command 'open', default values (localhost:7700, login=petals, pwd=petals) are used:
{code}
> ./petals-cli.sh -C

Type 'help' for help.
------------------------------------------------------------------------------
petals-cli> open <user1>:<password1>@<host1>:<port1>
Conected on <host1>:<port1> with '<user1>'
petals-cli> close
petals-cli> open
Conected on localhost:7700 with 'petals'
{code}

h3. Default connection

By default (if no argument or option is set):
- In mode 'console', the connexion is establish on command 'open' to localhost:7700 with credentials 'petals/petals',
{code}
> ./petals-cli.sh -C

Type 'help' for help.
------------------------------------------------------------------------------
petals-cli> open
Conected on localhost:7700 with 'petals'
{code}
- In mode 'command line', connexion parameter are mandatory
{code}
> ./petals-cli.sh -h <host> -n <port> -u <user> -p <password> -c <command>
{code}
- In mode 'script', the connexion is establish on command 'open' to localhost:7700 with credentials 'petals/petals'
{code}
> ./petals-cli.sh -f - << EOF
open
EOF
{code}

h2. Petals CLI commands

h3. Installation/Deployment and start of an artifact in one command

Petals CLI is able to install/deploy and start a JBI artifact without distinction between shared-library, component and service assembly using the following command:
{code}
deploy <artifact-file> [<configuration-file> | <configuration-properties>]
{code}
where:
- {{<artifact-file>}} is the local file name or the URL of the artifact to install or deploy and start
- {{<configuration-file>}} is the local file name or the URL of the properties file used to configure the artifact. This argument is used only if the component is a component. It has no sens for other artifacts. This argument is exclusive with {{<configuration-properties>}}.
- {{<configuration-properties>}} is a list of '{{<property-name>=<property-value>}}', separated by space, where {{<property-name>}} is the name of the property to configure with {{<property-value>}}. This argument is used only if the component is a component. It has no sens for other artifacts. This argument is exclusive with {{<configuration-file>}}.

h3. Installation/Deployment and start in mass

To deploy several artifact in one command, just put them in a local directory and execute the command {{deploy}}:
{code}
> ./petals-cli.sh -y -f - << EOF
deploy /tmp
EOF
> ./petals-cli.sh -C

Type 'help' for help.
------------------------------------------------------------------------------
petals-cli> deploy /tmp
Are you sure you want to deploy all artifacts of directory '/tmp' (Y/n) ?
{code}

If the argument {{<artifact-file>}} of the command {{deploy}} is a local directory, all artifacts of the directory are deployed. In this case a confirmation is expected, except if the flag 'yes' is set on the command line. A confirmation message is displayed in the mode 'console', except is the flag 'yes' is set on the command line.

h3. Uninstallation/Undeployment and stop of an artifact in one command

Petals CLI is able to stop and uninstall/undeploy a JBI artifact without distinction between shared-library, component and service assembly using the following command:
{code}
undeploy [ <artifact-file> | [<artifact-type> <artifact-id>] ]
{code}
where:
- {{<artifact-file>}} is the local file name or the URL of the artifact to undeploy
- {{<artifact-type>}} is the nature (SL, component, SA) of the artifact to undeploy
- {{<artifact-id>}} is the JBI identifier of the artifact to undeploy

h3. Uninstallation/Undeployment and stop in mass

To undeploy several artifact in one command, just put them in a local directory and execute the command {{undeploy}}:
{code}
> ./petals-cli.sh -y -f - << EOF
undeploy
EOF
> ./petals-cli.sh -C

Type 'help' for help.
------------------------------------------------------------------------------
petals-cli> undeploy
Are you sure you want to undeploy all artifacts of the Petals node (Y/n) ?
{code}

If no arguments is set on command {{undeploy}}, all artifacts are undeployed. In this case a confirmation is expected, except if the flag 'yes' is set on the command line. A confirmation message is displayed in the mode 'console', except is the flag 'yes' is set on the command line.