From 266ad363935a9156aab3289ef8010d2ef0fc98e5 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Thu, 18 Oct 2018 22:39:21 +0200 Subject: Mysql: do not install the server to remove a database/user --- src/Propellor/Property/Mysql.hs | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'src/Propellor') diff --git a/src/Propellor/Property/Mysql.hs b/src/Propellor/Property/Mysql.hs index f7639a29..37f0d28b 100644 --- a/src/Propellor/Property/Mysql.hs +++ b/src/Propellor/Property/Mysql.hs @@ -97,17 +97,23 @@ installed = install remove remove = Apt.removed server server = ["default-mysql-server"] +-- | Check whether server is installed. +isInstalled :: IO Bool +isInstalled = Apt.isInstalled server + where + server = "default-mysql-server" + -- | Create a database if it does not exist. When reverted, remove the -- database. -databaseExists :: Database -> RevertableProperty DebianLike DebianLike +databaseExists :: Database -> RevertableProperty DebianLike UnixLike databaseExists (Database dbname) = setup cleanup where setup :: Property DebianLike setup = setup' `requires` installed - cleanup :: Property DebianLike - cleanup = cleanup' `requires` installed + cleanup :: Property UnixLike + cleanup = check isInstalled $ cleanup' -- Test for database existance and create it if needed. setup' :: Property UnixLike @@ -151,7 +157,7 @@ userGrantedOnDatabase -> Database -> [Privilege] -> c - -> RevertableProperty (HasInfo + DebianLike) DebianLike + -> RevertableProperty (HasInfo + DebianLike) UnixLike userGrantedOnDatabase user@(User username) (Database dbname) privs context = userGranted' user privs context setupDesc setupSql userGrants where @@ -175,7 +181,7 @@ userGranted => User -> [Privilege] -> c - -> RevertableProperty (HasInfo + DebianLike) DebianLike + -> RevertableProperty (HasInfo + DebianLike) UnixLike userGranted user@(User username) privs context = userGranted' user privs context setupDesc setupSql userGrants where @@ -198,15 +204,15 @@ userGranted' -> String -> (String -> String -> String -> String) -> (String -> String -> String -> String) - -> RevertableProperty (HasInfo + DebianLike) DebianLike + -> RevertableProperty (HasInfo + DebianLike) UnixLike userGranted' (User username) privs context setupDesc setupSql userGrants = setup cleanup where setup :: Property (HasInfo + DebianLike) setup = setup' `requires` installed - cleanup :: Property DebianLike - cleanup = cleanup' `requires` installed + cleanup :: Property UnixLike + cleanup = check isInstalled $ cleanup' -- Check user grants and reset them if needed. setup' :: Property (HasInfo + UnixLike) -- cgit v1.2.3