Apache: Fix daemon reload when enabling a new module or site.

This commit is contained in:
Joey Hess 2014-10-31 17:47:52 -04:00
parent 784210a573
commit ef9abb9b67
2 changed files with 22 additions and 15 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 nginx module, contributed by Félix Sipma.
* Added firewall module, contributed by Arnaud Bailly. * 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 -- Joey Hess <joeyh@debian.org> Thu, 30 Oct 2014 16:36:06 -0400

View File

@ -4,23 +4,26 @@ import Propellor
import qualified Propellor.Property.File as File import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.Service as Service import qualified Propellor.Property.Service as Service
import Utility.SafeCommand
type ConfigFile = [String] type ConfigFile = [String]
siteEnabled :: HostName -> ConfigFile -> RevertableProperty siteEnabled :: HostName -> ConfigFile -> RevertableProperty
siteEnabled hn cf = RevertableProperty enable disable siteEnabled hn cf = RevertableProperty enable disable
where where
enable = trivial (cmdProperty "a2ensite" ["--quiet", hn]) enable = check (not <$> isenabled) $
`describe` ("apache site enabled " ++ hn) cmdProperty "a2ensite" ["--quiet", hn]
`requires` siteAvailable hn cf `describe` ("apache site enabled " ++ hn)
`requires` installed `requires` siteAvailable hn cf
`onChange` reloaded `requires` installed
disable = trivial $ combineProperties `onChange` reloaded
disable = combineProperties
("apache site disabled " ++ hn) ("apache site disabled " ++ hn)
(map File.notPresent (siteCfg hn)) (map File.notPresent (siteCfg hn))
`onChange` cmdProperty "a2dissite" ["--quiet", hn] `onChange` cmdProperty "a2dissite" ["--quiet", hn]
`requires` installed `requires` installed
`onChange` reloaded `onChange` reloaded
isenabled = boolSystem "a2query" [Param "-q", Param "-s", Param hn]
siteAvailable :: HostName -> ConfigFile -> Property siteAvailable :: HostName -> ConfigFile -> Property
siteAvailable hn cf = combineProperties ("apache site available " ++ hn) $ siteAvailable hn cf = combineProperties ("apache site available " ++ hn) $
@ -31,17 +34,20 @@ siteAvailable hn cf = combineProperties ("apache site available " ++ hn) $
modEnabled :: String -> RevertableProperty modEnabled :: String -> RevertableProperty
modEnabled modname = RevertableProperty enable disable modEnabled modname = RevertableProperty enable disable
where where
enable = trivial $ cmdProperty "a2enmod" ["--quiet", modname] enable = check (not <$> isenabled) $
`describe` ("apache module enabled " ++ modname) cmdProperty "a2enmod" ["--quiet", modname]
`requires` installed `describe` ("apache module enabled " ++ modname)
`onChange` reloaded `requires` installed
disable = trivial $ cmdProperty "a2dismod" ["--quiet", modname] `onChange` reloaded
`describe` ("apache module disabled " ++ modname) disable = check isenabled $
`requires` installed cmdProperty "a2dismod" ["--quiet", modname]
`onChange` reloaded `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 -- 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 :: HostName -> [FilePath]
siteCfg hn = siteCfg hn =
-- Debian pre-2.4 -- Debian pre-2.4