Merge branch 'joeyconfig'

This commit is contained in:
Joey Hess 2014-10-31 17:57:17 -04:00
commit 8526291789
4 changed files with 40 additions and 20 deletions

1
debian/changelog vendored
View File

@ -2,6 +2,7 @@ propellor (0.9.2) UNRELEASED; urgency=medium
* Added nginx module, contributed by Félix Sipma.
* Added firewall module, contributed by Arnaud Bailly.
* Apache: Fix daemon reload when enabling a new module or site.
-- Joey Hess <joeyh@debian.org> Thu, 30 Oct 2014 16:36:06 -0400

View File

@ -70,6 +70,14 @@ that line up with the open and close punctuation.
, address = "baz"
}
Similarly, data structures line up the leading `=` with the following `|`
data Foo
= Bar
| Baz
| Quux Foo
deriving (Eq, Ord)
Module imports are separated into two blocks, one for third-party modules,
and one for modules that are part of propellor. (Additional blocks can be used
if it makes sense.)

View File

@ -4,23 +4,26 @@ import Propellor
import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.Service as Service
import Utility.SafeCommand
type ConfigFile = [String]
siteEnabled :: HostName -> ConfigFile -> RevertableProperty
siteEnabled hn cf = RevertableProperty enable disable
where
enable = trivial (cmdProperty "a2ensite" ["--quiet", hn])
`describe` ("apache site enabled " ++ hn)
`requires` siteAvailable hn cf
`requires` installed
`onChange` reloaded
disable = trivial $ combineProperties
enable = check (not <$> isenabled) $
cmdProperty "a2ensite" ["--quiet", hn]
`describe` ("apache site enabled " ++ hn)
`requires` siteAvailable hn cf
`requires` installed
`onChange` reloaded
disable = combineProperties
("apache site disabled " ++ hn)
(map File.notPresent (siteCfg hn))
`onChange` cmdProperty "a2dissite" ["--quiet", hn]
`requires` installed
`onChange` reloaded
isenabled = boolSystem "a2query" [Param "-q", Param "-s", Param hn]
siteAvailable :: HostName -> ConfigFile -> Property
siteAvailable hn cf = combineProperties ("apache site available " ++ hn) $
@ -31,17 +34,20 @@ siteAvailable hn cf = combineProperties ("apache site available " ++ hn) $
modEnabled :: String -> RevertableProperty
modEnabled modname = RevertableProperty enable disable
where
enable = trivial $ cmdProperty "a2enmod" ["--quiet", modname]
`describe` ("apache module enabled " ++ modname)
`requires` installed
`onChange` reloaded
disable = trivial $ cmdProperty "a2dismod" ["--quiet", modname]
`describe` ("apache module disabled " ++ modname)
`requires` installed
`onChange` reloaded
enable = check (not <$> isenabled) $
cmdProperty "a2enmod" ["--quiet", modname]
`describe` ("apache module enabled " ++ modname)
`requires` installed
`onChange` reloaded
disable = check isenabled $
cmdProperty "a2dismod" ["--quiet", modname]
`describe` ("apache module disabled " ++ modname)
`requires` installed
`onChange` reloaded
isenabled = boolSystem "a2query" [Param "-q", Param "-m", Param modname]
-- This is a list of config files because different versions of apache
-- use different filenames. Propellor simply writen them all.
-- use different filenames. Propellor simply writes them all.
siteCfg :: HostName -> [FilePath]
siteCfg hn =
-- Debian pre-2.4

View File

@ -4,21 +4,26 @@ import Propellor
import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.Service as Service
import System.Posix.Files
type ConfigFile = [String]
siteEnabled :: HostName -> ConfigFile -> RevertableProperty
siteEnabled hn cf = RevertableProperty enable disable
where
enable = trivial (cmdProperty "ln" ["-s", siteValRelativeCfg hn, siteVal hn])
enable = check test prop
`describe` ("nginx site enabled " ++ hn)
`requires` siteAvailable hn cf
`requires` installed
`onChange` reloaded
disable = trivial $
("nginx site disabled " ++ hn) ==>
File.notPresent (siteCfg hn)
`onChange` cmdProperty "rm" [siteVal hn]
where
test = not <$> doesFileExist (siteVal hn)
prop = property "nginx site in place" $ makeChange $
createSymbolicLink target dir
target = siteValRelativeCfg hn
dir = siteVal hn
disable = trivial $ File.notPresent (siteVal hn)
`describe` ("nginx site disable" ++ hn)
`requires` installed
`onChange` reloaded