From 30b5584555cd29b34564f904886df386b8d9d976 Mon Sep 17 00:00:00 2001 From: Astro Date: Thu, 4 Jun 2020 01:18:06 +0200 Subject: [PATCH] scrape: DRY --- hosts/containers/scrape/configuration.nix | 123 +++++++--------------- 1 file changed, 39 insertions(+), 84 deletions(-) diff --git a/hosts/containers/scrape/configuration.nix b/hosts/containers/scrape/configuration.nix index 1c931b08..92335529 100644 --- a/hosts/containers/scrape/configuration.nix +++ b/hosts/containers/scrape/configuration.nix @@ -1,6 +1,16 @@ { config, pkgs, lib, ... }: -{ +let + freifunkNodes = { + "1139" = "10.200.4.120"; + "1487" = "10.200.5.213"; + "1884" = "10.200.7.100"; + "1891" = "10.200.7.107"; + "1768" = "10.200.6.239"; + "1176" = "10.200.7.80"; + "1099" = "10.200.4.80"; + }; +in { imports = [ @@ -36,6 +46,13 @@ xeriLogin = import ; fhemLogin = import ; matematLogin = import ; + makeNodeScraper = nodeId: { + name = "scrape-node${nodeId}"; + value = makeService { + script = "freifunk_node"; + host = freifunkNodes.${nodeId}; + }; + }; in { scrape-xeri = makeService { script = "xerox"; @@ -56,90 +73,28 @@ host = "matemat.hq.c3d2.de"; inherit (matematLogin) user password; }; - scrape-node1139 = makeService { - script = "freifunk_node"; - host = "10.200.4.120"; + } // builtins.listToAttrs (map makeNodeScraper (builtins.attrNames freifunkNodes)); + + systemd.timers = + let + makeTimer = service: interval: { + partOf = [ "${service}.service" ]; + wantedBy = [ "timers.target" ]; + timerConfig.OnCalendar = interval; }; - scrape-node1487 = makeService { - script = "freifunk_node"; - host = "10.200.5.213"; - }; - scrape-node1884 = makeService { - script = "freifunk_node"; - host = "10.200.7.100"; - }; - scrape-node1891 = makeService { - script = "freifunk_node"; - host = "10.200.7.107"; - }; - scrape-node1768 = makeService { - script = "freifunk_node"; - host = "10.200.6.239"; - }; - scrape-node1176 = makeService { - script = "freifunk_node"; - host = "10.200.7.80"; - }; - scrape-node1099 = makeService { - script = "freifunk_node"; - host = "10.200.4.80"; - }; - }; - systemd.timers.scrape-xeri = { - partOf = [ "scrape-xeri.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig.OnCalendar = "minutely"; - }; - systemd.timers.scrape-roxi = { - partOf = [ "scrape-roxi.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig.OnCalendar = "minutely"; - }; - systemd.timers.scrape-fhem = { - partOf = [ "scrape-fhem.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig.OnCalendar = "minutely"; - }; - systemd.timers.scrape-matemat = { - partOf = [ "scrape-matemat.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig.OnCalendar = "minutely"; - }; - systemd.timers.scrape-node1139 = { - partOf = [ "scrape-node1139.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig.OnCalendar = "minutely"; - }; - systemd.timers.scrape-node1487 = { - partOf = [ "scrape-node1487.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig.OnCalendar = "minutely"; - }; - systemd.timers.scrape-node1884 = { - partOf = [ "scrape-node1884.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig.OnCalendar = "minutely"; - }; - systemd.timers.scrape-node1891 = { - partOf = [ "scrape-node1894.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig.OnCalendar = "minutely"; - }; - systemd.timers.scrape-node1768 = { - partOf = [ "scrape-node1768.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig.OnCalendar = "minutely"; - }; - systemd.timers.scrape-node1176 = { - partOf = [ "scrape-node1176.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig.OnCalendar = "minutely"; - }; - systemd.timers.scrape-node1099 = { - partOf = [ "scrape-node1099.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig.OnCalendar = "minutely"; - }; + makeNodeScraperTimer = nodeId: + let + name = "scrape-node${nodeId}"; + in { + inherit name; + value = makeTimer name "minutely"; + }; + in { + scrape-xeri = makeTimer "scrape-xeri.service" "minutely"; + scrape-roxi = makeTimer "scrape-roxi.service" "minutely"; + scrape-fhem = makeTimer "scrape-fhem.service" "minutely"; + scrape-matemat = makeTimer "scrape-matemat.service" "minutely"; + } // builtins.listToAttrs (map makeNodeScraperTimer (builtins.attrNames freifunkNodes)); # This value determines the NixOS release with which your system is to be # compatible, in order to avoid breaking some software such as database