summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jelmer Vernooij <jelmer@jelmer.uk>2016-01-02 16:44:15 +0000
committerGravatar Joey Hess <joeyh@joeyh.name>2016-01-05 12:01:35 -0400
commit85379a479663a9ef15a66a99700eb38469b5e14a (patch)
tree79ad5f7a200a142d055193d1899d1f42de39dc5a
parenta7900d63302dd8be817804ea49afc57d4698bbfe (diff)
Add Munin module.
Signed-off-by: Jelmer Vernooij <jelmer@jelmer.uk>
-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 000000000..43112a6c6
--- /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 []