monky-2.2.1.0: Monky/Examples/Disk.hs
{-
Copyright 2015,2016 Markus Ongyerth, Stephan Guenther
This file is part of Monky.
Monky is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Monky is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with Monky. If not, see <http://www.gnu.org/licenses/>.
-}
{-# LANGUAGE OverloadedStrings #-}
{-|
Module : Monky.Examples.Disk
Description : An example module instance for the disk module
Maintainer : moepi
Stability : testing
Portability : Linux
-}
module Monky.Examples.Disk
( getDiskHandle
, getDiskHandleTag
, DiskH
)
where
import Formatting
import Monky.Examples.Utility
import Monky.Examples.Images
import Monky.Modules
import Control.Applicative ((<$>))
import qualified Monky.Disk as D
-- |The handle type for this module
newtype DiskH = DH D.DiskHandle
-- |Get a disk handle by uuid. This special cases btrfs
getDiskHandle
:: String -- ^The UUID of the device to monitor. It has to be mounted at monky startup!
-> IO DiskH
getDiskHandle = fmap DH . D.getDiskHandle
-- |Get a disk handle from a given tag
getDiskHandleTag
:: String -- ^Which tag to give to libblkid
-> String -- ^The value of the tag
-> IO DiskH
getDiskHandleTag t v = DH <$> D.getDiskHandleTag t v
{- Disk module -}
instance PollModule DiskH where
getOutput (DH dh) = do
(dr, dw) <- D.getDiskReadWrite dh
df <- D.getDiskFree dh
return
[ diskImage
, MonkyPlain $ sformat (stext % " " % stext % " " % stext) (convertUnitSI df "B") (convertUnitSI dr "B" ) (convertUnitSI dw "B")
]