diff 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
line wrap: on
line diff
--- a/mod_pubsub_alertmanager/mod_pubsub_alertmanager.lua	Thu May 18 21:11:13 2023 +0200
+++ b/mod_pubsub_alertmanager/mod_pubsub_alertmanager.lua	Tue May 23 19:40:38 2023 +0100
@@ -29,11 +29,16 @@
 	return 202;
 end
 
-local node_template = module:get_option_string("alertmanager_node_template", "{path?alerts}");
+local global_node_template = module:get_option_string("alertmanager_node_template", "{path?alerts}");
+local path_configs = module:get_option("alertmanager_path_configs", {});
 
 function handle_POST(event, path)
 	local request = event.request;
 
+	local config = path_configs[path] or {};
+	local node_template = config.node_template or global_node_template;
+	local publisher = config.publisher or request.ip;
+
 	local payload = json.decode(event.request.body);
 	if type(payload) ~= "table" then return 400; end
 	if payload.version ~= "4" then return 501; end
@@ -55,7 +60,7 @@
 		end
 
 		local node = render(node_template, {alert = alert, path = path, payload = payload, request = request});
-		local ret = publish_payload(node, request.ip, uuid_generate(), item);
+		local ret = publish_payload(node, publisher, uuid_generate(), item);
 		if ret ~= 202 then
 			return ret
 		end