comparison mod_pubsub_alertmanager/mod_pubsub_alertmanager.lua @ 5485:67190744b1eb

mod_pubsub_alertmanager: Support for per-path config overrides
author Matthew Wild <mwild1@gmail.com>
date Tue, 23 May 2023 19:40:38 +0100
parents adda872fa9e1
children
comparison
equal deleted inserted replaced
5484:bb083e9f78dd 5485:67190744b1eb
27 return error_mapping[err] or 500; 27 return error_mapping[err] or 500;
28 end 28 end
29 return 202; 29 return 202;
30 end 30 end
31 31
32 local node_template = module:get_option_string("alertmanager_node_template", "{path?alerts}"); 32 local global_node_template = module:get_option_string("alertmanager_node_template", "{path?alerts}");
33 local path_configs = module:get_option("alertmanager_path_configs", {});
33 34
34 function handle_POST(event, path) 35 function handle_POST(event, path)
35 local request = event.request; 36 local request = event.request;
37
38 local config = path_configs[path] or {};
39 local node_template = config.node_template or global_node_template;
40 local publisher = config.publisher or request.ip;
36 41
37 local payload = json.decode(event.request.body); 42 local payload = json.decode(event.request.body);
38 if type(payload) ~= "table" then return 400; end 43 if type(payload) ~= "table" then return 400; end
39 if payload.version ~= "4" then return 501; end 44 if payload.version ~= "4" then return 501; end
40 45
53 if alert.generatorURL then 58 if alert.generatorURL then
54 item:tag("link", { href=alert.generatorURL }):up(); 59 item:tag("link", { href=alert.generatorURL }):up();
55 end 60 end
56 61
57 local node = render(node_template, {alert = alert, path = path, payload = payload, request = request}); 62 local node = render(node_template, {alert = alert, path = path, payload = payload, request = request});
58 local ret = publish_payload(node, request.ip, uuid_generate(), item); 63 local ret = publish_payload(node, publisher, uuid_generate(), item);
59 if ret ~= 202 then 64 if ret ~= 202 then
60 return ret 65 return ret
61 end 66 end
62 end 67 end
63 return 202; 68 return 202;