summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Propellor/Property/Mysql.hs12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/Propellor/Property/Mysql.hs b/src/Propellor/Property/Mysql.hs
index 37f0d28b..73d4f62a 100644
--- a/src/Propellor/Property/Mysql.hs
+++ b/src/Propellor/Property/Mysql.hs
@@ -11,6 +11,7 @@ module Propellor.Property.Mysql (
basicPrivileges,
basicStructurePrivileges,
installed,
+ installedAndReady,
databaseExists,
userGrantedOnDatabase,
userGranted,
@@ -97,6 +98,13 @@ installed = install <!> remove
remove = Apt.removed server
server = ["default-mysql-server"]
+-- | Make sure a server is installed and ready.
+installedAndReady :: Property DebianLike
+installedAndReady = ready `requires` installed
+ where
+ ready = scriptProperty ["mysqladmin -w3 ping > /dev/null"]
+ `assume` NoChange
+
-- | Check whether server is installed.
isInstalled :: IO Bool
isInstalled = Apt.isInstalled server
@@ -110,7 +118,7 @@ databaseExists (Database dbname) =
setup <!> cleanup
where
setup :: Property DebianLike
- setup = setup' `requires` installed
+ setup = setup' `requires` installedAndReady
cleanup :: Property UnixLike
cleanup = check isInstalled $ cleanup'
@@ -209,7 +217,7 @@ userGranted' (User username) privs context setupDesc setupSql userGrants =
setup <!> cleanup
where
setup :: Property (HasInfo + DebianLike)
- setup = setup' `requires` installed
+ setup = setup' `requires` installedAndReady
cleanup :: Property UnixLike
cleanup = check isInstalled $ cleanup'