mod_pubsub_alertmanager/mod_pubsub_alertmanager.lua
changeset 4623 b11001bd915d
parent 4622 48132b6e1b16
child 4624 9b253cce7d88
--- a/mod_pubsub_alertmanager/mod_pubsub_alertmanager.lua	Wed Jun 09 01:14:46 2021 +0200
+++ b/mod_pubsub_alertmanager/mod_pubsub_alertmanager.lua	Thu Jul 01 00:07:27 2021 +0200
@@ -1,5 +1,7 @@
 local st = require "util.stanza";
 local json = require "util.json";
+local filters = {};
+local render = require "util.interpolation".new("%b{}", tostring, filters);
 local uuid_generate = require "util.uuid".generate;
 
 module:depends("http");
@@ -55,6 +57,37 @@
 	return 202;
 end
 
+local template = [[
+*ALARM!*
+Status: {status}
+Starts at: {startsAt}{endsAt&
+Ends at: {endsAt}}
+Labels: {labels%
+  {idx}: {item}}
+Annotations: {annotations%
+  {idx}: {item}}
+]]
+
+module:hook("pubsub-summary/urn:uuid:e3bec775-c607-4e9b-9a3f-94de1316d861:v4", function(event)
+	local payload = event.payload;
+
+	local data = {
+		status = payload.attr.status,
+		annotations = {},
+		labels = {},
+		endsAt = payload:find("ends/@at"),
+		startsAt = payload:find("starts/@at"),
+	};
+	for label in payload:childtags("label") do
+		data.labels[tostring(label.attr.name)] = label:get_text();
+	end
+	for annotation in payload:childtags("annotation") do
+		data.annotations[tostring(annotation.attr.name)] = annotation:get_text();
+	end
+
+	return render(template, data);
+end);
+
 module:provides("http", {
 	route = {
 		["POST /*"] = handle_POST;