summaryrefslogtreecommitdiff
path: root/src/Propellor/Property
diff options
context:
space:
mode:
authorJoey Hess2014-10-23 11:31:00 -0400
committerJoey Hess2014-10-23 11:31:00 -0400
commitbbec7021f84766d5a783c1f320066b27e04a225b (patch)
tree9bddbad55023e4ed890562e509f8e06f5bdbae2f /src/Propellor/Property
parent45ce3a5e8ccf90e357dbaf6e0152daa4de88b7fd (diff)
Revert "propellor spin"
This reverts commit 45ce3a5e8ccf90e357dbaf6e0152daa4de88b7fd.
Diffstat (limited to 'src/Propellor/Property')
-rw-r--r--src/Propellor/Property/Docker.hs26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/Propellor/Property/Docker.hs b/src/Propellor/Property/Docker.hs
index 8c2f3701..de3c64fb 100644
--- a/src/Propellor/Property/Docker.hs
+++ b/src/Propellor/Property/Docker.hs
@@ -30,6 +30,8 @@ module Propellor.Property.Docker (
cpuShares,
link,
ContainerAlias,
+ restart,
+ RestartPolicy(..),
-- * Internal use
chain,
) where
@@ -150,7 +152,7 @@ findContainer mhost cid cn mk = case mhost of
mkContainer :: ContainerId -> Host -> Maybe Container
mkContainer cid@(ContainerId hn _cn) h = Container
<$> fromVal (_dockerImage info)
- <*> pure (map (\a -> a hn) (_dockerRunParams info))
+ <*> pure (map (\mkparam -> mkparam hn) (_dockerRunParams info))
where
info = _dockerinfo $ hostInfo h'
h' = h
@@ -159,6 +161,7 @@ mkContainer cid@(ContainerId hn _cn) h = Container
-- name the container in a predictable way so we
-- and the user can easily find it later
& name (fromContainerId cid)
+ & restart RestartAlways
-- | Causes *any* docker images that are not in use by running containers to
-- be deleted. And deletes any containers that propellor has set up
@@ -274,6 +277,27 @@ link linkwith calias = genProp "link" $ \hn ->
-- Each container has its own alias namespace.
type ContainerAlias = String
+-- | Restart policy to apply when a container exits.
+restart :: RestartPolicy -> Property
+restart policy = runProp "restart" (serialize policy)
+ where
+ serialize NoRestart = "no"
+ serialize (RestartOnFailure Nothing) = "on-failure"
+ serialize (RestartOnFailure n) = "on-failure:" ++ show n
+ serialize RestartAlways = "always"
+
+-- | NoRestart makes docker not restart a container when it exits
+-- Note that this includes not restarting it on boot!
+--
+-- RestartOnFailure will restart the container if it exits nonzero.
+-- A max-retry value can be provided to prevent repeated restarts.
+--
+-- RestartAlways is the default for docker containers configured by
+-- propellor; as well as keeping badly behaved containers running,
+-- it ensures that containers get started back up after reboot or
+-- after docker is upgraded.
+data RestartPolicy = NoRestart | RestartOnFailure (Maybe Int) | RestartAlways
+
-- | A container is identified by its name, and the host
-- on which it's deployed.
data ContainerId = ContainerId HostName ContainerName