propellor spin

This commit is contained in:
Joey Hess 2014-10-23 03:27:40 -04:00
parent 93099b8627
commit 856a4c673c
Failed to extract signature
3 changed files with 18 additions and 14 deletions

2
debian/changelog vendored
View File

@ -1,7 +1,7 @@
propellor (0.9.1) UNRELEASED; urgency=medium propellor (0.9.1) UNRELEASED; urgency=medium
* Docker: Add ability to control when containers restart. * 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. up after reboots and docker daemon upgrades.
-- Joey Hess <joeyh@debian.org> Thu, 23 Oct 2014 03:05:22 -0400 -- Joey Hess <joeyh@debian.org> Thu, 23 Oct 2014 03:05:22 -0400

View File

@ -145,6 +145,14 @@ h ! p = h & revert p
infixl 1 ! 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. -- Changes the action that is performed to satisfy a property.
adjustProperty :: Property -> (Propellor Result -> Propellor Result) -> Property adjustProperty :: Property -> (Propellor Result -> Propellor Result) -> Property
adjustProperty p f = p { propertySatisfy = f (propertySatisfy p) } adjustProperty p f = p { propertySatisfy = f (propertySatisfy p) }

View File

@ -19,7 +19,6 @@ module Propellor.Property.Docker (
-- * Container configuration -- * Container configuration
dns, dns,
hostname, hostname,
name,
publish, publish,
expose, expose,
user, user,
@ -156,10 +155,14 @@ mkContainer cid@(ContainerId hn _cn) h = Container
where where
info = _dockerinfo $ hostInfo h' info = _dockerinfo $ hostInfo h'
h' = 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) & volume (localdir++":"++localdir)
-- name the container in a predictable way so we -- Name the container in a predictable way so we
-- and the user can easily find it later -- and the user can easily find it later. This property
-- comes last, so it cannot be overridden.
& name (fromContainerId cid) & name (fromContainerId cid)
-- | Causes *any* docker images that are not in use by running containers to -- | Causes *any* docker images that are not in use by running containers to
@ -219,7 +222,7 @@ dns = runProp "dns"
hostname :: String -> Property hostname :: String -> Property
hostname = runProp "hostname" hostname = runProp "hostname"
-- | Set name for container. (Normally done automatically.) -- | Set name of container.
name :: String -> Property name :: String -> Property
name = runProp "name" 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) shim <- liftIO $ Shim.setup (localdir </> "propellor") (localdir </> shimdir cid)
liftIO $ writeFile (identFile cid) (show ident) liftIO $ writeFile (identFile cid) (show ident)
ensureProperty $ boolProperty "run" $ runContainer img ensureProperty $ boolProperty "run" $ runContainer img
-- Restart by default so container comes up on (runps ++ ["-i", "-d", "-t"])
-- 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"])
[shim, "--docker", fromContainerId cid] [shim, "--docker", fromContainerId cid]
-- | Called when propellor is running inside a docker container. -- | Called when propellor is running inside a docker container.