From b9e7721db0fedbbc6d1d32f54fbf011e0514e9df Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 4 Apr 2014 15:26:16 -0400 Subject: propellor spin --- Propellor/Property/Docker.hs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'Propellor/Property') diff --git a/Propellor/Property/Docker.hs b/Propellor/Property/Docker.hs index 9bdf3e54..bcd27c59 100644 --- a/Propellor/Property/Docker.hs +++ b/Propellor/Property/Docker.hs @@ -236,15 +236,24 @@ runningContainer cid@(ContainerId hn cn) image containerprops = containerDesc ci oldimage <- fromMaybe image <$> commitContainer cid void $ removeContainer cid go oldimage - else go image + else do + ifM (elem cid <$> listContainers AllContainers) + ( do + -- Contaner may be stopped, or + -- may not exist. + void $ stopContainer cid + oldimage <- fromMaybe image <$> commitContainer cid + void $ removeContainer cid + go oldimage + , go image + ) where ident = ContainerIdent image hn cn runps getrunningident :: IO (Maybe ContainerIdent) - getrunningident = catchDefaultIO Nothing $ - simpleShClient (namedPipe cid) "cat" [propellorIdent] $ \rs -> do - print (rs, extractident rs) - return $ extractident rs + getrunningident = simpleShClient (namedPipe cid) "cat" [propellorIdent] $ \rs -> do + print (rs, extractident rs) + return $ extractident rs extractident :: [Resp] -> Maybe ContainerIdent extractident = headMaybe . catMaybes . map (readish :: String -> Maybe ContainerIdent) . catMaybes . map getStdout -- cgit v1.2.3