summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog2
-rw-r--r--src/Propellor/Property.hs8
-rw-r--r--src/Propellor/Property/Docker.hs22
3 files changed, 18 insertions, 14 deletions
diff --git a/debian/changelog b/debian/changelog
index 043ef508..9e90877d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,7 +1,7 @@
propellor (0.9.1) UNRELEASED; urgency=medium
* Docker: Add ability to control when containers restart.
- * Docker: Defaut to always restarting containers, so they come back
+ * Docker: Default to always restarting containers, so they come back
up after reboots and docker daemon upgrades.
-- Joey Hess <joeyh@debian.org> Thu, 23 Oct 2014 03:05:22 -0400
diff --git a/src/Propellor/Property.hs b/src/Propellor/Property.hs
index 87136042..4b957317 100644
--- a/src/Propellor/Property.hs
+++ b/src/Propellor/Property.hs
@@ -145,6 +145,14 @@ h ! p = h & revert p
infixl 1 !
+-- | Like (&), but adds the property as the first property of the host.
+-- Normally, property order should not matter, but this is useful
+-- when it does.
+(&^) :: IsProp p => Host -> p -> Host
+(Host hn ps is) &^ p = Host hn ([toProp p] ++ ps) (getInfo p <> is)
+
+infixl 1 &^
+
-- Changes the action that is performed to satisfy a property.
adjustProperty :: Property -> (Propellor Result -> Propellor Result) -> Property
adjustProperty p f = p { propertySatisfy = f (propertySatisfy p) }
diff --git a/src/Propellor/Property/Docker.hs b/src/Propellor/Property/Docker.hs
index 358cc8c3..b717fe19 100644
--- a/src/Propellor/Property/Docker.hs
+++ b/src/Propellor/Property/Docker.hs
@@ -19,7 +19,6 @@ module Propellor.Property.Docker (
-- * Container configuration
dns,
hostname,
- name,
publish,
expose,
user,
@@ -156,10 +155,14 @@ mkContainer cid@(ContainerId hn _cn) h = Container
where
info = _dockerinfo $ hostInfo h'
h' = h
- -- expose propellor directory inside the container
+ -- Restart by default so container comes up on
+ -- boot or when docker is upgraded.
+ &^ restart RestartAlways
+ -- Expose propellor directory inside the container.
& volume (localdir++":"++localdir)
- -- name the container in a predictable way so we
- -- and the user can easily find it later
+ -- Name the container in a predictable way so we
+ -- and the user can easily find it later. This property
+ -- comes last, so it cannot be overridden.
& name (fromContainerId cid)
-- | Causes *any* docker images that are not in use by running containers to
@@ -219,7 +222,7 @@ dns = runProp "dns"
hostname :: String -> Property
hostname = runProp "hostname"
--- | Set name for container. (Normally done automatically.)
+-- | Set name of container.
name :: String -> Property
name = runProp "name"
@@ -382,14 +385,7 @@ runningContainer cid@(ContainerId hn cn) image runps = containerDesc cid $ prope
shim <- liftIO $ Shim.setup (localdir </> "propellor") (localdir </> shimdir cid)
liftIO $ writeFile (identFile cid) (show ident)
ensureProperty $ boolProperty "run" $ runContainer img
- -- Restart by default so container comes up on
- -- boot or when docker is upgraded. This is put
- -- here, rather than adding a default Property
- -- in mkContainer, to avoid changing the ident
- -- of existing containers. Any restart property
- -- will override it.
- -- This is a hack. TODO: Move to correct place.
- ("--restart=always" : runps ++ ["-i", "-d", "-t"])
+ (runps ++ ["-i", "-d", "-t"])
[shim, "--docker", fromContainerId cid]
-- | Called when propellor is running inside a docker container.