Michael Klishin
c7e8ab9b56
New command: version, closes #314
2019-02-14 15:10:22 +03:00
Daniil Fedotov
8bae6cd929
Add behaviour helpers.
...
Instead of calling function_exported? every time to access behaviour
functions, call CommandBehaviour.function.
Isolate all function defaults in the CommandBehaviour module.
Add a macro to define constant command functions.
2019-02-11 14:03:19 -05:00
Daniil Fedotov
d6789e60f2
A new way to display basic usage.
...
Do not show additional parameters info.
List commands as names and descriptions.
Group commands in sections.
New behaviour callbacks:
help_section/0 - atom name of a group to put command to. Default is :other
description/0 - single line description of the command. Printed in the commands list
Sections ans descriptions are WIP.
2019-02-08 15:33:17 -05:00
Michael Klishin
b452733d73
Improve error message produced by `rabbitmqctl shutdown`
...
References #309 .
2019-02-07 04:24:13 +03:00
Michael Klishin
41148d2f4d
Mention --longnames in the generic diagnostics message
...
Note that more specific errors are coming from
rabbit_nodes_common.
2019-02-05 21:11:00 +03:00
Luke Bakken
95e5b78af6
Output a friendly error if a long node name is used but --longnames not specified
2019-02-05 08:56:04 -08:00
Michael Klishin
a392d8e432
This clause is no longer necessary
2019-02-03 22:01:29 +03:00
Michael Klishin
56ac8d1cf7
shutdown: correctly wrap badrpc responses in validate/2
2019-02-03 22:00:11 +03:00
Michael Klishin
0053f67485
Support bare --help
...
Note that there's a different between the case with no arguments
(exits with EX_USAGE) and --help (exits successfully).
Per discussion with the team.
Closes #307 .
2019-02-01 19:47:09 +03:00
Daniil Fedotov
5e5f4d461c
Make it possible to get command help by typing 'rabbitmqctl mycommand --help'
...
Add a new default switch `help`
Add an alias `?`
Make rabbitmqctl display command help if this option is true for known commands.
2019-01-30 16:47:18 -05:00
Michael Klishin
94b55d71fa
Format with `gmake format`
2019-01-30 22:20:29 +03:00
Michael Klishin
7c44eeb0d9
Move get_formatter/2, get_printer/2 and friends to RabbitMQ.CLI.Core.Config
...
To avoid RabbitMQCtl being used as a library module and because
they both are effectively generic configurable settings.
2019-01-24 11:11:04 +03:00
Daniil Fedotov
e6530d6799
Make it possible for formatters to define arguments.
...
Add new callbacks to formatter_behavior: switches/0 and aliases/0
Merge them with command switches and aliases on parsing.
There is an example switch in the table formatter, enabling header padding.
2019-01-23 18:04:12 -05:00
Michael Klishin
5c4ed6b912
Format generic error triplets
2019-01-23 10:44:19 +03:00
Michael Klishin
4bc3e51461
Introduce rabbitmq-diagnostics check[_local]_alarms
...
References #292 .
2019-01-22 13:28:42 +03:00
Michael Klishin
b6f4d75afc
Update (c) year
2019-01-20 06:10:59 +03:00
Michael Klishin
ac653965f4
Improve error message formatting for rabbitmq-plugins commands
...
There are two main types of errors that I see in practice:
* Insufficient enabled plugins file permission (or the file does not exist)
* Enabled plugins file used by CLI tools does not match that of
the target node
[#162757498 ]
2018-12-19 15:54:23 +03:00
Luke Bakken
b523093c3e
Port Erlang/OTP node name code to Elixir
...
Follow-up to #278
Add another test case, fix bugs
Add another test
Start converting to new code
Node name related code is in NodeName module
Distribution not needed for Helpers tests
Add test for rabbit@localhost when longnames in use
No need to guess on domain in this spot
Fix behavior on OS X
2018-12-05 11:23:17 -08:00
Luke Bakken
1d878c79e1
Fix merge defaults test, fix warnings
2018-11-30 14:48:47 -08:00
Luke Bakken
c8e766dec7
Add function to normalise :node option after distribution started
...
Fixes #278
2018-11-30 07:00:18 -08:00
Luke Bakken
8ab22299a8
Document --no-table-headers
...
Fixes #274
Switch no_table_headers to table_headers
update tests
Integrate --silent
2018-11-19 15:25:36 -08:00
Ayanda Dube
c88cfd940d
Reduce code footprint on aliases
2018-07-23 06:06:18 +01:00
Daniil Fedotov
b5de2236ce
Add a callback to control erlang distribution.
...
The callback cab be used to disable distribution (offline commands)
or to have command-specific node name and distribution parameters.
2017-12-06 18:10:11 +00:00
Daniil Fedotov
32cf46e5c8
Fix rabbitmq-plugins enable/disable/set behavior for --online flag.
...
If flag is set to `--online` the commands should fail if node is not
running.
If flag is not set, they should fallback to offline mode if the
node is not running.
This corresponds to the rabbitmq-plugins.8 manpage.
Made validation aware of online flag.
Define best_effort mode to fallback if node is not running.
Requires rabbitmq/rabbitmq-server#1433
Fixes #226
[#153184802 ]
2017-11-27 18:49:08 +00:00
Daniil Fedotov
e34bfe2297
Merge branch 'master' into rabbitmq-cli-214-take-two
2017-08-14 14:40:35 +01:00
Daniil Fedotov
568874033d
Run dialyzer tests. Fix warnings.
...
Some types were named wrongly (list(), map())
MapSet cannot be matched to be empty. `%MapSet{}` only matches the type.
2017-08-14 14:36:38 +01:00
Luke Bakken
cb65a340d5
Add single quotes around commands given in output
2017-08-11 17:00:20 -07:00
Michael Klishin
6b007ab1cf
Make sure we format errors here
2017-08-11 18:04:00 +03:00
Michael Klishin
efe8725f3c
Merge branch 'master' into rabbitmq-cli-214-take-two
2017-08-10 14:21:42 +03:00
Michael Klishin
2eda5ea31c
Make sure *validation_error_output/2 functions are used correctly
2017-08-09 15:52:04 +03:00
Michael Klishin
0031c4fdf6
Make validate/2 and validate_execution_environment/2 use the same tuple tag
...
Per discussion with @hairyhum.
2017-08-09 01:11:14 +03:00
Michael Klishin
c227843e32
Make validate_execution_environment/2 use a different tuple tag for failures
...
Per discussion with @hairyhum.
2017-08-08 18:29:04 +03:00
Diana Corbacho
9d6dfddb3e
Set a timeout on list_queues and a warning if unresponsive ones are found
...
Related to rabbitmq-cli#207
2017-08-07 17:38:24 +02:00
Michael Klishin
8e9b114eac
Fold execution environment validation into a single optional fn
...
While at it, move Ctl.Validators => Core.Validators.
If the function is not defined we skip validation. Note that
individual commands need to be revisited and refactored to use
this mechanism; this is yet to come.
Per discussion with @hairyhum and @lukebakken.
2017-08-04 18:40:17 +03:00
Michael Klishin
d92b78b49e
Simplify, explain
2017-08-04 15:20:57 +03:00
Michael Klishin
032482cec6
Factor in rabbit app state and execution env validation
...
This introduces two other "validation steps" that have little or nothing
to do with CLI argument validation.
Per discussion with @hairyhum.
2017-08-04 15:08:37 +03:00
Michael Klishin
9919700303
Inline validate_and_run_command/3 for greater flexibility
...
This way we can inject more "validation steps" between validate/2
return and command execution, such as checking whether the rabbit app
is running (or not running) on the remote node.
While at it, group functions that are used in a chain.
2017-08-04 14:09:37 +03:00
Michael Klishin
a33b26105c
Supress banners for machine readable format
...
Namely JSON and CSV.
Fixes #205 .
2017-07-14 18:08:17 +03:00
Michael Klishin
3f21e0fac1
Make sure that command-provided defaults are available to output formatting fns
2017-07-13 15:46:31 +03:00
Michael Klishin
310ffe159e
Wording
2017-07-04 22:41:32 +03:00
Michael Klishin
ca20f8a0d6
Make CLI tools diagnostics message more detailed
...
Our current message is informative enough but it ends with a "nodedown".
Emperical evidence suggests that once a user sees it, they stop reading.
Providing a hint that there will be diagnostics output below is step 1.
Step 2 is improving the diagnostics section. It now
* Calls out three most common groups of issues explicitly
* Suggests what documentation guides can contain helpful information
There are rabbitmq-server and rabbitmq-common commits that make
similar improvements to the server-supplied part of the diagnostics
message.
Per discussion with the team.
2017-07-04 22:34:39 +03:00
Michael Klishin
88629421d1
Whitespace
2017-06-30 14:44:35 +03:00
Michael Klishin
b7b5223a39
list_vhost_limits: handle errors before serialising results
...
Also update tests and format no_such_vhost errors in a more sensible
way.
2017-06-30 14:43:09 +03:00
Michael Klishin
31822baf8c
Revert "Revert "Compile""
...
This reverts commit 7908b17f01 .
Test failures were due to something tripping up test node start,
not the change in ec695461ab .
2017-06-16 17:55:31 +03:00
Michael Klishin
7908b17f01
Revert "Compile"
...
This reverts commit ec695461ab .
This introduced test failures.
2017-06-16 17:35:57 +03:00
Michael Klishin
ec695461ab
Compile
2017-06-16 17:34:29 +03:00
Diana Corbacho
cb2b3bc667
Fix timed out message
2017-06-16 14:54:33 +01:00
Diana Corbacho
dfa9827135
Use the output of multirpc to report the down or timed out nodes
...
Most commands do rpc's only to the target node, but join_cluster
triggers an rpc between nodes. If the rpc to the remote down returns
down/timeout, we must use that value to run the diagnostics.
Using the node from command options in diagnostics will report as down
the wrong node.
rabbitmq-cli#197
2017-06-16 12:41:11 +01:00
Daniil Fedotov
1641ecbc11
Improve wait command.
...
Do not call await_startup on rabbitmq node, instead do it on
rabbitmqctl node, so even if net_ticktime is low, it won't fail
with nodedown.
2017-06-08 18:15:21 +01:00
Daniil Fedotov
b802fcdf87
Do not try to connect to the RabbitMQ node before executing command
...
Commands are supposed to return bardpc errors, which are handled by output,
so there is no need to connect to the node before calling the run function.
2017-06-07 16:21:53 +01:00
Daniil Fedotov
61eeab17c1
Callback for exec_command function to process output
2017-06-06 12:07:34 +01:00
Daniil Fedotov
769fe8e712
Better error management with stream outputs from list_ commands.
...
Fixed incorrect tuple matching.
Added support for error codes and messages for timeout with value.
2017-05-24 13:28:51 +01:00
Daniil Fedotov
60deb8514d
Improve error reporting.
...
badrpc errors are handled in Rabbitmqctl module.
Report errors from node discovery
Add helpers to skip errors in formatters.
2017-05-24 12:08:03 +01:00
Daniil Fedotov
8ef4c404ab
Do not import modules. Import only protocols and records.
...
Aliases is a convinient enough to reference elixir modules.
Imported functions can be confusing, especially mixed with aliases.
2017-04-05 11:59:54 +01:00
Daniil Fedotov
819d512038
Implement shutdown command
2017-04-04 19:23:50 +01:00
Daniil Fedotov
62a44ac641
Optimize rabbitmqctl startup.
...
Plugins dirs are added to ERL_LIBS by shell scripts, we try to load
enabled plugins first and scan plugins dir only if some of them
are not found.
When discovering plugins, we can load applications only for enabled ones.
EPMD can be started only after initial `net_kernel:start` call failed.
We don't need to discover all commands every time, only if a command is not
in the `rabbitmqctl` application modules.
[finishes #143025009 ]
2017-04-04 14:06:53 +01:00
Daniil Fedotov
04c1c2e2f9
Do not print "Command '' not found" for empty command
2017-01-25 15:24:47 +00:00
Daniil Fedotov
a5857e13d8
Handle auto-completion line as argv, not a single argument
...
It's easier to detect a script name if passed as argv list.
Arguments can be parsed with quoted spaces (e.g. in directory path)
2017-01-24 14:40:31 +00:00
Daniil Fedotov
3871c4ccde
Support autocompletion with different script names
2017-01-24 12:30:12 +00:00
Daniil Fedotov
6288d75472
Cleanup compiler warnings
2017-01-24 09:59:00 +00:00
Daniil Fedotov
2174446ff9
Auto complete command called with full path
2017-01-24 09:47:30 +00:00
Michael Klishin
cbab77e34c
Fix --auto-complete clauses
...
According to the completion script in rabbitmq/rabbitmq-server-release#14 , the correct
way to invoke auto-completion is
/path/to/rabbitmqctl --auto-complete [command prefix]
However, the above arguments were not matched by the existing
main heads.
2017-01-21 23:33:35 +03:00
Jean-Sébastien Pédron
5905f1c40a
Update copyright line to year 2017
2017-01-10 15:42:40 +01:00
Daniil Fedotov
30b41ba267
Support start from common_test tests
2016-12-23 12:12:33 +00:00
Daniil Fedotov
fc0ca12a91
Test commands suggestions
2016-12-06 12:19:25 +00:00
Daniil Fedotov
80dc953ee5
Suggest commands by Levenshtein distance
2016-12-05 18:59:58 +00:00
Michael Klishin
cb41fe932d
Unbreak with_distribution/1
2016-12-05 19:23:20 +03:00
Alexey Lebedeff
2d11e45625
Handle errors from distribution start attempts
...
Otherwise broken or misconfigured distribution is reported as an
unavailable broker node.
2016-12-05 17:51:22 +03:00
Daniil Fedotov
c62d48380a
Load command specific options from a single command
2016-11-30 16:51:59 +00:00
Michael Klishin
c59b6c029f
Make switches/0 and aliases/0 optional command callbacks
...
Fixes #120 . Same as #124 but doesn't include any unrelated changes
and thus suffer from #126 .
2016-11-22 16:11:25 +03:00
Michael Klishin
e92022da11
Revert "Merge pull request #124 from rabbitmq/rabbitmq-cli-120"
...
This reverts commit c087a635c0 , reversing
changes made to 59225a551d .
See https://github.com/rabbitmq/rabbitmq-cli/issues/126 , which exposed
a serious flaw in the option parser split which was introduced
as part of #124 .
Reopens #120 .
2016-11-22 14:07:58 +03:00
Daniil Fedotov
cc87a49f93
Make switches as aliases callbacks optional
2016-11-18 17:21:27 +00:00
Daniil Fedotov
59225a551d
Remove `flags/0` callback. Remove command modules helpers from helpers to command_modules
2016-11-18 14:12:53 +00:00
Daniil Fedotov
36ac65d56a
Remove dependencies
2016-11-15 16:14:22 +00:00
Daniil Fedotov
ccb6bf116c
Namespace refactoring
2016-11-14 17:52:08 +00:00
Daniil Fedotov
1dc8e90a70
Make tests happy
2016-11-10 17:40:43 +00:00
Daniil Fedotov
3c8e6d1ef7
Use seconds in timeout parameter. Better timeout error report
2016-11-10 14:53:59 +00:00
Daniil Fedotov
ad90e60121
script name is overridable via argument
2016-11-08 14:21:31 +00:00
Daniil Fedotov
b98470288d
List plugins formatter
2016-11-08 14:19:11 +00:00
Daniil Fedotov
85d6868763
Make table formatter look like in the old CLI
2016-11-04 12:38:35 +00:00
Daniil Fedotov
dcd831ec99
Correct IO device name
2016-11-04 11:12:14 +00:00
Daniil Fedotov
14d82eabdc
Refactor error reporting to allow commands specify formatter
2016-11-04 11:11:03 +00:00
Daniil Fedotov
3f4abba717
Command specific formatters
2016-11-03 18:10:18 +00:00
Daniil Fedotov
4c13a51ac8
Reworking command outputs
2016-08-22 12:58:37 +01:00
Daniil Fedotov
0da30bd1d1
Help command return list of strings instead of printing them\
2016-08-18 17:38:49 +01:00
Daniil Fedotov
35fc3d12cd
Default output formatting and exit code selection. Inspect printer
2016-08-18 15:35:49 +01:00
Michael Klishin
1d911b4350
Delete a duplicate fn head
2016-08-14 08:07:19 +03:00
Michael Klishin
cb209d834d
Merge branch 'master' into rabbitmq-cli-rename-cluster-node-command
...
Conflicts:
lib/rabbitmqctl.ex
2016-08-12 04:36:51 +03:00
Michael Klishin
0449004a6b
Merge branch 'master' into rabbitmq-cli-change-cluster-node-type
2016-08-12 01:04:01 +03:00
Michael Klishin
ad2b4627c7
Merge branch 'master' into rabbitmq-cli-9
...
Conflicts:
lib/rabbitmq/cli/ctl/parser.ex
lib/rabbitmqctl.ex
2016-08-11 11:52:54 +03:00
Daniil Fedotov
6f3f0854bd
Rename auto complete option for consistency
2016-08-10 18:19:06 +01:00
Michael Klishin
31c3356c56
Use effective program name in help command output
...
Note that this solution is imperfect because
for tests the name of the tool is `mix`. But most
tests don't care.
2016-08-09 15:05:48 +03:00
Michael Klishin
a06a4321d6
merge_defaults_defaults => merge_all_defaults
2016-08-08 21:46:47 +03:00
Daniil Fedotov
4d40649d44
Command auto completion
2016-07-28 17:46:37 +01:00
Daniil Fedotov
7b35c7c2cc
More validation, error handling and tests
2016-07-27 11:48:24 +01:00
Daniil Fedotov
f2c4986fcf
Implementing rename_cluster_nodes command
2016-07-26 18:08:37 +01:00
Daniil Fedotov
cd68b3ce9c
Implement change_cluster_node_type command
2016-07-25 16:48:45 +01:00
Michael Klishin
70f486c27d
Squash a few compilation warnings
2016-07-10 12:08:33 +03:00
Michael Klishin
941263e83c
Eliminate several warnings
2016-06-26 22:47:37 +03:00
Daniil Fedotov
963f6a2ff9
tests for list plugins command
2016-06-23 10:50:01 +01:00