Merge pull request #7692 from thalesmg/bugfix-telemetry-enable-official
feat(telemetry): enable/disable even in non-official versions
This commit is contained in:
commit
14d80c7c46
|
@ -84,7 +84,8 @@ remove_topic_metrics(Topic) ->
|
||||||
|
|
||||||
-spec is_telemetry_enabled() -> boolean().
|
-spec is_telemetry_enabled() -> boolean().
|
||||||
is_telemetry_enabled() ->
|
is_telemetry_enabled() ->
|
||||||
emqx:get_config([telemetry, enable], true).
|
IsOfficial = emqx_telemetry:official_version(emqx_release:version()),
|
||||||
|
emqx:get_config([telemetry, enable], IsOfficial).
|
||||||
|
|
||||||
-spec set_telemetry_status(boolean()) -> ok | {error, term()}.
|
-spec set_telemetry_status(boolean()) -> ok | {error, term()}.
|
||||||
set_telemetry_status(Status) ->
|
set_telemetry_status(Status) ->
|
||||||
|
|
|
@ -116,7 +116,7 @@ stop() ->
|
||||||
gen_server:stop(?MODULE).
|
gen_server:stop(?MODULE).
|
||||||
|
|
||||||
enable() ->
|
enable() ->
|
||||||
gen_server:call(?MODULE, enable).
|
gen_server:call(?MODULE, enable, 15_000).
|
||||||
|
|
||||||
disable() ->
|
disable() ->
|
||||||
gen_server:call(?MODULE, disable).
|
gen_server:call(?MODULE, disable).
|
||||||
|
@ -146,21 +146,11 @@ init(_Opts) ->
|
||||||
{ok, State0#state{node_uuid = NodeUUID, cluster_uuid = ClusterUUID}}.
|
{ok, State0#state{node_uuid = NodeUUID, cluster_uuid = ClusterUUID}}.
|
||||||
|
|
||||||
handle_call(enable, _From, State0) ->
|
handle_call(enable, _From, State0) ->
|
||||||
case ?MODULE:official_version(emqx_app:get_release()) of
|
|
||||||
true ->
|
|
||||||
State = report_telemetry(State0),
|
State = report_telemetry(State0),
|
||||||
{reply, ok, ensure_report_timer(State)};
|
{reply, ok, ensure_report_timer(State)};
|
||||||
false ->
|
|
||||||
{reply, {error, not_official_version}, State0}
|
|
||||||
end;
|
|
||||||
handle_call(disable, _From, State = #state{timer = Timer}) ->
|
handle_call(disable, _From, State = #state{timer = Timer}) ->
|
||||||
case ?MODULE:official_version(emqx_app:get_release()) of
|
|
||||||
true ->
|
|
||||||
emqx_misc:cancel_timer(Timer),
|
emqx_misc:cancel_timer(Timer),
|
||||||
{reply, ok, State#state{timer = undefined}};
|
{reply, ok, State#state{timer = undefined}};
|
||||||
false ->
|
|
||||||
{reply, {error, not_official_version}, State}
|
|
||||||
end;
|
|
||||||
handle_call(get_node_uuid, _From, State = #state{node_uuid = UUID}) ->
|
handle_call(get_node_uuid, _From, State = #state{node_uuid = UUID}) ->
|
||||||
{reply, {ok, UUID}, State};
|
{reply, {ok, UUID}, State};
|
||||||
handle_call(get_cluster_uuid, _From, State = #state{cluster_uuid = UUID}) ->
|
handle_call(get_cluster_uuid, _From, State = #state{cluster_uuid = UUID}) ->
|
||||||
|
@ -200,7 +190,7 @@ code_change(_OldVsn, State, _Extra) ->
|
||||||
%%------------------------------------------------------------------------------
|
%%------------------------------------------------------------------------------
|
||||||
|
|
||||||
official_version(Version) ->
|
official_version(Version) ->
|
||||||
Pt = "^\\d+\\.\\d+(?:(-(?:alpha|beta|rc)\\.[1-9][0-9]*)|\\.\\d+)$",
|
Pt = "^\\d+\\.\\d+(?:\\.\\d+)?(?:(-(?:alpha|beta|rc)\\.[1-9][0-9]*))?$",
|
||||||
match =:= re:run(Version, Pt, [{capture, none}]).
|
match =:= re:run(Version, Pt, [{capture, none}]).
|
||||||
|
|
||||||
ensure_report_timer(State = #state{report_interval = ReportInterval}) ->
|
ensure_report_timer(State = #state{report_interval = ReportInterval}) ->
|
||||||
|
@ -454,6 +444,7 @@ advanced_mqtt_features() ->
|
||||||
maps:map(fun(_K, V) -> bool2int(V) end, AdvancedFeatures).
|
maps:map(fun(_K, V) -> bool2int(V) end, AdvancedFeatures).
|
||||||
|
|
||||||
get_authn_authz_info() ->
|
get_authn_authz_info() ->
|
||||||
|
try
|
||||||
#{
|
#{
|
||||||
authenticators := AuthnTypes,
|
authenticators := AuthnTypes,
|
||||||
overridden_listeners := OverriddenListeners
|
overridden_listeners := OverriddenListeners
|
||||||
|
@ -463,7 +454,15 @@ get_authn_authz_info() ->
|
||||||
authn => AuthnTypes,
|
authn => AuthnTypes,
|
||||||
authn_listener => OverriddenListeners,
|
authn_listener => OverriddenListeners,
|
||||||
authz => AuthzTypes
|
authz => AuthzTypes
|
||||||
}.
|
}
|
||||||
|
catch
|
||||||
|
_:_ ->
|
||||||
|
#{
|
||||||
|
authn => [],
|
||||||
|
authn_listener => [],
|
||||||
|
authz => []
|
||||||
|
}
|
||||||
|
end.
|
||||||
|
|
||||||
get_gateway_info() ->
|
get_gateway_info() ->
|
||||||
try
|
try
|
||||||
|
|
|
@ -215,7 +215,7 @@ status(put, #{body := Body}) ->
|
||||||
Reason =
|
Reason =
|
||||||
case Enable of
|
case Enable of
|
||||||
true -> <<"Telemetry status is already enabled">>;
|
true -> <<"Telemetry status is already enabled">>;
|
||||||
false -> <<"Telemetry status is already disable">>
|
false -> <<"Telemetry status is already disabled">>
|
||||||
end,
|
end,
|
||||||
{400, #{code => 'BAD_REQUEST', message => Reason}};
|
{400, #{code => 'BAD_REQUEST', message => Reason}};
|
||||||
false ->
|
false ->
|
||||||
|
|
|
@ -242,7 +242,18 @@ t_official_version(_) ->
|
||||||
false = emqx_telemetry:official_version("1.1-alpha.0"),
|
false = emqx_telemetry:official_version("1.1-alpha.0"),
|
||||||
true = emqx_telemetry:official_version("1.1-beta.1"),
|
true = emqx_telemetry:official_version("1.1-beta.1"),
|
||||||
true = emqx_telemetry:official_version("1.1-rc.1"),
|
true = emqx_telemetry:official_version("1.1-rc.1"),
|
||||||
false = emqx_telemetry:official_version("1.1-alpha.a").
|
false = emqx_telemetry:official_version("1.1-alpha.a"),
|
||||||
|
true = emqx_telemetry:official_version("5.0.0"),
|
||||||
|
true = emqx_telemetry:official_version("5.0.0-alpha.1"),
|
||||||
|
true = emqx_telemetry:official_version("5.0.0-beta.4"),
|
||||||
|
true = emqx_telemetry:official_version("5.0-rc.1"),
|
||||||
|
true = emqx_telemetry:official_version("5.0.0-rc.1"),
|
||||||
|
false = emqx_telemetry:official_version("5.0.0-alpha.a"),
|
||||||
|
false = emqx_telemetry:official_version("5.0.0-beta.a"),
|
||||||
|
false = emqx_telemetry:official_version("5.0.0-rc.a"),
|
||||||
|
false = emqx_telemetry:official_version("5.0.0-foo"),
|
||||||
|
false = emqx_telemetry:official_version("5.0.0-rc.1-ccdf7920"),
|
||||||
|
ok.
|
||||||
|
|
||||||
t_get_telemetry(_Config) ->
|
t_get_telemetry(_Config) ->
|
||||||
{ok, TelemetryData} = emqx_telemetry:get_telemetry(),
|
{ok, TelemetryData} = emqx_telemetry:get_telemetry(),
|
||||||
|
|
|
@ -52,19 +52,18 @@ end_per_suite(_Config) ->
|
||||||
]),
|
]),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
init_per_testcase(t_status_fail, Config) ->
|
init_per_testcase(t_status_non_official, Config) ->
|
||||||
meck:new(emqx_telemetry, [non_strict, passthrough]),
|
meck:new(emqx_telemetry, [non_strict, passthrough]),
|
||||||
meck:expect(emqx_telemetry, official_version, 1, false),
|
meck:expect(emqx_telemetry, official_version, 1, false),
|
||||||
Config;
|
Config;
|
||||||
init_per_testcase(t_status, Config) ->
|
init_per_testcase(t_status, Config) ->
|
||||||
meck:new(emqx_telemetry, [non_strict, passthrough]),
|
meck:new(emqx_telemetry, [non_strict, passthrough]),
|
||||||
meck:expect(emqx_telemetry, official_version, 1, true),
|
|
||||||
meck:expect(emqx_telemetry, enable, fun() -> ok end),
|
meck:expect(emqx_telemetry, enable, fun() -> ok end),
|
||||||
Config;
|
Config;
|
||||||
init_per_testcase(_TestCase, Config) ->
|
init_per_testcase(_TestCase, Config) ->
|
||||||
Config.
|
Config.
|
||||||
|
|
||||||
end_per_testcase(t_status_fail, _Config) ->
|
end_per_testcase(t_status_non_official, _Config) ->
|
||||||
meck:unload(emqx_telemetry);
|
meck:unload(emqx_telemetry);
|
||||||
end_per_testcase(t_status, _Config) ->
|
end_per_testcase(t_status, _Config) ->
|
||||||
meck:unload(emqx_telemetry);
|
meck:unload(emqx_telemetry);
|
||||||
|
@ -138,9 +137,9 @@ t_status(_) ->
|
||||||
)
|
)
|
||||||
).
|
).
|
||||||
|
|
||||||
t_status_fail(_) ->
|
t_status_non_official(_) ->
|
||||||
?assertMatch(
|
?assertMatch(
|
||||||
{ok, 400, _},
|
{ok, 200, _},
|
||||||
request(
|
request(
|
||||||
put,
|
put,
|
||||||
uri(["telemetry", "status"]),
|
uri(["telemetry", "status"]),
|
||||||
|
|
Loading…
Reference in New Issue