cluster_status_command: Show product name & version if any

If the product name or version were overridden in a RabbitMQ node, we
will use this information in that node's line.
This commit is contained in:
Jean-Sébastien Pédron 2020-04-24 15:36:58 +02:00
parent 6ef926e0d5
commit 8075029537
1 changed files with 18 additions and 7 deletions

View File

@ -223,13 +223,24 @@ defmodule RabbitMQ.CLI.Ctl.Commands.ClusterStatusCommand do
end
defp versions_by_node(node, timeout) do
{rmq_vsn, otp_vsn} = case :rabbit_misc.rpc_call(
to_atom(node), :rabbit_misc, :rabbitmq_and_erlang_versions, [], timeout) do
{:badrpc, _} -> {nil, nil}
pair -> pair
{rmq_name, rmq_vsn, otp_vsn} = case :rabbit_misc.rpc_call(
to_atom(node), :rabbit, :product_info, [], timeout) do
{:badrpc, _} ->
{nil, nil, nil}
map ->
%{:otp_release => otp} = map
name = case map do
%{:product_name => v} -> v
%{:product_base_name => v} -> v
end
vsn = case map do
%{:product_version => v} -> v
%{:product_base_version => v} -> v
end
{name, vsn, otp}
end
{node, %{rabbitmq_version: to_string(rmq_vsn), erlang_version: to_string(otp_vsn)}}
{node, %{rabbitmq_name: to_string(rmq_name), rabbitmq_version: to_string(rmq_vsn), erlang_version: to_string(otp_vsn)}}
end
defp node_lines(nodes) do
@ -237,8 +248,8 @@ defmodule RabbitMQ.CLI.Ctl.Commands.ClusterStatusCommand do
end
defp version_lines(mapping) do
Enum.map(mapping, fn {node, %{rabbitmq_version: rmq_vsn, erlang_version: otp_vsn}} ->
"#{node}: RabbitMQ #{rmq_vsn} on Erlang #{otp_vsn}"
Enum.map(mapping, fn {node, %{rabbitmq_name: rmq_name, rabbitmq_version: rmq_vsn, erlang_version: otp_vsn}} ->
"#{node}: #{rmq_name} #{rmq_vsn} on Erlang #{otp_vsn}"
end)
end