chore: don't disable rule that references non-existent bridge

After feedback from QA, we decided to rollback enforcing the rule to be disabled.
This commit is contained in:
Thales Macedo Garitezi 2023-11-06 10:09:14 -03:00
parent 5881e34d4e
commit f17b762596
2 changed files with 19 additions and 21 deletions

View File

@ -732,7 +732,7 @@ t_scenario_2(Config) ->
%% ===================================================================================
%% Try to create a rule referencing a non-existent bridge. It succeeds, but it's
%% implicitly disabled. Trying to update it later without creating the bridge should
%% keep it disabled.
%% allow it to be enabled.
%% ===================================================================================
BridgeName = <<"scenario2">>,
RuleTopic = <<"t/scenario2">>,
@ -746,9 +746,9 @@ t_scenario_2(Config) ->
],
#{overrides => #{enable => true}}
),
?assertNot(is_rule_enabled(RuleId0)),
?assert(is_rule_enabled(RuleId0)),
?assertMatch({ok, {{_, 200, _}, _, _}}, enable_rule_http(RuleId0)),
?assertNot(is_rule_enabled(RuleId0)),
?assert(is_rule_enabled(RuleId0)),
%% ===================================================================================
%% Now we create the bridge, and attempt to create a new enabled rule. It should
@ -768,13 +768,13 @@ t_scenario_2(Config) ->
],
#{overrides => #{enable => true}}
),
?assertNot(is_rule_enabled(RuleId0)),
?assert(is_rule_enabled(RuleId0)),
?assert(is_rule_enabled(RuleId1)),
?assertMatch({ok, {{_, 200, _}, _, _}}, enable_rule_http(RuleId0)),
?assert(is_rule_enabled(RuleId0)),
%% ===================================================================================
%% Creating a rule with mixed existent/non-existent bridges should deny enabling it.
%% Creating a rule with mixed existent/non-existent bridges should allow enabling it.
%% ===================================================================================
NonExistentBridgeName = <<"scenario2_not_created">>,
{ok, #{<<"id">> := RuleId2}} =
@ -801,8 +801,8 @@ t_scenario_2(Config) ->
}
}
),
?assertNot(is_rule_enabled(RuleId2)),
?assert(is_rule_enabled(RuleId2)),
?assertMatch({ok, {{_, 200, _}, _, _}}, enable_rule_http(RuleId2)),
?assertNot(is_rule_enabled(RuleId2)),
?assert(is_rule_enabled(RuleId2)),
ok.

View File

@ -478,20 +478,18 @@ with_parsed_rule(Params = #{id := RuleId, sql := Sql, actions := Actions}, Creat
%% -- calculated fields end
},
InputEnable = maps:get(enable, Params, true),
Enable =
case validate_bridge_existence_in_actions(Rule0) of
ok ->
InputEnable;
{error, NonExistentBridgeIDs} ->
?SLOG(error, #{
msg => "action_references_nonexistent_bridges",
rule_id => RuleId,
nonexistent_bridge_ids => NonExistentBridgeIDs,
hint => "this rule will be disabled"
}),
false
end,
Rule = Rule0#{enable => Enable},
case validate_bridge_existence_in_actions(Rule0) of
ok ->
ok;
{error, NonExistentBridgeIDs} ->
?SLOG(error, #{
msg => "action_references_nonexistent_bridges",
rule_id => RuleId,
nonexistent_bridge_ids => NonExistentBridgeIDs,
hint => "this rule will be disabled"
})
end,
Rule = Rule0#{enable => InputEnable},
ok = Fun(Rule),
{ok, Rule};
{error, Reason} ->