fix(bridge_api): explicitly state bpapi version ranges

Fixes https://emqx.atlassian.net/browse/EMQX-11767

The currently supported version for a node may not be available at the time it's probed.
This commit is contained in:
Thales Macedo Garitezi 2024-01-19 10:20:57 -03:00
parent e219c3eda1
commit 4068258c78
2 changed files with 9 additions and 11 deletions

View File

@ -1132,15 +1132,14 @@ maybe_unwrap({error, not_implemented}) ->
maybe_unwrap(RpcMulticallResult) -> maybe_unwrap(RpcMulticallResult) ->
emqx_rpc:unwrap_erpc(RpcMulticallResult). emqx_rpc:unwrap_erpc(RpcMulticallResult).
supported_versions(start_bridge_to_node) -> bpapi_version_range(2, latest); supported_versions(start_bridge_to_node) -> bpapi_version_range(2, 6);
supported_versions(start_bridges_to_all_nodes) -> bpapi_version_range(2, latest); supported_versions(start_bridges_to_all_nodes) -> bpapi_version_range(2, 6);
supported_versions(get_metrics_from_all_nodes) -> bpapi_version_range(4, latest); supported_versions(get_metrics_from_all_nodes) -> bpapi_version_range(4, 6);
supported_versions(_Call) -> bpapi_version_range(1, latest). supported_versions(_Call) -> bpapi_version_range(1, 6).
%% [From, To] (inclusive on both ends) %% [From, To] (inclusive on both ends)
bpapi_version_range(From, latest) -> bpapi_version_range(From, To) ->
ThisNodeVsn = emqx_bpapi:supported_version(node(), ?BPAPI_NAME), lists:seq(From, To).
lists:seq(From, ThisNodeVsn).
redact(Term) -> redact(Term) ->
emqx_utils:redact(Term). emqx_utils:redact(Term).

View File

@ -1052,12 +1052,11 @@ do_bpapi_call_vsn(Version, Call, Args) ->
is_supported_version(Version, Call) -> is_supported_version(Version, Call) ->
lists:member(Version, supported_versions(Call)). lists:member(Version, supported_versions(Call)).
supported_versions(_Call) -> bpapi_version_range(6, latest). supported_versions(_Call) -> bpapi_version_range(6, 6).
%% [From, To] (inclusive on both ends) %% [From, To] (inclusive on both ends)
bpapi_version_range(From, latest) -> bpapi_version_range(From, To) ->
ThisNodeVsn = emqx_bpapi:supported_version(node(), ?BPAPI_NAME), lists:seq(From, To).
lists:seq(From, ThisNodeVsn).
maybe_unwrap({error, not_implemented}) -> maybe_unwrap({error, not_implemented}) ->
{error, not_implemented}; {error, not_implemented};