Software /
code /
prosody-modules
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 |
parent | 4627:adda872fa9e1 |
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; |