summaryrefslogtreecommitdiff
path: root/src/Propellor
diff options
context:
space:
mode:
authorJelmer Vernooij2016-01-02 16:44:15 +0000
committerJoey Hess2016-01-03 16:24:46 -0400
commit7a998ab068aff4461948d1a189a6a3e02dbeaa21 (patch)
tree18f929580cfd7c4b275d33786f9c67597b6fb385 /src/Propellor
parentd34fec00ecf1857c425392b824b742cc6e80ce9c (diff)
Add Munin module.
Signed-off-by: Jelmer Vernooij <jelmer@jelmer.uk>
Diffstat (limited to 'src/Propellor')
-rw-r--r--src/Propellor/Property/Munin.hs57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/Propellor/Property/Munin.hs b/src/Propellor/Property/Munin.hs
new file mode 100644
index 00000000..43112a6c
--- /dev/null
+++ b/src/Propellor/Property/Munin.hs
@@ -0,0 +1,57 @@
+-- | Maintainer: Jelmer Vernooij <jelmer@jelmer.uk>
+--
+module Propellor.Property.Munin (
+ hostListFragment,
+ hostListFragment',
+ nodePort,
+ nodeInstalled,
+ nodeRestarted,
+ nodeConfPath,
+ masterInstalled,
+ masterRestarted,
+ masterConfPath,
+) where
+
+import Propellor
+import qualified Propellor.Property.Apt as Apt
+import qualified Propellor.Property.Service as Service
+
+nodePort :: Integer
+nodePort = 4949
+
+nodeInstalled :: Property NoInfo
+nodeInstalled = Apt.serviceInstalledRunning "munin-node"
+
+nodeRestarted :: Property NoInfo
+nodeRestarted = Service.restarted "munin-node"
+
+nodeConfPath :: FilePath
+nodeConfPath = "/etc/munin/munin-node.conf"
+
+masterInstalled :: Property NoInfo
+masterInstalled = Apt.serviceInstalledRunning "munin"
+
+masterRestarted :: Property NoInfo
+masterRestarted = Service.restarted "munin"
+
+masterConfPath :: FilePath
+masterConfPath = "/etc/munin/munin.conf"
+
+
+-- | Create the host list fragment for master config.
+-- Takes an optional override list for hosts that are accessible on a non-standard host/port.
+-- TODO(jelmer): Only do this on hosts where munin is present (in other words, with Munin.installedNode)
+hostListFragment' :: [Host] -> [(HostName, (IPAddr, Port))] -> [String]
+hostListFragment' hs os = concatMap muninHost hs
+ where
+ muninHost :: Host -> [String]
+ muninHost h = [ "[" ++ (hostName h) ++ "]"
+ , " address " ++ maybe (hostName h) (fromIPAddr . fst) (hOverride h)
+ ] ++ (maybe [] (\x -> [" port " ++ (show $ fromPort $ snd x)]) (hOverride h)) ++ [""]
+ hOverride :: Host -> Maybe (IPAddr, Port)
+ hOverride h = lookup (hostName h) os
+ fromPort (Port p) = p
+
+-- | Create the host list fragment for master config.
+hostListFragment :: [Host] -> [String]
+hostListFragment hs = hostListFragment' hs []