mod_pubsub_alertmanager/mod_pubsub_alertmanager.lua
changeset 5489 67190744b1eb
parent 4631 adda872fa9e1
equal deleted inserted replaced
5488:bb083e9f78dd 5489: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;