From 0dc5c271809187549c937d9d65e39a368ce06acb Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 1 Apr 2014 17:54:20 -0400 Subject: cron job setup Properties --- Propellor/Property/Cron.hs | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'Propellor/Property') diff --git a/Propellor/Property/Cron.hs b/Propellor/Property/Cron.hs index 10e28ed7..982d6fec 100644 --- a/Propellor/Property/Cron.hs +++ b/Propellor/Property/Cron.hs @@ -6,15 +6,27 @@ import qualified Propellor.Property.Apt as Apt type CronTimes = String --- | Installs a cron job to run propellor. -runPropellor :: CronTimes -> Property -runPropellor times = "/etc/cron.d/propellor" `File.hasContent` - [ "# Run propellor" +-- | Installs a cron job, run as a specificed user, in a particular +--directory. Note that the Desc must be unique, as it is used for the +--cron.d/ filename. +job :: Desc -> CronTimes -> UserName -> FilePath -> String -> Property +job desc times user cddir command = ("/etc/cron.d/" ++ desc) `File.hasContent` + [ "# Generated by propellor" , "" , "SHELL=/bin/sh" , "PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" , "" - , times ++ "\troot\tcd " ++ localdir ++ " && nice ionice -c 3 chronic make" + , times ++ "\t" ++ user ++ "\t" ++ "cd " ++ cddir ++ " && " ++ command ] - `requires` Apt.installed ["util-linux", "cron", "moreutils"] - `describe` "cronned propeller" + `requires` Apt.installed ["cron"] + `describe` ("cronned " ++ desc) + +-- | Installs a cron job, and runs it niced and ioniced. +niceJob :: Desc -> CronTimes -> UserName -> FilePath -> String -> Property +niceJob desc times user cddir command = job desc times user cddir + ("nice ionice -c 3 " ++ command) + `requires` Apt.installed ["util-linux", "moreutils"] + +-- | Installs a cron job to run propellor. +runPropellor :: CronTimes -> Property +runPropellor times = niceJob "propellor" times "root" localdir "chronic make" -- cgit v1.2.3