Merge branch 'joeyconfig'

This commit is contained in:
Joey Hess 2014-10-10 14:25:47 -04:00
commit adbc70b768
3 changed files with 26 additions and 14 deletions

View File

@ -53,6 +53,7 @@ darkstar = host "darkstar.kitenet.net"
& Apt.buildDep ["git-annex"] `period` Daily & Apt.buildDep ["git-annex"] `period` Daily
& Docker.configured & Docker.configured
! Docker.docked hosts "android-git-annex" ! Docker.docked hosts "android-git-annex"
! Docker.docked hosts "webserver"
clam :: Host clam :: Host
clam = standardSystem "clam.kitenet.net" Unstable "amd64" clam = standardSystem "clam.kitenet.net" Unstable "amd64"
@ -362,7 +363,6 @@ standardContainer :: Docker.ContainerName -> DebianSuite -> Architecture -> Host
standardContainer name suite arch = Docker.container name (dockerImage system) standardContainer name suite arch = Docker.container name (dockerImage system)
& os system & os system
& Apt.stdSourcesList `onChange` Apt.upgrade & Apt.stdSourcesList `onChange` Apt.upgrade
& Apt.installed ["systemd"]
& Apt.unattendedUpgrades & Apt.unattendedUpgrades
& Apt.cacheCleaned & Apt.cacheCleaned
& Docker.tweaked & Docker.tweaked

1
debian/changelog vendored
View File

@ -9,6 +9,7 @@ propellor (0.9.0) unstable; urgency=medium
immediate upgrades to the next stable release. immediate upgrades to the next stable release.
* debCdn switched from cdn.debian.net to http.debian.net, which seems to be * debCdn switched from cdn.debian.net to http.debian.net, which seems to be
better managed now. better managed now.
* Docker: Avoid committing container every time it's started up.
-- Joey Hess <joeyh@debian.org> Fri, 10 Oct 2014 11:37:45 -0400 -- Joey Hess <joeyh@debian.org> Fri, 10 Oct 2014 11:37:45 -0400

View File

@ -314,30 +314,38 @@ runningContainer :: ContainerId -> Image -> [RunParam] -> Property
runningContainer cid@(ContainerId hn cn) image runps = containerDesc cid $ property "running" $ do runningContainer cid@(ContainerId hn cn) image runps = containerDesc cid $ property "running" $ do
l <- liftIO $ listContainers RunningContainers l <- liftIO $ listContainers RunningContainers
if cid `elem` l if cid `elem` l
then do then checkident =<< liftIO (getrunningident simpleShClient)
-- Check if the ident has changed; if so the
-- parameters of the container differ and it must
-- be restarted.
runningident <- liftIO $ getrunningident
if runningident == Just ident
then noChange
else do
void $ liftIO $ stopContainer cid
restartcontainer
else ifM (liftIO $ elem cid <$> listContainers AllContainers) else ifM (liftIO $ elem cid <$> listContainers AllContainers)
( restartcontainer ( do
-- The container exists, but is not
-- running. Its parameters may have
-- changed, but we cannot tell without
-- starting it up first.
void $ liftIO $ startContainer cid
-- It can take a while for the container to
-- start up enough to get its ident, so
-- retry for up to 60 seconds.
checkident =<< liftIO (getrunningident (simpleShClientRetry 60))
, go image , go image
) )
where where
ident = ContainerIdent image hn cn runps ident = ContainerIdent image hn cn runps
-- Check if the ident has changed; if so the
-- parameters of the container differ and it must
-- be restarted.
checkident runningident
| runningident == Just ident = noChange
| otherwise = do
void $ liftIO $ stopContainer cid
restartcontainer
restartcontainer = do restartcontainer = do
oldimage <- liftIO $ fromMaybe image <$> commitContainer cid oldimage <- liftIO $ fromMaybe image <$> commitContainer cid
void $ liftIO $ removeContainer cid void $ liftIO $ removeContainer cid
go oldimage go oldimage
getrunningident :: IO (Maybe ContainerIdent) getrunningident shclient = shclient (namedPipe cid) "cat" [propellorIdent] $ \rs -> do
getrunningident = simpleShClient (namedPipe cid) "cat" [propellorIdent] $ \rs -> do
let !v = extractident rs let !v = extractident rs
return v return v
@ -433,6 +441,9 @@ provisionContainer cid = containerDesc cid $ property "provisioned" $ liftIO $ d
stopContainer :: ContainerId -> IO Bool stopContainer :: ContainerId -> IO Bool
stopContainer cid = boolSystem dockercmd [Param "stop", Param $ fromContainerId cid ] stopContainer cid = boolSystem dockercmd [Param "stop", Param $ fromContainerId cid ]
startContainer :: ContainerId -> IO Bool
startContainer cid = boolSystem dockercmd [Param "start", Param $ fromContainerId cid ]
stoppedContainer :: ContainerId -> Property stoppedContainer :: ContainerId -> Property
stoppedContainer cid = containerDesc cid $ property desc $ stoppedContainer cid = containerDesc cid $ property desc $
ifM (liftIO $ elem cid <$> listContainers RunningContainers) ifM (liftIO $ elem cid <$> listContainers RunningContainers)