fix: bp_api for relup
This commit is contained in:
parent
f11dfce292
commit
fc3405fe4c
|
@ -47,6 +47,7 @@
|
||||||
{emqx_mgmt_api_plugins,1}.
|
{emqx_mgmt_api_plugins,1}.
|
||||||
{emqx_mgmt_api_plugins,2}.
|
{emqx_mgmt_api_plugins,2}.
|
||||||
{emqx_mgmt_api_plugins,3}.
|
{emqx_mgmt_api_plugins,3}.
|
||||||
|
{emqx_mgmt_api_relup,1}.
|
||||||
{emqx_mgmt_cluster,1}.
|
{emqx_mgmt_cluster,1}.
|
||||||
{emqx_mgmt_cluster,2}.
|
{emqx_mgmt_cluster,2}.
|
||||||
{emqx_mgmt_cluster,3}.
|
{emqx_mgmt_cluster,3}.
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
-include_lib("typerefl/include/types.hrl").
|
-include_lib("typerefl/include/types.hrl").
|
||||||
-include_lib("emqx/include/logger.hrl").
|
-include_lib("emqx/include/logger.hrl").
|
||||||
|
|
||||||
-export([get_upgrade_status/0]).
|
-export([get_upgrade_status/0, emqx_relup_upgrade/1]).
|
||||||
|
|
||||||
-export([
|
-export([
|
||||||
api_spec/0,
|
api_spec/0,
|
||||||
|
@ -55,7 +55,7 @@
|
||||||
|
|
||||||
-define(ASSERT_PKG_READY(EXPR),
|
-define(ASSERT_PKG_READY(EXPR),
|
||||||
case code:is_loaded(emqx_relup_main) of
|
case code:is_loaded(emqx_relup_main) of
|
||||||
false -> return_bad_request(<<"No relup package is installed">>);
|
false -> return_package_not_installed();
|
||||||
{file, _} -> EXPR
|
{file, _} -> EXPR
|
||||||
end
|
end
|
||||||
).
|
).
|
||||||
|
@ -546,7 +546,7 @@ upgrade_with_targe_vsn(Fun) ->
|
||||||
{ok, TargetVsn} ->
|
{ok, TargetVsn} ->
|
||||||
Fun(TargetVsn);
|
Fun(TargetVsn);
|
||||||
{error, no_relup_package_installed} ->
|
{error, no_relup_package_installed} ->
|
||||||
return_bad_request(<<"No relup package is installed">>);
|
return_package_not_installed();
|
||||||
{error, multiple_relup_packages_installed} ->
|
{error, multiple_relup_packages_installed} ->
|
||||||
return_internal_error(<<"Multiple relup package installed">>)
|
return_internal_error(<<"Multiple relup package installed">>)
|
||||||
end.
|
end.
|
||||||
|
@ -557,22 +557,24 @@ run_upgrade_on_nodes(Nodes, TargetVsn) ->
|
||||||
[] ->
|
[] ->
|
||||||
{204};
|
{204};
|
||||||
Filtered ->
|
Filtered ->
|
||||||
upgrade_return(
|
case hd(Filtered) of
|
||||||
case hd(Filtered) of
|
no_pkg_installed -> return_package_not_installed();
|
||||||
{badrpc, Reason} -> Reason;
|
{badrpc, Reason} -> return_internal_error(Reason);
|
||||||
{error, Reason} -> Reason;
|
{error, Reason} -> upgrade_return(Reason);
|
||||||
Reason -> Reason
|
Reason -> return_internal_error(Reason)
|
||||||
end
|
end
|
||||||
)
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
run_upgrade(TargetVsn) ->
|
run_upgrade(TargetVsn) ->
|
||||||
case call_emqx_relup_main(upgrade, [TargetVsn], no_pkg_installed) of
|
case emqx_relup_upgrade(TargetVsn) of
|
||||||
no_pkg_installed -> return_bad_request(<<"No relup package is installed">>);
|
no_pkg_installed -> return_package_not_installed();
|
||||||
ok -> {204};
|
ok -> {204};
|
||||||
{error, Reason} -> upgrade_return(Reason)
|
{error, Reason} -> upgrade_return(Reason)
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
emqx_relup_upgrade(TargetVsn) ->
|
||||||
|
call_emqx_relup_main(upgrade, [TargetVsn], no_pkg_installed).
|
||||||
|
|
||||||
get_target_vsn() ->
|
get_target_vsn() ->
|
||||||
case get_installed_packages() of
|
case get_installed_packages() of
|
||||||
[PackageInfo] -> {ok, target_vsn_from_rel_vsn(maps_get(rel_vsn, PackageInfo))};
|
[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)
|
message => emqx_utils:readable_error_msg(Reason)
|
||||||
}}.
|
}}.
|
||||||
|
|
||||||
|
return_package_not_installed() ->
|
||||||
|
return_bad_request(<<"No relup package is installed">>).
|
||||||
|
|
||||||
return_bad_request(Reason) ->
|
return_bad_request(Reason) ->
|
||||||
{400, #{
|
{400, #{
|
||||||
code => 'BAD_REQUEST',
|
code => 'BAD_REQUEST',
|
||||||
|
|
|
@ -34,10 +34,12 @@ introduced_in() ->
|
||||||
|
|
||||||
-spec run_upgrade([node()], string()) -> emqx_rpc:multicall_result().
|
-spec run_upgrade([node()], string()) -> emqx_rpc:multicall_result().
|
||||||
run_upgrade(Nodes, TargetVsn) ->
|
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() ->
|
get_upgrade_status_from_all_nodes() ->
|
||||||
rpc:multicall(emqx_mgmt_api_relup, get_upgrade_status, [], ?RPC_TIMEOUT_INFO).
|
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) ->
|
get_upgrade_status(Node) ->
|
||||||
rpc:call(Node, emqx_mgmt_api_relup, get_upgrade_status, [], ?RPC_TIMEOUT_INFO).
|
rpc:call(Node, emqx_mgmt_api_relup, get_upgrade_status, [], ?RPC_TIMEOUT_INFO).
|
||||||
|
|
Loading…
Reference in New Issue