Merge pull request #11617 from zhongwencool/rule-engine-console-args
fix: keep builtin_console actions not complain args
This commit is contained in:
commit
c868264f65
|
@ -2,7 +2,7 @@
|
||||||
{application, emqx_management, [
|
{application, emqx_management, [
|
||||||
{description, "EMQX Management API and CLI"},
|
{description, "EMQX Management API and CLI"},
|
||||||
% strict semver, bump manually!
|
% strict semver, bump manually!
|
||||||
{vsn, "5.0.29"},
|
{vsn, "5.0.30"},
|
||||||
{modules, []},
|
{modules, []},
|
||||||
{registered, [emqx_management_sup]},
|
{registered, [emqx_management_sup]},
|
||||||
{applications, [kernel, stdlib, emqx_plugins, minirest, emqx, emqx_ctl, emqx_bridge_http]},
|
{applications, [kernel, stdlib, emqx_plugins, minirest, emqx, emqx_ctl, emqx_bridge_http]},
|
||||||
|
|
|
@ -647,7 +647,7 @@ set_keepalive(put, #{bindings := #{clientid := ClientID}, body := Body}) ->
|
||||||
error ->
|
error ->
|
||||||
{400, 'BAD_REQUEST', "Interval Not Found"};
|
{400, 'BAD_REQUEST', "Interval Not Found"};
|
||||||
{ok, Interval} ->
|
{ok, Interval} ->
|
||||||
case emqx_mgmt:set_keepalive(emqx_mgmt_util:urldecode(ClientID), Interval) of
|
case emqx_mgmt:set_keepalive(ClientID, Interval) of
|
||||||
ok -> lookup(#{clientid => ClientID});
|
ok -> lookup(#{clientid => ClientID});
|
||||||
{error, not_found} -> {404, ?CLIENTID_NOT_FOUND};
|
{error, not_found} -> {404, ?CLIENTID_NOT_FOUND};
|
||||||
{error, Reason} -> {400, #{code => 'PARAMS_ERROR', message => Reason}}
|
{error, Reason} -> {400, #{code => 'PARAMS_ERROR', message => Reason}}
|
||||||
|
|
|
@ -45,11 +45,15 @@
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
parse_action(#{function := ActionFunc} = Action) ->
|
parse_action(#{function := ActionFunc} = Action) ->
|
||||||
{Mod, Func} = parse_action_func(ActionFunc),
|
{Mod, Func} = parse_action_func(ActionFunc),
|
||||||
#{
|
Res = #{mod => Mod, func => Func},
|
||||||
mod => Mod,
|
%% builtin_action_console don't have args field.
|
||||||
func => Func,
|
%% Attempting to save args to the console action config could cause validation issues
|
||||||
args => pre_process_args(Mod, Func, maps:get(args, Action, #{}))
|
case Action of
|
||||||
}.
|
#{args := Args} ->
|
||||||
|
Res#{args => pre_process_args(Mod, Func, Args)};
|
||||||
|
_ ->
|
||||||
|
Res
|
||||||
|
end.
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% callbacks of emqx_rule_action
|
%% callbacks of emqx_rule_action
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
{application, emqx_rule_engine, [
|
{application, emqx_rule_engine, [
|
||||||
{description, "EMQX Rule Engine"},
|
{description, "EMQX Rule Engine"},
|
||||||
% strict semver, bump manually!
|
% strict semver, bump manually!
|
||||||
{vsn, "5.0.25"},
|
{vsn, "5.0.26"},
|
||||||
{modules, []},
|
{modules, []},
|
||||||
{registered, [emqx_rule_engine_sup, emqx_rule_engine]},
|
{registered, [emqx_rule_engine_sup, emqx_rule_engine]},
|
||||||
{applications, [kernel, stdlib, rulesql, getopt, emqx_ctl, uuid]},
|
{applications, [kernel, stdlib, rulesql, getopt, emqx_ctl, uuid]},
|
||||||
|
|
|
@ -525,6 +525,10 @@ do_format_action(#{mod := Mod, func := Func, args := Args}) ->
|
||||||
#{
|
#{
|
||||||
function => printable_function_name(Mod, Func),
|
function => printable_function_name(Mod, Func),
|
||||||
args => maps:remove(preprocessed_tmpl, Args)
|
args => maps:remove(preprocessed_tmpl, Args)
|
||||||
|
};
|
||||||
|
do_format_action(#{mod := Mod, func := Func}) ->
|
||||||
|
#{
|
||||||
|
function => printable_function_name(Mod, Func)
|
||||||
}.
|
}.
|
||||||
|
|
||||||
printable_function_name(emqx_rule_actions, Func) ->
|
printable_function_name(emqx_rule_actions, Func) ->
|
||||||
|
|
|
@ -98,10 +98,26 @@ fields("builtin_action_republish") ->
|
||||||
];
|
];
|
||||||
fields("builtin_action_console") ->
|
fields("builtin_action_console") ->
|
||||||
[
|
[
|
||||||
{function, ?HOCON(console, #{desc => ?DESC("console_function")})}
|
{function, ?HOCON(console, #{desc => ?DESC("console_function")})},
|
||||||
%% we may support some args for the console action in the future
|
%% we may support some args for the console action in the future
|
||||||
%, {args, sc(map(), #{desc => "The arguments of the built-in 'console' action",
|
|
||||||
% default => #{}})}
|
%% "args" needs to be a reserved/ignored field in the schema
|
||||||
|
%% to maintain compatibility with rule data that may contain
|
||||||
|
%% it due to a validation bug in previous versions.
|
||||||
|
|
||||||
|
%% The "args" field was not validated by the HOCON schema before 5.2.0,
|
||||||
|
%% which allowed rules to be created with invalid "args" data.
|
||||||
|
%% In 5.2.1 the validation was added,
|
||||||
|
%% so existing rules saved with invalid "args" would now fail validation
|
||||||
|
%% To maintain backward compatibility for existing rule data that may contain invalid "args",
|
||||||
|
%% the field needs to be included in the schema even though it is not a valid field.
|
||||||
|
{args,
|
||||||
|
?HOCON(map(), #{
|
||||||
|
deprecated => true,
|
||||||
|
importance => ?IMPORTANCE_HIDDEN,
|
||||||
|
desc => "The arguments of the built-in 'console' action",
|
||||||
|
default => #{}
|
||||||
|
})}
|
||||||
];
|
];
|
||||||
fields("user_provided_function") ->
|
fields("user_provided_function") ->
|
||||||
[
|
[
|
||||||
|
|
|
@ -30,7 +30,7 @@ rule_engine.rules.my_rule {
|
||||||
metadata = {created_at = 1693918992079}
|
metadata = {created_at = 1693918992079}
|
||||||
sql = \"select * from \\\"t/topic\\\" \"
|
sql = \"select * from \\\"t/topic\\\" \"
|
||||||
actions = [
|
actions = [
|
||||||
{function = console}
|
{function = console, args = {test = 1}}
|
||||||
{ function = republish
|
{ function = republish
|
||||||
args = {
|
args = {
|
||||||
payload = \"${.}\"
|
payload = \"${.}\"
|
||||||
|
|
Loading…
Reference in New Issue