Warning
This documentation is actively being updated as the project evolves and may not be complete in all areas.
Shell driver¶
jumpstarter-driver-shell
provides functionality for shell command execution.
Installation¶
$ pip3 install --extra-index-url https://pkg.jumpstarter.dev/simple jumpstarter-driver-shell
Configuration¶
Example configuration:
export:
shell:
type: jumpstarter_driver_shell.driver.Shell
config:
methods:
ls: "ls"
method2: "echo 'Hello World 2'"
#multi line method
method3: |
echo 'Hello World $1'
echo 'Hello World $2'
env_var: "echo $1,$2,$ENV_VAR"
# optional parameters
cwd: "/tmp"
log_level: "INFO"
shell:
- "/bin/bash"
- "-c"
API Reference¶
Assuming the exporter driver is configured as in the example above, the client methods will be generated dynamically, and they will be available as follows:
- class jumpstarter_driver_shell.client.ShellClient(*, uuid: uuid.UUID = <factory>, labels: dict[str, str] = <factory>, stub: Any, log_level: str = 'INFO', children: 'dict[str, DriverClient]' = <factory>, portal: 'BlockingPortal', stack: 'ExitStack')¶
- cli()¶
Create CLI interface for dynamically configured shell methods
- ls()
- Returns:
A tuple(stdout, stderr, return_code)
- method2()
- Returns:
A tuple(stdout, stderr, return_code)
- method3(arg1, arg2)
- Returns:
A tuple(stdout, stderr, return_code)
- env_var(arg1, arg2, ENV_VAR='value')
- Returns:
A tuple(stdout, stderr, return_code)
CLI Usage¶
The shell driver also provides a CLI when using jmp shell
. All configured methods become available as CLI commands, except for methods starting with _
which are considered private and hidden from the end user:
$ jmp shell --exporter shell-exporter
$ j shell
Usage: j shell [OPTIONS] COMMAND [ARGS]...
Shell command executor
Commands:
env_var Execute the env_var shell method
ls Execute the ls shell method
method2 Execute the method2 shell method
method3 Execute the method3 shell method
CLI Command Usage¶
Each configured method becomes a CLI command with the following options:
$ j shell ls --help
Usage: j shell ls [OPTIONS] [ARGS]...
Execute the ls shell method
Options:
-e, --env TEXT Environment variables in KEY=VALUE format
--help Show this message and exit.
Examples¶
# Execute simple commands
$ j shell ls
file1.txt file2.txt directory/
# Pass arguments to shell methods
$ j shell method3 "first arg" "second arg"
Hello World first arg
Hello World second arg
# Set environment variables
$ j shell env_var arg1 arg2 --env ENV_VAR=myvalue
arg1,arg2,myvalue