prometheus-node-exporter-lua: fixup uci_dhcp_host
authorEtienne Champetier <redacted>
Sun, 24 May 2026 22:49:15 +0000 (18:49 -0400)
committerEtienne Champetier <redacted>
Mon, 25 May 2026 02:33:12 +0000 (22:33 -0400)
Handle cases where 'mac' is missing (nil), a single string,
or an array (table).

Additionally, add support for the 'duid' field.

Signed-off-by: Etienne Champetier <redacted>
utils/prometheus-node-exporter-lua/Makefile
utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/uci_dhcp_host.lua

index c5f0390d5d58afa6b3d47d2e378d1846d36ae9cf..878f5ce41d197618eeed3b675c4a29c65db0c0e0 100644 (file)
@@ -4,7 +4,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=prometheus-node-exporter-lua
-PKG_VERSION:=2026.05.07
+PKG_VERSION:=2026.05.08
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>
index 95096259999c98bd62a2d8f4f5c95c8adf5032e1..2c16fc3c83254106c006dc69d7014ff6da52473d 100644 (file)
@@ -5,8 +5,16 @@ local function scrape()
   local metric_uci_host = metric("uci_dhcp_host", "gauge")
 
   curs:foreach("dhcp", "host", function(s)
-    if s[".type"] == "host" then
-      labels = {name=s["name"], mac=string.upper(s["mac"]), dns=s["dns"], ip=s["ip"]}
+    local labels = {name=s["name"], dns=s["dns"], ip=s["ip"], duid=s["duid"]}
+
+    if s["mac"] == nil then
+      metric_uci_host(labels, 1)
+      return
+    end
+
+    local macs = type(s["mac"]) == "table" and s["mac"] or {s["mac"]}
+    for _, mac in ipairs(macs) do
+      labels["mac"] = string.upper(mac)
       metric_uci_host(labels, 1)
     end
   end)
git clone https://git.99rst.org/PROJECT