diff options
| author | Joey Hess <joeyh@joeyh.name> | 2015-01-21 23:21:24 -0400 |
|---|---|---|
| committer | Joey Hess <joeyh@joeyh.name> | 2015-01-21 23:21:24 -0400 |
| commit | fa66cb49d668ca065324530ced05b72de0499e34 (patch) | |
| tree | f7e325a3f9435fd51013b690269ba10ff7f849bb /src/Propellor/Property/Systemd | |
| parent | 8556f94fbfd1f28757aa0f66c94e2493e92250b9 (diff) | |
Added journald configuration properties.
Diffstat (limited to 'src/Propellor/Property/Systemd')
| -rw-r--r-- | src/Propellor/Property/Systemd/Journald.hs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/Propellor/Property/Systemd/Journald.hs b/src/Propellor/Property/Systemd/Journald.hs new file mode 100644 index 00000000..e852ebd9 --- /dev/null +++ b/src/Propellor/Property/Systemd/Journald.hs @@ -0,0 +1,54 @@ +module Propellor.Property.Systemd.Journald where +import Propellor +import qualified Propellor.Property.Systemd as Systemd +import qualified Propellor.Property.File as File +import Utility.DataUnits + +-- | Configures journald, restarting it so the changes take effect. +configured :: Systemd.Option -> String -> Property +configured option value = + Systemd.configured "/etc/systemd/journald.conf" option value + `onChange` Systemd.restarted "systemd-journald" + +-- The string is parsed to get a data size. +-- Examples: "100 megabytes" or "0.5tb" +type DataSize = String + +configuredSize :: Systemd.Option -> DataSize -> Property +configuredSize option s = case readSize dataUnits s of + Just sz -> configured option (systemdSizeUnits sz) + Nothing -> property ("unable to parse " ++ option ++ " data size " ++ s) noChange + +systemMaxUse :: DataSize -> Property +systemMaxUse = configuredSize "SystemMaxUse" + +runtimeMaxUse :: DataSize -> Property +runtimeMaxUse = configuredSize "RuntimeMaxUse" + +systemKeepFree :: DataSize -> Property +systemKeepFree = configuredSize "SystemKeepFree" + +runtimeKeepFree :: DataSize -> Property +runtimeKeepFree = configuredSize "RuntimeKeepFree" + +systemMaxFileSize :: DataSize -> Property +systemMaxFileSize = configuredSize "SystemMaxFileSize" + +runtimeMaxFileSize :: DataSize -> Property +runtimeMaxFileSize = configuredSize "RuntimeMaxFileSize" + +-- Generates size units as used in journald.conf. +systemdSizeUnits :: Integer -> String +systemdSizeUnits n = filter (/= ' ') (roughSize cfgfileunits True n) + where + cfgfileunits :: [Unit] + cfgfileunits = + [ Unit (p 6) "E" "exabyte" + , Unit (p 5) "P" "petabyte" + , Unit (p 4) "T" "terabyte" + , Unit (p 3) "G" "gigabyte" + , Unit (p 2) "M" "megabyte" + , Unit (p 1) "K" "kilobyte" + ] + p :: Integer -> Integer + p n = 1024^n |
