Skip to content

Commit 0de5ecf

Browse files
committed
MB-48480: Add REST API to change alert limits.
This change adds a new POST REST endpoint /settings/alerts/limits This end point supports the following paramters: 1) maxOverheadPerc 2) maxDiskUsedPerc 3) maxIndexerRamPerc Also adds a GET on /settings/alerts/limits Change-Id: I2c4bbd7e96d7ec0a993e28ad4c261d643f136633 Reviewed-on: https://review.couchbase.org/c/ns_server/+/172470 Tested-by: Navdeep S Boparai <[email protected]> Well-Formed: Build Bot <[email protected]> Reviewed-by: Timofey Barmin <[email protected]>
1 parent 4c279c7 commit 0de5ecf

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

src/menelaus_web.erl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,9 @@ get_action(Req, {AppRoot, IsSSL, Plugins}, Path, PathTokens) ->
362362
{{[settings], read}, fun menelaus_web_settings:handle_settings_web/1};
363363
["settings", "alerts"] ->
364364
{{[settings], read}, fun menelaus_alert:handle_settings_alerts/1};
365+
["settings", "alerts", "limits"] ->
366+
{{[settings], read},
367+
fun menelaus_web_alerts_srv:handle_settings_alerts_limits_get/1};
365368
["settings", "stats"] ->
366369
{{[settings], read}, fun menelaus_web_settings:handle_settings_stats/1};
367370
["internal", "settings", "metrics" | PathRest] ->
@@ -629,6 +632,9 @@ get_action(Req, {AppRoot, IsSSL, Plugins}, Path, PathTokens) ->
629632
["settings", "alerts", "testEmail"] ->
630633
{{[settings], write},
631634
fun menelaus_alert:handle_settings_alerts_send_test_email/1};
635+
["settings", "alerts", "limits"] ->
636+
{{[settings], write},
637+
fun menelaus_web_alerts_srv:handle_settings_alerts_limits_post/1};
632638
["settings", "stats"] ->
633639
{{[settings], write}, fun menelaus_web_settings:handle_settings_stats_post/1};
634640
["internal", "settings", "metrics" | PathRest] ->

src/menelaus_web_alerts_srv.erl

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
-behaviour(gen_server).
2323
-define(SERVER, ?MODULE).
2424
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
25-
terminate/2, code_change/3]).
25+
terminate/2, code_change/3, handle_settings_alerts_limits_post/1,
26+
handle_settings_alerts_limits_get/1]).
2627

2728
-export([alert_keys/0, config_upgrade_to_70/1, config_upgrade_to_MORPHEUS/1]).
2829

@@ -871,6 +872,38 @@ upgrade_alerts(EmailAlerts, Mutations) ->
871872
[{set, email_alerts, Result}]
872873
end.
873874

875+
type_spec(undefined) ->
876+
undefined.
877+
878+
params() ->
879+
[{"maxOverheadPerc", #{type => {int, 0, 100},
880+
cfg_key => max_overhead_perc}},
881+
{"maxDiskUsedPerc", #{type => {int, 0, 100},
882+
cfg_key => max_disk_used}},
883+
{"maxIndexerRamPerc", #{type => {int, 0, 100},
884+
cfg_key => max_indexer_ram}}].
885+
886+
build_alert_limits() ->
887+
case ns_config:search(alert_limits) of
888+
false ->
889+
[];
890+
{value, Values} ->
891+
Values
892+
end.
893+
894+
handle_settings_alerts_limits_get(Req) ->
895+
menelaus_web_settings2:handle_get([], params(), fun type_spec/1,
896+
build_alert_limits(), Req).
897+
898+
handle_settings_alerts_limits_post(Req) ->
899+
menelaus_web_settings2:handle_post(
900+
fun (Params, Req2) ->
901+
NewParams = [{Key, Val} || {[Key], Val} <- Params],
902+
NewLimits = misc:update_proplist(build_alert_limits(), NewParams),
903+
ns_config:set(alert_limits, NewLimits),
904+
handle_settings_alerts_limits_get(Req2)
905+
end, [], params(), fun type_spec/1, Req).
906+
874907
-ifdef(TEST).
875908
%% Cant currently test the alert timeouts as would need to mock
876909
%% calls to the archiver

0 commit comments

Comments
 (0)