RMQ-1263: An attempt to make shovel status tuple handling backwards compatible

This commit is contained in:
Iliia Khaprov 2025-03-26 20:03:09 +01:00
parent 11546aafa5
commit 4eda17bee2
3 changed files with 37 additions and 25 deletions

View File

@ -76,23 +76,27 @@ run([Name], #{node := Node, vhost := VHost}) ->
undefined ->
try_force_removing(Node, VHost, Name, ActingUser),
{error, rabbit_data_coercion:to_binary(ErrMsg)};
Match ->
{{_Name, _VHost}, _Type, {_State, Opts}, _Metrics, _Timestamp} = Match,
{_, HostingNode} = lists:keyfind(node, 1, Opts),
case rabbit_misc:rpc_call(
HostingNode, rabbit_shovel_util, delete_shovel, [VHost, Name, ActingUser]) of
{badrpc, _} = Error ->
Error;
{error, not_found} ->
try_force_removing(HostingNode, VHost, Name, ActingUser),
{error, rabbit_data_coercion:to_binary(ErrMsg)};
ok ->
_ = try_clearing_runtime_parameter(Node, VHost, Name, ActingUser),
ok
end
{{_Name, _VHost}, _Type, {_State, Opts}, _Metrics, _Timestamp} ->
delete_shovel(ErrMsg, VHost, Name, ActingUser, Opts, Node);
{{_Name, _VHost}, _Type, {_State, Opts}, _Timestamp} ->
delete_shovel(ErrMsg, VHost, Name, ActingUser, Opts, Node)
end
end.
delete_shovel(ErrMsg, VHost, Name, ActingUser, Opts, Node) ->
{_, HostingNode} = lists:keyfind(node, 1, Opts),
case rabbit_misc:rpc_call(
HostingNode, rabbit_shovel_util, delete_shovel, [VHost, Name, ActingUser]) of
{badrpc, _} = Error ->
Error;
{error, not_found} ->
try_force_removing(HostingNode, VHost, Name, ActingUser),
{error, rabbit_data_coercion:to_binary(ErrMsg)};
ok ->
_ = try_clearing_runtime_parameter(Node, VHost, Name, ActingUser),
ok
end.
switches() ->
[].

View File

@ -62,20 +62,24 @@ run([Name], #{node := Node, vhost := VHost}) ->
case rabbit_shovel_status:find_matching_shovel(VHost, Name, Xs) of
undefined ->
{error, rabbit_data_coercion:to_binary(ErrMsg)};
Match ->
{{_Name, _VHost}, _Type, {_State, Opts}, _Metrics, _Timestamp} = Match,
{_, HostingNode} = lists:keyfind(node, 1, Opts),
case rabbit_misc:rpc_call(
HostingNode, rabbit_shovel_util, restart_shovel, [VHost, Name]) of
{badrpc, _} = Error ->
Error;
{error, not_found} ->
{error, rabbit_data_coercion:to_binary(ErrMsg)};
ok -> ok
end
{{_Name, _VHost}, _Type, {_State, Opts}, _Metrics, _Timestamp} ->
restart_shovel(ErrMsg, Name, VHost, Opts);
{{_Name, _VHost}, _Type, {_State, Opts}, _Timestamp} ->
restart_shovel(ErrMsg, Name, VHost, Opts)
end
end.
restart_shovel(ErrMsg, Name, VHost, Opts) ->
{_, HostingNode} = lists:keyfind(node, 1, Opts),
case rabbit_misc:rpc_call(
HostingNode, rabbit_shovel_util, restart_shovel, [VHost, Name]) of
{badrpc, _} = Error ->
Error;
{error, not_found} ->
{error, rabbit_data_coercion:to_binary(ErrMsg)};
ok -> ok
end.
output(Output, _Opts) ->
'Elixir.RabbitMQ.CLI.DefaultOutput':output(Output).

View File

@ -43,6 +43,10 @@ status(Node) ->
end.
format(Node, {Name, Type, Info, _Metrics, TS}) ->
[{node, Node}, {timestamp, format_ts(TS)}] ++
format_name(Type, Name) ++
format_info(Info);
format(Node, {Name, Type, Info, TS}) ->
[{node, Node}, {timestamp, format_ts(TS)}] ++
format_name(Type, Name) ++
format_info(Info).