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:
parent
6ef926e0d5
commit
8075029537
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue