fix: bp_api for relup

This commit is contained in:
Shawn 2024-07-19 17:35:36 +08:00
parent f11dfce292
commit fc3405fe4c
3 changed files with 21 additions and 13 deletions

View File

@ -47,6 +47,7 @@
{emqx_mgmt_api_plugins,1}.
{emqx_mgmt_api_plugins,2}.
{emqx_mgmt_api_plugins,3}.
{emqx_mgmt_api_relup,1}.
{emqx_mgmt_cluster,1}.
{emqx_mgmt_cluster,2}.
{emqx_mgmt_cluster,3}.

View File

@ -20,7 +20,7 @@
-include_lib("typerefl/include/types.hrl").
-include_lib("emqx/include/logger.hrl").
-export([get_upgrade_status/0]).
-export([get_upgrade_status/0, emqx_relup_upgrade/1]).
-export([
api_spec/0,
@ -55,7 +55,7 @@
-define(ASSERT_PKG_READY(EXPR),
case code:is_loaded(emqx_relup_main) of
false -> return_bad_request(<<"No relup package is installed">>);
false -> return_package_not_installed();
{file, _} -> EXPR
end
).
@ -546,7 +546,7 @@ upgrade_with_targe_vsn(Fun) ->
{ok, TargetVsn} ->
Fun(TargetVsn);
{error, no_relup_package_installed} ->
return_bad_request(<<"No relup package is installed">>);
return_package_not_installed();
{error, multiple_relup_packages_installed} ->
return_internal_error(<<"Multiple relup package installed">>)
end.
@ -557,22 +557,24 @@ run_upgrade_on_nodes(Nodes, TargetVsn) ->
[] ->
{204};
Filtered ->
upgrade_return(
case hd(Filtered) of
{badrpc, Reason} -> Reason;
{error, Reason} -> Reason;
Reason -> Reason
end
)
case hd(Filtered) of
no_pkg_installed -> return_package_not_installed();
{badrpc, Reason} -> return_internal_error(Reason);
{error, Reason} -> upgrade_return(Reason);
Reason -> return_internal_error(Reason)
end
end.
run_upgrade(TargetVsn) ->
case call_emqx_relup_main(upgrade, [TargetVsn], no_pkg_installed) of
no_pkg_installed -> return_bad_request(<<"No relup package is installed">>);
case emqx_relup_upgrade(TargetVsn) of
no_pkg_installed -> return_package_not_installed();
ok -> {204};
{error, Reason} -> upgrade_return(Reason)
end.
emqx_relup_upgrade(TargetVsn) ->
call_emqx_relup_main(upgrade, [TargetVsn], no_pkg_installed).
get_target_vsn() ->
case get_installed_packages() of
[PackageInfo] -> {ok, target_vsn_from_rel_vsn(maps_get(rel_vsn, PackageInfo))};
@ -647,6 +649,9 @@ return_not_found(Reason) ->
message => emqx_utils:readable_error_msg(Reason)
}}.
return_package_not_installed() ->
return_bad_request(<<"No relup package is installed">>).
return_bad_request(Reason) ->
{400, #{
code => 'BAD_REQUEST',

View File

@ -34,10 +34,12 @@ introduced_in() ->
-spec run_upgrade([node()], string()) -> emqx_rpc:multicall_result().
run_upgrade(Nodes, TargetVsn) ->
rpc:multicall(Nodes, emqx_relup_main, upgrade, [TargetVsn], ?RPC_TIMEOUT_OP).
rpc:multicall(Nodes, emqx_mgmt_api_relup, emqx_relup_upgrade, [TargetVsn], ?RPC_TIMEOUT_OP).
-spec get_upgrade_status_from_all_nodes() -> emqx_rpc:multicall_result().
get_upgrade_status_from_all_nodes() ->
rpc:multicall(emqx_mgmt_api_relup, get_upgrade_status, [], ?RPC_TIMEOUT_INFO).
-spec get_upgrade_status(node()) -> emqx_rpc:call_result(map()).
get_upgrade_status(Node) ->
rpc:call(Node, emqx_mgmt_api_relup, get_upgrade_status, [], ?RPC_TIMEOUT_INFO).