Merge branch 'joeyconfig'
This commit is contained in:
commit
adbc70b768
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue