equal
deleted
inserted
replaced
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; |