Commit Graph

1174 Commits

Author SHA1 Message Date
Michael Klishin 24c53b3acf New ctl status output WIP 2019-04-11 15:31:50 +04:00
Michael Klishin b7932ab6d4 Extract Core.Alarms and Core.Listeners from Diagnostics.Helpers 2019-04-11 01:38:20 +03:00
Michael Klishin 9cb776c98e Squash a warning 2019-04-10 15:22:38 +03:00
Michael Klishin d2549de22e Extract several modules from RabbitMQ.CLI.Core.Helpers
In preparation to changing status command output for 3.8
2019-04-10 13:31:38 +03:00
Michael Klishin f49b77c205 ping command: rely on Core.AcceptsDefaultSwitchesAndTimeout 2019-04-09 17:28:42 +04:00
Michael Klishin 801df8cf46 ping: cosmetics, declare --timeout in switches 2019-04-09 16:43:58 +04:00
Michael Klishin 46712a2a70 Cosmetics 2019-04-09 16:43:38 +04:00
Michael Klishin d1863c71f7 DefaultOutput: handle error triplets 2019-04-09 16:43:31 +04:00
Michael Klishin 61b504ca8e ctl delete_queue: help message improvements 2019-04-09 14:40:15 +04:00
Michael Klishin ab3d694d99 ctl delete_queue: fix a typo in alias definition
While at it, correct usage docs to use --kebab-case
for switches.

Closes #339.
2019-04-09 14:37:51 +04:00
Michael Klishin 914524f16d DefaultOutput: correct normalize_output/2 for #336 2019-04-08 22:18:13 +04:00
Michael Klishin 03d2e921d9 Update assertions for #336 2019-04-08 21:33:45 +04:00
Michael Klishin 8eee5dca42 Merge branch 'master' into rabbitmq-cli-336 2019-04-08 19:04:25 +04:00
Michael Klishin 382c664f79 Clarify 2019-04-08 15:30:58 +04:00
Michael Klishin 5ab985d2e4 Explain, references rabbitmq/rabbitmq-server#1971 2019-04-08 15:08:01 +04:00
Michael Klishin e76e00aa06 ctl close_all_connections: don't fail when --vhost is missing in options 2019-04-08 15:07:46 +04:00
Michael Klishin a37cd534e0 Clarify that not every command supports every formatter 2019-04-05 14:28:58 +04:00
Michael Klishin 19880aac00 runtime_thread_stats: mention the new Runtime Tuning guide in help 2019-04-05 14:25:54 +04:00
Luke Bakken 6f4d9bf83d Ensure enumerable value is returned from RpcStream
Fixes #336
2019-04-04 17:56:05 -07:00
Michael Klishin 5685e4c7c9 rabbitmq-plugins formatter: don't print legend if --silent or --quiet is used 2019-04-01 14:56:40 +03:00
Michael Klishin d34b4b7ce0 Tweak argument names in rabbitmq-queues command help 2019-04-01 14:56:40 +03:00
Michael Klishin 11adbf446b A typo 2019-04-01 03:28:30 +03:00
Michael Klishin fe23f38635 Expand help information for more commands (part 4) 2019-04-01 03:26:17 +03:00
Michael Klishin 0d57806e0f Expand help information for more commands (part 3) 2019-04-01 03:00:01 +03:00
Michael Klishin 654ec133b2 Expand help information for more commands
This removes command-specific --formatter option from the docs
per discussion with the team. --formatter will be covered in the
general section only.
2019-03-31 01:33:36 +03:00
Michael Klishin 9f6eb5a13a Rename function 2019-03-31 00:38:52 +03:00
Michael Klishin 171376f9c9 Document arguments/options and relevant guides for more commands 2019-03-30 09:30:26 +03:00
Michael Klishin 6cf71362d1 Correctly format blank command description
Don't print a trailing dot and a new line break,
that is confusing and doesn't look great.
2019-03-26 21:06:42 +03:00
Michael Klishin 2510b0baea A typo
<3 <3 <3 dogs
2019-03-26 20:54:09 +03:00
Michael Klishin fd151e4696 join_cluster: minor doc updates 2019-03-26 17:20:37 +03:00
Michael Klishin a27289af95 Recommend doc guides in --help for more commands 2019-03-26 17:07:18 +03:00
Michael Klishin f2b80a4116 A way for commands to provide a list of relevant doc guides
in the help message.
2019-03-26 15:51:06 +03:00
Michael Klishin fe0bb70420 Compile 2019-03-26 14:20:17 +03:00
Michael Klishin 3dc526c528 usage_additional/0 can return a list of pairs 2019-03-26 14:14:00 +03:00
Michael Klishin 93dbbf342e Rework how command-specific options are displayed in help
Per recommendation from @dumbbell.
usage_addition/0 return format per discussion
with @dcorbacho, @hairyhum, @lukebakken.
2019-03-26 01:21:22 +03:00
Michael Klishin 187d6cd79a Cosmetics 2019-03-21 19:06:27 +03:00
Michael Klishin 6219ba07b0 Remove a stray stack trace dump
Got accidentally committed in 8bae6cd929.
2019-03-21 19:06:26 +03:00
Spring Operator 0a2541afd3 URL Cleanup
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# HTTP URLs that Could Not Be Fixed
These URLs were unable to be fixed. Please review them to see if they can be manually resolved.

