juju help has confusing and inconsistent defaults
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Canonical Juju |
Triaged
|
Low
|
Unassigned |
Bug Description
The defaults output in juju help is both inconsistent and confusing.
See below in the help for juju run (this is with Juju 2.0.0):
* Why is application default the empty string and model ""?
* What does a default of 'false' mean for a --no-browser-login option
- does it mean that the default is to use a browser login
(i.e. double negative)? Or does it means that
-B/-
| $ juju help run
| Usage: juju run [options] <commands>
|
| Summary:
| Run the commands on the remote targets specified.
|
| Options:
| -B, --no-browser-login (= false)
| Do not use web browser for authentication
| --all (= false)
| Run the commands on all the machines
| --application (= )
| One or more application names
| --format (= default)
| Specify output format (default|json|yaml)
| -m, --model (= "")
| Model to operate in. Accepts [<controller name>:]<model name>
| --machine (= )
| One or more machine ids
| -o, --output (= "")
| Specify an output file
| --timeout (= 5m0s)
| How long to wait before the remote command is considered to have failed
| --unit (= )
| One or more unit ids
|
| Details:
| Run the commands on the specified targets. Only admin users of a model
| are able to use this command.
|
| Targets are specified using either machine ids, application names or unit
| names. At least one target specifier is needed.
|
| Multiple values can be set for --machine, --application, and --unit by using
| comma separated values.
|
| If the target is a machine, the command is run as the "ubuntu" user on
| the remote machine.
|
| If the target is an application, the command is run on all units for that
| application. For example, if there was an application "mysql" and that application
| had two units, "mysql/0" and "mysql/1", then
| --application mysql
| is equivalent to
| --unit mysql/0,mysql/1
|
| Commands run for applications or units are executed in a 'hook context' for
| the unit.
|
| --all is provided as a simple way to run the command on all the machines
| in the model. If you specify --all you cannot provide additional
| targets.
|
| Since juju run creates actions, you can query for the status of commands
| started with juju run by calling "juju show-action-status --name juju-run".
| $
Changed in juju: | |
status: | New → Triaged |
importance: | Undecided → High |
tags: | added: usability |
tags: | added: helptext |
It is a bit confusing at a quick glance but there is an explanation :)
I am thinking about how to make it more obvious but it really is not... The default for 'application', 'machine' and 'unit' is (= ) as opposed to (= "") like 'model' is because for this command, the arguments are not actually strings but a collection of strings, slices specifically.
I mean beyond being technically correct and doing something like (= []) - which is cumbersome as well, I do not know how to make it more explicit and less confusing... Suggestions are welcome :)
And, yes, no-browser-login is set to 'false' by default so the user will have a browser login unless this option is provided/set to true. If you have a suggested wording change, we are happy to change the wording.