* http://blog.listincomprehension.com/search/label/procket (200) with 1 occurrences could not be migrated:
   ([https](https://blog.listincomprehension.com/search/label/procket) result ClosedChannelException).
* http://dozzie.jarowit.net/trac/wiki/TOML (200) with 1 occurrences could not be migrated:
   ([https](https://dozzie.jarowit.net/trac/wiki/TOML) result SSLHandshakeException).
* http://dozzie.jarowit.net/trac/wiki/subproc (200) with 1 occurrences could not be migrated:
   ([https](https://dozzie.jarowit.net/trac/wiki/subproc) result SSLHandshakeException).
* http://e2project.org (200) with 1 occurrences could not be migrated:
   ([https](https://e2project.org) result AnnotatedConnectException).
* http://erlang.org/doc/reference_manual/distributed.html (200) with 1 occurrences could not be migrated:
   ([https](https://erlang.org/doc/reference_manual/distributed.html) result ConnectTimeoutException).
* http://nitrogenproject.com/ (200) with 2 occurrences could not be migrated:
   ([https](https://nitrogenproject.com/) result ConnectTimeoutException).
* http://proper.softlab.ntua.gr (200) with 1 occurrences could not be migrated:
   ([https](https://proper.softlab.ntua.gr) result SSLHandshakeException).
* http://yaws.hyber.org (200) with 1 occurrences could not be migrated:
   ([https](https://yaws.hyber.org) result AnnotatedConnectException).
* http://choven.ca (503) with 1 occurrences could not be migrated:
   ([https](https://choven.ca) result ConnectTimeoutException).

# Fixed URLs

## Fixed But Review Recommended
These URLs were fixed, but the https status was not OK. However, the https status was the same as the http request or http redirected to an https URL, so they were migrated. Your review is recommended.

* http://fixprotocol.org/ (301) with 1 occurrences migrated to:
  https://fixtrading.org ([https](https://fixprotocol.org/) result SSLHandshakeException).
* http://erldb.org (UnknownHostException) with 1 occurrences migrated to:
  https://erldb.org ([https](https://erldb.org) result UnknownHostException).
* http://elixir-lang.org/docs/stable/elixir/OptionParser.html (301) with 1 occurrences migrated to:
  https://elixir-lang.org/docs/stable/elixir/OptionParser.html ([https](https://elixir-lang.org/docs/stable/elixir/OptionParser.html) result 404).
* http://elixir-lang.org/docs/stable/elixir/Stream.html (301) with 1 occurrences migrated to:
  https://elixir-lang.org/docs/stable/elixir/Stream.html ([https](https://elixir-lang.org/docs/stable/elixir/Stream.html) result 404).

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* http://cloudi.org/ with 27 occurrences migrated to:
  https://cloudi.org/ ([https](https://cloudi.org/) result 200).
* http://elixir-lang.org with 1 occurrences migrated to:
  https://elixir-lang.org ([https](https://elixir-lang.org) result 200).
* http://elixir-lang.org/ with 2 occurrences migrated to:
  https://elixir-lang.org/ ([https](https://elixir-lang.org/) result 200).
* http://elixir-lang.org/getting-started/typespecs-and-behaviours.html with 1 occurrences migrated to:
  https://elixir-lang.org/getting-started/typespecs-and-behaviours.html ([https](https://elixir-lang.org/getting-started/typespecs-and-behaviours.html) result 200).
* http://elixir-lang.org/install.html with 1 occurrences migrated to:
  https://elixir-lang.org/install.html ([https](https://elixir-lang.org/install.html) result 200).
* http://erlware.org/ with 1 occurrences migrated to:
  https://erlware.org/ ([https](https://erlware.org/) result 200).
* http://inaka.github.io/cowboy-trails/ with 1 occurrences migrated to:
  https://inaka.github.io/cowboy-trails/ ([https](https://inaka.github.io/cowboy-trails/) result 200).
* http://ninenines.eu with 6 occurrences migrated to:
  https://ninenines.eu ([https](https://ninenines.eu) result 200).
* http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html with 1 occurrences migrated to:
  https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html ([https](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) result 200).
* http://www.actordb.com/ with 2 occurrences migrated to:
  https://www.actordb.com/ ([https](https://www.actordb.com/) result 200).
* http://www.cs.kent.ac.uk/projects/wrangler/Home.html with 1 occurrences migrated to:
  https://www.cs.kent.ac.uk/projects/wrangler/Home.html ([https](https://www.cs.kent.ac.uk/projects/wrangler/Home.html) result 200).
* http://www.rebar3.org with 1 occurrences migrated to:
  https://www.rebar3.org ([https](https://www.rebar3.org) result 200).
* http://contributor-covenant.org with 1 occurrences migrated to:
  https://contributor-covenant.org ([https](https://contributor-covenant.org) result 301).
* http://contributor-covenant.org/version/1/3/0/ with 1 occurrences migrated to:
  https://contributor-covenant.org/version/1/3/0/ ([https](https://contributor-covenant.org/version/1/3/0/) result 301).
* http://inaka.github.com/apns4erl with 1 occurrences migrated to:
  https://inaka.github.com/apns4erl ([https](https://inaka.github.com/apns4erl) result 301).
* http://inaka.github.com/edis/ with 1 occurrences migrated to:
  https://inaka.github.com/edis/ ([https](https://inaka.github.com/edis/) result 301).
* http://lasp-lang.org/ with 1 occurrences migrated to:
  https://lasp-lang.org/ ([https](https://lasp-lang.org/) result 301).
* http://rabbitmq.com/documentation.html with 1 occurrences migrated to:
  https://rabbitmq.com/documentation.html ([https](https://rabbitmq.com/documentation.html) result 301).
* http://saleyn.github.com/erlexec with 1 occurrences migrated to:
  https://saleyn.github.com/erlexec ([https](https://saleyn.github.com/erlexec) result 301).
* http://www.mozilla.org/MPL/ with 290 occurrences migrated to:
  https://www.mozilla.org/MPL/ ([https](https://www.mozilla.org/MPL/) result 301).
* http://zhongwencool.github.io/observer_cli with 1 occurrences migrated to:
  https://zhongwencool.github.io/observer_cli ([https](https://zhongwencool.github.io/observer_cli) result 301).
2019-03-20 03:13:07 -05:00
Michael Klishin 4c1b377330 Reduce generic options section per discussion in #333
The section on node names has been moved to https://www.rabbitmq.com/cli.html#node-names
(not yet live).
2019-03-19 22:23:42 +03:00
Michael Klishin c72b0928f7 Reduce general options section
* Only keep [--timeout <n>] but not a separate section for
   commands that support timeouts.
 * Replace a separate virtual host section with a general option.
   This option doesn't really need a detailed explanation.
 * Replace a separate --quiet/--silent section with a general option.
   This option doesn't really need a detailed explanation.

Per discussion with @gerhard and @acogoluegnes.
2019-03-18 14:36:22 +03:00
Michael Klishin 8c60489719 Replace [-p vhost] in help messages with [--vhost vhost] 2019-03-18 13:53:54 +03:00
Michael Klishin cb3fa1048e Rename <*infoitem> in help messages to <column>
Clearer, easier to read and uniform.
2019-03-18 13:47:46 +03:00
Michael Klishin 1e996b1128 Sort info items in command help
Per suggestion from @gerhard.
2019-03-18 13:42:06 +03:00
Michael Klishin 9bc4b148f1 Document more command-specific arguments and switches 2019-03-18 08:56:17 +03:00
Michael Klishin 7d2b5c4730 Document more command-specific arguments and switches 2019-03-18 07:47:46 +03:00
Michael Klishin f73bca4c1d Move printer module name resolution to PrinterBehaviour
To match FormatterBehaviour.
2019-03-18 07:47:45 +03:00
Michael Klishin ddf09a9cd8 Normalize formatter name
So that json, JSON, Json all work the same way.
This is because we will use "JSON" in command docs
so eventually a user will try that value verbatim.
2019-03-18 07:47:45 +03:00
Michael Klishin 1ce3cb00f6 delete_queue: document switches in --help 2019-03-18 07:47:45 +03:00
Michael Klishin 97960bde37 Cosmetics 2019-03-18 07:47:45 +03:00
Michael Klishin af2b343784 list_channels: @info_keys are meant to be atoms
Even though the implementation now supports
string values as well.
2019-03-18 07:47:44 +03:00
Michael Klishin b47ec93f97 Merge pull request #331 from rabbitmq/list-queue-type
Add queue type to list queues command
2019-03-18 05:53:07 +03:00
Michael Klishin 50f702d63b Global options: mention --formatter=pretty_table 2019-03-17 14:18:33 +03:00
Michael Klishin e1df5c0a87 ctl close_all_connections: additional usage docs 2019-03-17 14:13:13 +03:00
Michael Klishin d54f979ed8 Do not indent lines in usage_additional
We eliminated indentation in other sections
because it is too painful to get aligned
for command author.
2019-03-17 14:12:50 +03:00
Michael Klishin 2f5472e03f Cosmetics 2019-03-17 14:05:42 +03:00
Michael Klishin b5d39b2a2f Handle info keys that are strings
Some commands define them as atoms, others
as strings.
2019-03-17 14:01:04 +03:00
Michael Klishin bea9cf4486 Rework command-specific help
* Display command-specific options first instead of
  generic at the top
* Include one line command synopsis from --list-commands
  in the command-specific message
* List timeout in a separate section. It doesn't
  integrate very well with either command-specific
  or general section
* Format section headings as H2s in Markdown, this makes them stand out
* Assorted small formatting changes
* Update tests to be less fragile to copywriting changes
2019-03-17 13:54:18 +03:00
Michael Klishin c5b5df1282 Help command descriptions, cosmetics 2019-03-17 06:55:22 +03:00
Michael Klishin c48a1fae65 Correctly format management_agent and other multi-segment plugin names
Without this management_agent failed to be formatted
causing an ugly looking exception in --help.
2019-03-16 21:18:22 +03:00
Michael Klishin 10be5d4dec Cosmetics
Rearrange functions to follow a more common
command interface order.
2019-03-16 21:17:12 +03:00
Michael Klishin 30b6069293 restart_vhost belongs to the Virtual Hosts section 2019-03-16 21:16:33 +03:00
Diana Corbacho b56b69f9fa Add queue type to list queues command
[#163984879]
2019-03-15 17:07:11 +00:00
Michael Klishin 7f6ef260da ctl shutdown: consider @localhost nodes to be local
Without this -n has to be used when it previously wasn't required.

Follow-up to #328, references #327, #309.

Per discussion with @lukebakken.
2019-03-07 01:29:23 +03:00
Michael Klishin c339b6a10c ctl shutdown: infer hostnames from node names
inet_db is not a very reliable source as it doesn't take
node name CLI arguments and ERL_INETRC file settings.
That can lead to false positives in environments where
inet_db returns the same value (e.g. `localhost`) for
every cluster member.

Per discussion with @gerhard.

Closes #327.
References #309.
2019-03-06 20:19:52 +03:00
Michael Klishin e589a2b985 ctl forget_cluster_node: improve error formatting 2019-02-26 14:04:41 +03:00
Josh Soref 2dcfd4a34b spelling: parameterised 2019-02-24 02:02:34 -05:00
Josh Soref b81a6a6f04 spelling: enabled 2019-02-13 00:19:35 -05:00
Michael Klishin 34b3467b9f A typo 2019-02-21 21:02:52 +03:00
Michael Klishin ec31098516 Compile 2019-02-21 21:00:53 +03:00
Michael Klishin 74bb6239eb Correct a JSON output inconsistency spotted by @hairyhum 2019-02-21 21:00:36 +03:00
Michael Klishin 6a368e24dc New command group: replication 2019-02-21 20:45:49 +03:00
Michael Klishin 2b2e6e07c3 Merge branch 'master' into rabbitmq-queues-descriptions 2019-02-21 20:37:06 +03:00
Michael Klishin 8ac5f2ec7b Improve formatting of protocol plugin help sections 2019-02-21 19:53:45 +03:00
kjnilsson 50cb1a0329 Add descriptions to rabbitmq-queues commands 2019-02-21 16:44:08 +00:00
Michael Klishin 3f32c237dc Squash a couple of compiler warnings 2019-02-21 19:17:52 +03:00
Michael Klishin aceab7c592 Wording, typos 2019-02-21 19:14:50 +03:00
Michael Klishin ea6294be41 New command: `rabbitmqctl force_gc`
Developed as part of a live coding training session but can be
useful in practice, so let's keep it.

Per discussion with @hairyhum.
2019-02-21 19:11:30 +03:00
Michael Klishin 62b2fdf80c Combine virtual host management, limits, tracing into a single group 2019-02-21 17:54:16 +03:00
Michael Klishin 866ce75fe4 More/slightly improved command descriptions 2019-02-21 17:03:34 +03:00
Michael Klishin cbaf74d269 Help sections for rabbitmq-diagnostics commands 2019-02-21 16:35:41 +03:00
Michael Klishin 4932c339c7 Command groups: naming, rearranging 2019-02-21 15:52:51 +03:00
Michael Klishin 80993dc921 Merge branch 'master' into help-wip 2019-02-21 13:18:59 +03:00
Michael Klishin 5fd924099f Correct usage line 2019-02-21 00:47:36 +03:00
Michael Klishin ade7f479e1 Match on error tuples only here 2019-02-21 00:42:03 +03:00
Michael Klishin b4d2ab6fe0 Return a human-friendly validation error 2019-02-21 00:35:23 +03:00
Michael Klishin f3829006b3 Correct a copy-paste artifact 2019-02-21 00:31:29 +03:00
Michael Klishin 3896103e6b Cosmetics 2019-02-20 23:21:39 +03:00
kjnilsson a56f9cae61 rabbitmq-queues: add --errors-only to grow command
For consistency with shrink

[#162782801]
2019-02-20 17:28:26 +00:00
kjnilsson 67dfe2dfa8 add rabbitmq-queues grow command tests 2019-02-20 13:47:58 +00:00
kjnilsson d158b69cb8 grow command banner refinement 2019-02-20 13:31:15 +00:00
kjnilsson f21e9183e2 rename grow command 2019-02-20 13:31:15 +00:00
Michael Klishin 8147be5d60 Banner message: be more specific 2019-02-20 13:31:15 +00:00
Michael Klishin 748b3ed485 Handle errors returned by the rpc call 2019-02-20 13:31:15 +00:00
Michael Klishin 261dccf3bf Make `rabbitmq-queues` commands follow standard naming pattern 2019-02-20 13:30:00 +00:00
Michael Klishin 7baa1fddde Format, inline 2019-02-20 13:29:59 +00:00
Michael Klishin 41810ab9d8 Reuse RabbitMQ.CLI.Core.AcceptsOnePositionalArgument here 2019-02-20 13:29:59 +00:00
Michael Klishin ddf6841f2f New command: version, closes #314 2019-02-20 13:29:59 +00:00
kjnilsson d088a77570 Add command to grow quorum queues
Allows the operator to provide patterns to match the vhosts and queue
names to be grown and well as two strategies:

all: all matching queues are grown
even: only queues with an even number of members are grown

[#162782801]
2019-02-19 17:07:33 +00:00
kjnilsson b629ccbb61 rabbitmq-queues-shrink better formatting
[#162782789]
2019-02-18 15:53:14 +00:00
Daniil Fedotov 993d4a928a Support custom help sections. 2019-02-14 13:19:46 -05:00
Daniil Fedotov b157b6a7cf Do not use defcmd macro. 2019-02-14 13:16:49 -05:00
Daniil Fedotov 1b4aaac477 Formatting of the help message 2019-02-14 13:11:23 -05:00
Daniil Fedotov a56ee97d74 Make help sections and descriptions similar to man page. 2019-02-14 13:02:00 -05:00
kjnilsson 82fa8f2e1d Add rabbitmq-queues shrink command
That removes all quorum queue members for a given node.

[#162782789]
2019-02-14 17:04:55 +00:00
Daniil Fedotov 7edf3d87ca Use elixir internal distance function instead of a library for command similarity comparison.
Elixir provides String.jaro_distance function, which is similar to
the levenstain distance.
This allows us to remove a dependency.
2019-02-12 15:22:02 -05:00
Daniil Fedotov 9fdeaef417 Clarify that list_connections command ony applies to AMQP 0.9.1 2019-02-12 14:49:16 -05:00
Michael Klishin 9231b21305 Follow-up to #298: descriptions and aliases for TLS-enabled listeners 2019-02-12 14:14:54 +03:00
Daniil Fedotov a5c34042de Example of using defcmd to define constant command callbacks 2019-02-11 14:07:49 -05:00
Daniil Fedotov 680c8969ca Add more command descriptions 2019-02-11 14:07:34 -05:00
Daniil Fedotov 5fabaeddb4 Cleanup help command. Support plugin sections in command list. 2019-02-11 14:06:16 -05: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 a7d70f1448 More descriptions for commands 2019-02-11 09:35:12 -05:00
Jean-Sébastien Pédron b17a998ed1 list_feature_flags_command.ex: Add `doc_url` to the columns list
[#160169569]
2019-02-11 11:01:18 +01:00
Daniil Fedotov 3d13da5797 More command descriptions. 2019-02-08 15:57:10 -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 f526663e9a Cosmetics 2019-02-05 21:29:28 +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
Luke Bakken 962e0cf7c7 Ensure longnames option is passed to normalise_node
Fixes #311
2019-02-05 07:27:34 -08:00
Arnaud Cogoluègnes 97c048cf37 Add active consumer fields if necessary
When calling node is 3.8 and one of the nodes is < 3.8, active and
activity status fields need to be set with default values.

[#163298456]
2019-02-05 15:06:51 +01:00
Jean-Sébastien Pédron aa93258f16 wait_command.ex: Fix function clause with validate/2
The function didn't have the success path, i.e. when one of `--pid` or a
pidfile is specified.
2019-02-04 12:07:53 +01:00
Michael Klishin 041a6c2bdf Reuse existing modules more, rearrange functions 2019-02-04 02:22:21 +03: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 7ad9176435 Further improvements to the shutdown command
Add --[no-]wait (enabled by default) for those who would prefer
to use it to shut down remote nodes even though it wouldn't wait for
a verified node termination.

Propagate --timeout to calls.

References #309.
2019-02-03 20:40:01 +03:00
Michael Klishin 0786b13d4a Move the node locality to a validator 2019-02-03 18:37:28 +03:00
Michael Klishin 29d01a44fb Merge branch 'master' into shutdown_require_local_host 2019-02-03 18:15:17 +03:00
Michael Klishin da514824c9 No more "error, operation completed successfully" jokes necessary 2019-02-03 06:20:35 +03:00
Michael Klishin db72acf1a3 Squash a couple of warnings 2019-02-03 06:20:04 +03:00
Michael Klishin 2ad334c91f Refactor 2019-02-03 04:55:37 +03:00
Michael Klishin bf00712add Make all list_* commands available to rabbitmq-diagnostics 2019-02-03 04:32:37 +03:00
Jean-Sébastien Pédron e25fee769a Set `feature_flags_file` app env for {forget,rename}_cluster_node
This is required when we try to impersonate a node: that node needs to
know about the actually enabled feature flags to act properly.

[#160169569]
2019-02-02 01:30:27 +01:00
Daniil Fedotov 8bf5e81926 Merge pull request #308 from rabbitmq/rabbitmqctl-cli-307
Support bare --help
2019-02-01 21:43:17 +04:00
Jean-Sébastien Pédron 627f3893bf records.ex: The `#amqqueue{}` record is now private
No need to import it in the Elixir world.

[#159298729]
2019-02-01 17:51:24 +01:00
Jean-Sébastien Pédron e22936b38c New `pretty_table` formatter
Use it by specifying the following flag on the command line:
  --formatter pretty_table

Tables are printed using ANSI line drawing (or ASCII characters) and
colors.

Example:

    Listing queues for vhost / ...
    ┌──────┬──────────┬──────────────────┐
    │ name │ messages │ pid              │
    ├──────┼──────────┼──────────────────┤
    │ b    │ 0        │ #PID<9901.899.0> │
    ├──────┼──────────┼──────────────────┤
    │ c    │ 0        │ #PID<9901.914.0> │
    ├──────┼──────────┼──────────────────┤
    │ a    │ 0        │ #PID<9901.887.0> │
    └──────┴──────────┴──────────────────┘

Internally, it uses the `rabbit_pretty_stdout` module from
rabbitmq-common.
2019-02-01 17:51:24 +01:00
Luke Bakken 9b01b1cf3c Add `list_feature_flags` and `enable_feature_flag` commands
As their name suggests, they are used to manage the feature flags of
RabbitMQ and its plugins.

[#159298729]
2019-02-01 17:51:21 +01:00
Daniil Fedotov 7bc4bf9dfa Make shutdown command require a node to be local.
Shutdown waits for the node to stop based on OS pid,
if the node is not local, it will be the wrong pid.

[#142699795]
2019-02-01 11:47:37 -05: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 345ce6d867 Cosmetic: move default switches and aliases to the top of the parser module 2019-01-31 11:38:46 -05:00
Michael Klishin db2f6bc4e6 Help message copywriting 2019-01-31 01:39:12 +03:00
Michael Klishin c79ac644b9 Mention --help in the global option section 2019-01-31 01:14:55 +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
Daniil Fedotov 91bb84bc82 Move table_headers parameter definition to formatter.
Since #301 formatters support their own parameters
2019-01-30 16:02:11 -05:00
Michael Klishin 94b55d71fa Format with `gmake format` 2019-01-30 22:20:29 +03:00
Michael Klishin de3bca0658 memory_breakdown: correctly format for CSV 2019-01-30 21:47:07 +03:00
Michael Klishin 7db0d6ee01 Present correct name for `rabbitmq-diagnostics check_alarms` 2019-01-30 16:08:46 +03:00
Michael Klishin 724dbca331 Merge pull request #303 from rabbitmq/await_startup_with_a_timeout
New command: `rabbitmqctl await_startup`
2019-01-28 21:06:41 +03:00
Michael Klishin 5fad316390 New command: `rabbitmqctl await_startup`
Like `rabbitmqctl wait` but doesn't use a pid file path.

Pair: @gerhard.

References rabbitmq/rabbitmq-server#1848.
2019-01-28 20:45:08 +03:00
Arnaud Cogoluègnes 606b72b5a6 Add active to default fields for list_consumers
[#163298456]

References rabbitmq/rabbitmq-server#1839
2019-01-24 18:26:39 +01:00
Arnaud Cogoluègnes 1732932f7b Merge branch 'master' into rabbitmq-server-1838-active-field-for-consumers 2019-01-24 10:46:58 +01: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
Michael Klishin d767b4520b Merge branch 'master' into formatter_switches 2019-01-24 10:57:34 +03:00
Michael Klishin a6cf0c5539 Correct protocol labels for STOMP and MQTT 2019-01-24 10:37:36 +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 e8729c5de0 Introduce 'rabbitmq-diagnostics check_port_connectivity' 2019-01-23 22:30:20 +03:00
Michael Klishin ad23b37e3f Introduce 'rabbitmq-diagnostics check_port_listener <port>'
Part of #292.
2019-01-23 19:13:08 +03:00
Michael Klishin bd618db9cd Introduce 'rabbitmq-diagnostics check_protocol_listener'
Part of #292.
2019-01-23 17:45:37 +03:00
Michael Klishin 3f9c982d44 Standardize on :not_enough_args
That's what most commands use and the execution pipeline
expects.
2019-01-23 15:20:24 +03:00
Michael Klishin 9a134415fc More typos 2019-01-23 14:15:38 +03:00
Michael Klishin fefc8047dc One more typo 2019-01-23 14:15:26 +03:00
Michael Klishin ad5902a5f8 Clarify 2019-01-23 14:14:50 +03:00
Michael Klishin 9df7048425 Correct a moduledoc typo 2019-01-23 14:14:20 +03:00
Michael Klishin 53f064b989 Remove an unused alias 2019-01-23 10:49:27 +03:00
Michael Klishin 5c4ed6b912 Format generic error triplets 2019-01-23 10:44:19 +03:00
Michael Klishin 94d5216e68 New check command: 'rabbitmq-diagnostics check_running'
Like is_running but will exit with a non-0 code if the app is
not running on the target node.
2019-01-23 10:43:12 +03:00
Michael Klishin 51d7490bd7 Use exit code of 69 (EX_UNAVAILABLE) by default
Per [1], which is still the best guide on the subject we could find,
EX_UNAVAILABLE makes more sense as a catch-all error compared to EX_SOFTWARE.

Per discussion with @gerhard.

1. https://www.freebsd.org/cgi/man.cgi?query=sysexits&apropos=0&sektion=0&manpath=FreeBSD+12.0-RELEASE&arch=default&format=html
2019-01-23 10:20:46 +03:00
Michael Klishin 58a66af140 Refactoring 2019-01-23 10:12:27 +03:00
Michael Klishin 18ff37665c Change rabbitmq-diagnostics is_booting and is_running to be info commands
This means that even in the "negative" response they exit with a 0
status code. In other words, they just tell the user the state of things
without asserting on what constitutes a success or failure.

This is consistent with some recently introduced diagnostics commands:
some are "informational" (simply provide an insight into the state
of the node) and others are checks (optinionated, consider certain
conditions to be faulty and exit with a non-zero exit code).

References #292.
2019-01-23 08:49:05 +03:00
Michael Klishin b87678ee99 Follow command naming pattern in file names, too 2019-01-23 07:29:51 +03:00
Michael Klishin dbbb475b16 Fix compiler warnings 2019-01-22 13:53:49 +03:00
Michael Klishin cf226bb004 Tests and revisions for 'rabbitmq-diagnostics check[_local]_alarms'
References #292.
2019-01-22 13:28:42 +03:00
Michael Klishin 4bc3e51461 Introduce rabbitmq-diagnostics check[_local]_alarms
References #292.
2019-01-22 13:28:42 +03:00
Michael Klishin aad1c3ae0e Correct local vs. global alarm filtering 2019-01-22 13:27:52 +03:00
Michael Klishin 44e453fe25 Initial version of rabbitmq-diagnostics alarms 2019-01-22 13:27:51 +03:00
Michael Klishin 4d9c6462f1 Enquote listener interface for machine-readable formats, too 2019-01-22 12:26:28 +03:00
Michael Klishin e938a6c1e1 Initial version of the 'rabbitmq-diagnostics listeners' command
Part of #292.
2019-01-22 12:26:28 +03:00
Michael Klishin 1722a085d9 JSON formatter: flatten the stream before formatting
Otherwise JSON array items are enclosed in an array, which unlikely
was the intent.

(cherry picked from commit b66751490798d1b374a0ffde73307b84f510f420)
2019-01-22 11:49:27 +03:00
Arnaud Cogoluègnes ca396e0ce5 Add active and activity status fields to list_consumers
[#163298456]

References rabbitmq/rabbitmq-management#1838
2019-01-21 14:36:53 +01:00
Michael Klishin 08fb2b77fb Copy, list plugins that are not enabled 2019-01-21 13:36:58 +03:00
Michael Klishin e54134baa5 Code style 2019-01-21 13:29:52 +03:00
Michael Klishin a6338ba134 Use return code of 69 Unavailable here 2019-01-21 13:29:33 +03:00
Michael Klishin 84c1d51c92 Introducee rabbitmq-plugins is_enabled [plugin 1] [plugin 2] [...]
Part of #292.
2019-01-21 11:02:10 +03:00
Michael Klishin be2c1e7101 Introoduce rabbitmq-diagnostics is_running, is_booting 2019-01-20 07:33:40 +03:00
Michael Klishin b6f4d75afc Update (c) year 2019-01-20 06:10:59 +03:00
Arnaud Cogoluègnes c6d4fcf19d Add single active field to list_consumers command
[#163089472]

References rabbitmq/rabbitmq-management#649
2019-01-16 10:38:57 +01:00
Michael Klishin 9479a466f5 Revert "Pad info items in the table formatter to be at least as wide as header."
This reverts commit fc4264224a.

This is a breaking change for tools that parse list_* command tables
and after revisiting our own test suites I'm not sure it's worth the burden.
2018-12-29 01:44:16 +03:00
Daniil Fedotov fc4264224a Pad info items in the table formatter to be at least as wide as header. 2018-12-28 17:42:21 +04:00
Michael Klishin d0ea645ea3 New command: rabbitmq-diagnostics tls_versions
Like cipher_suites but for supported (available in the runtime)
TLS versions.

[#162832991]
2018-12-24 15:25:35 +03:00
Luke Bakken f1b6283e9f Format changed file with "mix format" 2018-12-19 16:14:43 -08:00
Luke Bakken 7629703ca4 Add chunks equal to number of nodes
Fixes #284
2018-12-19 14:44:53 -08: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
Michael Klishin e0e33f4b73 New diagnostics command: runtime_thread_stats
Uses Erlang's microstate accounting data to produce
high level thread state/activity breakdown.

Per discussion with @gerhard.
2018-12-07 18:43:48 +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 5861d2da3b Do not raise error as offline commands will crash 2018-11-30 15:02:22 -08:00
Luke Bakken 1d878c79e1 Fix merge defaults test, fix warnings 2018-11-30 14:48:47 -08:00
Luke Bakken 9cc61e594b Add tests for normalising name with :longnames 2018-11-30 13:58:27 -08:00
Luke Bakken ff6243bfd2 Fix test for @hostname case 2018-11-30 12:27:58 -08:00
Luke Bakken 35ffd53be1 Rename parse_node to normalise_node 2018-11-30 12:14:21 -08:00
Luke Bakken c8e766dec7 Add function to normalise :node option after distribution started
Fixes #278
2018-11-30 07:00:18 -08:00
Michael Klishin df5db4ec1b Validate log level values, format unsupported level errors in a more human-friendly way 2018-11-29 00:20:41 +08:00
Luke Bakken 0e7608083b Add command to set log level
Fixes #276
2018-11-27 15:49:11 -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
Michael Klishin a3658df971 Merge pull request #272 from rabbitmq/idempotent-stop
Make stop idempotent using --idempotent flag
2018-11-01 23:47:07 +03:00
Michael Klishin 6416d745ed Update tests
[#161309687]
2018-11-01 23:46:32 +03:00
Luke Bakken 2f16936e36 Merge pull request #271 from rabbitmq/rabbitmq-cli-270
Ensure cli name ends with correct hostname
2018-11-01 09:31:43 -07:00
Diana Corbacho b8ab5f9b01 Rename ignore-stopped flag to idempotent
[#161309687]
2018-11-01 16:18:38 +00:00
Diana Corbacho 68d901bc3a Make stop idempotent using --ignore-stopped flag
[#161309687]
2018-11-01 14:22:13 +00:00
Daniil Fedotov 915004de25 Make CSV formatter return a string from format_output
By default CSV.encode returns a stream. Plain-value output does not
support streams.
2018-11-01 10:22:56 +00:00
Luke Bakken 933f4476f5 Improve scenario where inet:get_rc/0 does not return domain info 2018-10-31 19:33:10 -07:00
Luke Bakken 585bdacba2 Ensure cli name ends with correct hostname
If longnames are in use, this also ensures that the domain (if known) is appended to the CLI node name

CLI node names will be based on RabbitMQ host names

Fixes #270
2018-10-31 13:33:54 -07:00
Michael Klishin 36ad6dfdb5 Merge pull request #269 from rabbitmq/rabbitmq-cli-267
rabbitmq-diagnostics: make cipher_suites default to --openssl-format
2018-10-30 07:06:57 +03:00
Michael Klishin 7a4e7c403f Use a custom formatter for cipher_suites
There are effectively two separate formatters used:

 * The String one for --openssl-format
 * Command-joined Inspect for --erlang-format

This implementation is more involved than using :io_lib:format/2
on a collection but it fits the run/output/print framework every
command uses.

References #267.
2018-10-30 06:58:07 +03:00
Luke Bakken 3c3ae2afeb Output in erlang term format that can be pasted into a config file 2018-10-29 16:43:54 -07:00
Michael Klishin 582fa06686 More warnings 2018-10-30 00:51:35 +03:00
Michael Klishin 152395c30b Squash a warning 2018-10-30 00:33:15 +03:00
Michael Klishin 875c7827f6 rabbitmq-diagnostics: make cipher_suites default to --openssl-format
And introduce --erlang-format. They are mutually exclusive.

Closes #267.
[#161435591]
2018-10-28 23:31:39 +03:00
Daniil Fedotov 19a58551b3 Improve error reporting for quorum queues commands.
Validate that the rabbit app is runninig.
Format error when trying to access a classic queue.
Minor refactorings.
2018-10-26 15:20:34 +01:00
Diana Corbacho c9d9dc58a8 Delete quorum member command
[#157481599]
2018-10-26 14:50:36 +01:00
Diana Corbacho 357cd5c1b6 Add quorum queue member command
[#157481599]
2018-10-26 14:50:36 +01:00
Diana Corbacho 6bda3873d6 Add quorum status command to report local ra state
[#157146500]
2018-10-26 14:50:36 +01:00
Michael Klishin 5e54354fdf Make it possible to suppress table headers for list_* commands
Using --no-table-headers, per discussion with @dumbbell.
2018-10-24 16:43:58 +03:00
Michael Klishin f7d307dd30 Merge pull request #266 from rabbitmq/rabbitmq-server-1712
Output cipher suites one by one
2018-10-24 02:15:26 +03:00
Michael Klishin 1296e6824e Output cipher suites one by one
This is more useful to the users of the new config format.

References rabbitmq/rabbitmq-server#1712.

[#160792113]
2018-10-24 01:44:24 +03:00
Daniil Fedotov 222e486ca7 Add headers to the table formatter.
There were headers in 3.6 CLI which were not implemented when moving
to the new one.

Fixes #264
[#161326468]
2018-10-22 10:55:16 +01:00
Michael Klishin 312b6f57c4 Use the correct key name for plugin archive directory
[#160792758]
2018-10-03 17:05:07 +03:00
Michael Klishin 5ec71c18f3 Retrieve plugin directory and file information via Config
[#160792758]
2018-10-03 16:43:42 +03:00
Michael Klishin a85908aa30 Simplify clauses, make --offline more robust
[#160792758]
2018-10-02 15:34:20 +03:00
Michael Klishin 0defc87c20 Wording 2018-10-02 14:23:39 +03:00
Michael Klishin 3a30b45c5d Wording 2018-10-02 14:22:42 +03:00
Michael Klishin 1b56fc5957 New command: rabbitmq-plugins directories
Closes rabbitmq/rabbitmq-cli#261.

[#160792758]
2018-10-02 03:16:25 +03:00
Luke Bakken ad184bac68 Add global parameters to rabbbitmqctl report
Follow-up to #256
2018-08-27 14:38:26 -07:00
Jean-Sébastien Pédron 4f3b2d39bd RabbitMQ.CLI.Core.Parser: Set `allow_nonexistent_atoms` in OptionParser
There is a change of behavior in OptionParser between Elixir 1.6.x and
1.7.x. It's probably the deprecation documented in Elixir 1.7.0 release
notes:

    [OptionParser] Deprecate dynamic option parser mode that depended on
    atoms to be previously loaded and therefore behaved inconsistently

Setting the `allow_nonexistent_atoms` to true allows to restore the
behavior from Elixir 1.6.x, thus giving a consistent parsing with both
versions of Elixir.

[#159500280]
2018-08-03 13:17:09 +02:00
Ayanda Dube c88cfd940d Reduce code footprint on aliases 2018-07-23 06:06:18 +01:00
Ayanda Dube 4ee275cbcd Include policies and parameters in report command 2018-07-16 16:36:47 +01:00
Michael Klishin 40b40a6d42 Make the ping command available in rabbitmq-diagnostics as well
References #253.

[#158291890]
2018-06-13 00:38:02 +03:00
Michael Klishin 158dc0eb7e Wording 2018-06-13 00:37:17 +03:00
Michael Klishin b20418cb83 Pass current node as is_auth "argument"
To be closer to what net_adm:ping/1 does. The argument
is then ignored by net_kernel, though.

[#158291890]
2018-06-12 23:18:48 +03:00
Michael Klishin ee2b185db9 Introduce rabbitmqctl ping
See #253 for background.

[#158291890]
2018-06-12 16:47:54 +03:00
Michael Klishin 09e86fb73d New command: await_online_nodes <count> [--timeout <timeout>]
Closes #235.

[#156729133]
2018-05-29 16:01:03 +03:00
Michael Klishin 1ea1edf865 Explain why --timeout is on the global flag list 2018-03-09 20:32:02 +03:00
Michael Klishin 56991de0f3 Accept -t/--timeout before command name [again]
There are existing users (including RabbitMQ core tests) that
use that sequence because it was previously in the docs.

This relaxes command validation so that if a command-specific
flag overrides a global, we accept it as long as their types match.

Per discussion with @hairyhum.
2018-03-09 20:28:26 +03:00
Luke Bakken e99bc16428 Whitespace changes
See #236
2018-03-08 14:13:32 -08:00
Michael Klishin d96d0f6e22 Axe some [now] dead code 2018-03-08 18:25:33 +03:00
Daniil Fedotov aef04bef84 Show timeout in help messages only for commands supporting timeout.
Removed timeout from default parsing options. Now every command
has to specify timeout in it's own switches.
If a command has timeout in switches - there will be help displayed
for this option in usage output.
2018-03-07 18:28:21 +00:00
Daniil Fedotov 0c83c05ec1 Do not show timeout option for rabbitmq-plugins tool.
The rabbitmq-plugins tool does not respect timeout option.
2018-03-07 15:51:54 +00:00
Daniil Fedotov 8b33c646ed Command to delete a queue. 2018-03-07 15:20:18 +00:00
Michael Klishin ee1a651f6d Squash a warning 2018-02-22 23:59:06 +03:00
Luke Bakken e4505bb9a6 Ensure another string case is taken care of
If a user happens to set the following in rabbitmq-env-conf.bat, it will be matched:

set USE_LONGNAME="true"

Fixes rabbitmq/rabbitmq-server#1508
2018-02-20 15:05:28 -08:00
Michael Klishin fa5763e6c2 Format "plugins not found" errors better
References #241.

(cherry picked from commit 018c829e1e)
2018-02-13 21:49:57 +03:00
Luke Bakken 08c3100897 Add function clause for set: case
Fixes #241
2018-02-13 09:08:59 -08:00
Daniil Fedotov 97b1f21803 Optimise some commands by not starting erlang distribution
(cherry picked from commit cf23e45cf9)
2018-01-16 20:05:51 +03:00
Daniil Fedotov 97846fcf79 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.

(cherry picked from commit b5de2236ce)
2018-01-16 20:05:41 +03:00
Michael Klishin 3435bc66a5 Wording 2017-12-08 17:56:07 -08:00
Luke Bakken 81862adcab Fixing SetParameterCommand and tests
Fix code to fix test suite
2017-12-08 11:49:20 -08:00
Michael Klishin 747f953d76 Remove an unused variable 2017-11-28 20:12:48 +03:00
Michael Klishin 404f55ecc9 Pick the max of totals, just like HTTP API reporter does 2017-11-28 19:47:51 +03:00
Michael Klishin 5cbb4039a6 Cosmetics 2017-11-28 19:28:34 +03:00
Michael Klishin a404c0b8c5 Adapt rabbitmq-diagnostics memory_breakdown to server master
Specifically to https://github.com/rabbitmq/rabbitmq-server/pull/1404.

Closes #228.

[#153217000]
2017-11-28 19:12:14 +03:00
Michael Klishin 82d5fcd804 Merge pull request #227 from rabbitmq/rabbitmq-cli-226
Fix rabbitmq-plugins enable/disable/set behavior for --online flag.
2017-11-28 00:04:18 +03:00
Michael Klishin e5fd1ccc5a Cosmetics 2017-11-27 23:39:14 +03: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
Michael Klishin 9cbfbc21a0 Correctly format the list of missing plugins
Closes #224.
[#153141065]
2017-11-27 18:32:53 +03:00
Michael Klishin 1103c82a87 Don't require RabbitMQ node to be running for `rabbitmq-plugins list'
This extra validation wasn't intentional and turns out to be inconvenient
for provisioning and automation projects such as BOSH releases and Docker images.
2017-09-05 13:45:17 -07:00
Daniil Fedotov 32bd206ff9 Remove -l alias from help_command. It iss conflicting with default alias 2017-08-18 16:13:20 +01:00
Michael Klishin 206a5fb93c Squash a warning 2017-08-15 12:53:31 +03:00
Daniil Fedotov 8bc0b68f4e Change validation for the force_boot command 2017-08-14 19:20:32 +01:00
Daniil Fedotov 7b2de34620 Error message if a command has duplicate global switches 2017-08-14 17:14:41 +01:00
Daniil Fedotov 141e845fab Remove duplicate global switches. 2017-08-14 17:14:41 +01: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
Daniil Fedotov 3e30b8a4f3 Enable rabbit app validation for list_parameters and clear_permissions. Disable the validation for shutdown 2017-08-14 11:59:35 +01:00
Luke Bakken cb65a340d5 Add single quotes around commands given in output 2017-08-11 17:00:20 -07:00
Luke Bakken 006ff6a259 Remove extra whitespace 2017-08-11 14:57:18 -07:00
Michael Klishin b00e648b9c Extend execution environment validation to more commands
This also re-formats a bunch of commands to follow the same
order for the following functions:

 * merge_defaults/2
 * validate/2
 * validate_execution_environment/2
 * run/2
2017-08-11 18:06:30 +03:00
Michael Klishin ea1078fc5f Update command type specs 2017-08-11 18:06:16 +03:00
Michael Klishin 6b007ab1cf Make sure we format errors here 2017-08-11 18:04:00 +03:00
Michael Klishin fa0515911f These commands don't really require the rabbit app to be running 2017-08-11 14:37:02 +03:00
Michael Klishin 586a557096 Add a type spec for validate_execution_environment/2 2017-08-11 14:15:36 +03:00
Michael Klishin 8cee00231b Introduce RabbitMQ.CLI.Core.RequiresRabbitApp{Running,Stopped}
and apply them to a subset of commands.
2017-08-11 02:23:53 +03:00
Michael Klishin efe8725f3c Merge branch 'master' into rabbitmq-cli-214-take-two 2017-08-10 14:21:42 +03:00
Daniil Fedotov e8c73d9bea Merge branch 'master' into rabbitmq-cli-207 2017-08-09 14:36:07 +01:00
Daniil Fedotov de10e4f5a7 Different list of info items for unresponsive queues 2017-08-09 14:34:01 +01:00
Daniil Fedotov 035e7305ac Merge pull request #218 from rabbitmq/timeout_list_queues
Set a timeout on list_queues and a warning if unresponsive ones are found
2017-08-09 17:24:40 +04: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 afa605b3e9 Merge branch 'master' into rabbitmq-cli-214-take-two
Conflicts:
	lib/rabbitmq/cli/plugins/commands/enable_command.ex
2017-08-08 19:14:07 +03:00
Michael Klishin 82ebcfafeb Assume this match is exhaustive 2017-08-08 19:12:19 +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 738f667716 Override timeout 2017-08-08 10:01:32 +02:00
Michael Klishin 6c70863dcf rabbitmq-plugins: refactor to validate_execution_environment/2 and R.C.C.Validators.chain/2 2017-08-08 03:21:07 +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 15565ec1d7 rabbitmq-plugins set: switch to validate_execution_environment/2 2017-08-07 16:44:19 +03:00
Diana Corbacho 829a918c5a Use info items to list unresponsive queues
rabbitmq-cli#207
[#149059849]
2017-08-07 15:08:33 +02:00
Michael Klishin 2e64c90913 rabbitmq-plugins enable: switch to validate_execution_environment/2 2017-08-07 16:04:30 +03:00
Michael Klishin 770258ea65 rabbitmq-plugins disable: switch to validate_execution_environment/2 2017-08-07 14:47:17 +03:00
Michael Klishin 4b6978f26d Squash a couple more warnings 2017-08-04 22:41:12 +03:00
Michael Klishin e9fa801d6f Update restart_vhost usage 2017-08-04 21:45:22 +03:00
Michael Klishin 6da66de40a forget_cluster_node: switch to validate_execution_environment/2 2017-08-04 19:15:53 +03: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
Daniil Fedotov 10bb587d61 The command to restart a vhost.
The command will attempt to restart a vhost.
If restarted successfully, return exit code 0
If the vhost is already started, return exit code 0 and notify that it's already started.
If there is an error restarting, return exit code 70 and the error
Part of rabbitmq/rabbitmq-server#1321
[#149484305]
2017-08-04 11:32:40 +01:00
Daniil Fedotov a7bd5811d0 Change state in vhost info to cluster_state 2017-08-01 14:56:21 +01:00
Daniil Fedotov 59c1a54cad Do not format errors using to_string. Let rabbitmqctl core do the formatting 2017-07-31 15:57:10 +01:00
Diana Corbacho 3c6a59079c Command to report unresponsive queues
rabbitmq-cli#207
[#149059849]
2017-07-27 17:50:52 +02:00
Karl Nilsson d4e701bb3d Merge pull request #211 from rabbitmq/rabbitmq-management-446
Report vhost status on list_vhosts command
2017-07-25 18:38:15 +01:00
Diana Corbacho 05469e4bad Report vhost status on list_vhosts command
rabbitmq-management#446
[#149398495]
2017-07-25 11:47:07 +01:00
Michael Klishin bd96454992 Merge pull request #210 from rabbitmq/rabbitmq-server-1296
Do not crash command loading if unable to read enabled plugins file.
2017-07-24 22:10:43 +03:00
Michael Klishin 540b5bd170 Copy 2017-07-24 22:07:46 +03:00
Daniil Fedotov 306b7574e4 Do not crash command loading if unable to read enabled plugins file.
Some distributions set no permissions to read the enabled plugins
file location. This can cause a crash when running not as root or
rabbitmq user.
It was decided that plugins commands can be skipped when printing
the help message if the user have no access to the enabled plugins
file.
The warning message will be displayed in that case.

Addresses https://github.com/rabbitmq/rabbitmq-server/issues/1296
[#149079123]
2017-07-24 17:28:12 +01:00
Michael Klishin 6926a3a9a8 Recompile pid_regex at runtime, too 2017-07-20 17:51:30 +03:00
kjnilsson 54f417b93f Recompile regexes at runtime.
Because the regex engine may change between OTP versions it is necessary
to recompile any compiled regexes at runtime in case the engine is not
compatible.

[#149227527]
2017-07-20 14:08:43 +01: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 4383c3e280 Tests, refactoring 2017-07-14 03:33:46 +03:00
Michael Klishin d4bf287a90 output formatter now can rely on command defaults 2017-07-13 15:53:18 +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 f5ddac1f22 Merge branch 'master' into memory_breakdown_command 2017-07-13 03:50:03 +03:00
Michael Klishin 330d8a4eda rabbitmq-diagnostics memory_breakdown: WIP 2017-07-13 03:45:01 +03:00
Michael Klishin df726906a2 Make arguments in this fn head easier to identify 2017-07-12 13:08:20 +03:00
Michael Klishin 7361c7d54a Merge branch 'master' into rabbitmq-cli-202 2017-07-12 13:04:07 +03:00
Michael Klishin 8745bdf5df Squash a warning 2017-07-12 13:03:30 +03:00
Diana Corbacho 1be262d496 Avoid streaming if no nodes are available
rabbitmq-cli-202
[#148733373]
2017-07-12 10:35:32 +01:00
Michael Klishin de41a1081a Introduce rabbitmq-diagnostics erlang_version 2017-07-11 15:28:12 +03:00
Michael Klishin c26a7a5909 Introduce rabbitmq-diagnostics server_version 2017-07-11 13:26:05 +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 65346cde82 Use rabbit_nodes_common here 2017-07-04 22:24:19 +03:00
Michael Klishin a9bd603352 Squash a warning 2017-07-04 22:24:00 +03:00
Michael Klishin 09eee9fd53 Improve error messages 2017-07-03 16:39:04 +03:00
Michael Klishin 5774bc64e5 Merge branch 'master' into rabbitmq-cli-encode-commands 2017-07-03 15:52:07 +03:00
Daniil Fedotov 58304ffc95 Split encode command tests to separate commands 2017-07-03 12:11:34 +01: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
Daniil Fedotov c40368fe02 Split encode command to encode, decode, list_ciphers and list_hashes commands
[#147861659]
2017-06-28 17:19:42 +01:00
Daniil Fedotov a4b452545b Improve formatting for list_vhost_limits command.
Format limits as JSON.
Make sure vhost field printed before limits.
2017-06-27 17:28:37 +01:00
Jean-Sébastien Pédron 66a7ee4cab distribution.ex: ensure_epmd() was moved to rabbit_nodes_common
[#147436507]
2017-06-26 19:28:52 +02:00
Daniil Fedotov ee8c2f133c Support Elixir-1.5.0-rc.0 2017-06-26 11:59:46 +01:00
Michael Klishin 2ac997fd89 Merge pull request #200 from rabbitmq/rabbitmq-cli-199
Handle error in `rabbit_mnesia:cluster_nodes/1` on cluster_status command
2017-06-16 19:48:43 +03:00
Michael Klishin 6410ba0272 Fix compiler warnings that hinted at a typo in atom name
First spotted by @lbakken.
2017-06-16 19:43:09 +03:00
Michael Klishin a1e07c72f1 Merge pull request #198 from rabbitmq/rabbitmq-cli-197
Use the output of multirpc to report the down or timed out nodes
2017-06-16 19:40:38 +03:00
Diana Corbacho beacfe998a Handle error in `rabbit_mnesia:cluster_nodes/1` on cluster_status command
If the error is ignored, an Enum exception is triggered which is not
meaningful for the final user. Notifying that something is wrong accessing
to Mnesia files provides a hint. Can be eventually reproduced while
the node is restarting.

rabbitmq-cli#199
2017-06-16 16:51:57 +01: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 81c1f9461f Add an output formatter for report command
Report command executes other commands, so it's formatter
cannot be changed using command line argument.
Report formatter will format each command output with this command
default formatter.
2017-06-15 16:32:39 +01:00
Daniil Fedotov 3693daf693 Add functions to get info keys to list_* commands 2017-06-15 16:31:32 +01:00