on master help sign in
3 files changed+5−21
since splitsnapshots
unifiedsplit
src/Docker/Client/Api.hs+4−4 src/Docker/Client/Internal.hs+1 src/Docker/Client/Utils.hs−17
src/Docker/Client/Api.hs+4−4
@@ -34,7 +34,7 @@ import Control.Monad.Reader (ask, lift)
3434import Data.Aeson (FromJSON, eitherDecode')
3535import qualified Data.ByteString as BS
3636import qualified Data.ByteString.Lazy as BSL
37−import Data.Conduit (Sink, (.|))
37+import Data.Conduit (Sink)
3838import qualified Data.Conduit.Binary as Conduit
3939import qualified Data.Text as T
4040import qualified Data.Text as Text
@@ -172,7 +172,7 @@ inspectContainer cid = requestHelper GET (InspectContainerEndpoint cid) >>= pars
172172-- __NOTE__: It's recommended to use one of the other 'LogDriverType's available (like
173173-- syslog) for creating your containers.
174174getContainerLogs :: forall m. (MonadIO m, MonadMask m) => LogOpts -> ContainerID -> DockerT m (Either DockerError BSL.ByteString)
175−getContainerLogs logopts cid = getContainerLogsStream logopts cid Conduit.sinkLbs
175+getContainerLogs logopts cid = requestHelper GET (ContainerLogsEndpoint logopts False cid)
176176
177177{-| Continuously gets the container's logs as a stream. Uses conduit.
178178
@@ -189,8 +189,7 @@ __Example__:
189189
190190-}
191191getContainerLogsStream :: forall m b . (MonadIO m, MonadMask m) => LogOpts -> ContainerID -> Sink BS.ByteString m b -> DockerT m (Either DockerError b)
192−getContainerLogsStream logopts cid sink =
193− requestHelper' GET (ContainerLogsEndpoint logopts True cid) (processLog .| sink)
192+getContainerLogsStream logopts cid = requestHelper' GET (ContainerLogsEndpoint logopts True cid)
194193-- JP: Should the second (follow) argument be True? XXX
195194
196195-- | Build an Image from a Dockerfile
@@ -225,3 +224,4 @@ createNetwork opts = requestHelper POST (CreateNetworkEndpoint opts) >>= parseR
225224-- | Removes a network
226225removeNetwork :: forall m. (MonadIO m, MonadMask m) => NetworkID -> DockerT m (Either DockerError ())
227226removeNetwork nid = requestUnit DELETE $ RemoveNetworkEndpoint nid
227+
src/Docker/Client/Internal.hs+1
@@ -105,3 +105,4 @@ getEndpointRequestBody (RemoveNetworkEndpoint _) = Nothing
105105getEndpointContentType :: Endpoint -> BSC.ByteString
106106getEndpointContentType (BuildImageEndpoint _ _) = BSC.pack "application/tar"
107107getEndpointContentType _ = BSC.pack "application/json; charset=utf-8"
108+
src/Docker/Client/Utils.hs−17
@@ -9,11 +9,7 @@ import qualified Codec.Archive.Tar as Tar
99import qualified Codec.Compression.GZip as GZip
1010import Control.Monad (filterM, liftM, unless)
1111import Control.Monad.IO.Class
12−import Data.Bits
1312import qualified Data.ByteString.Lazy as BS
14−import qualified Data.ByteString as BSS
15−import Data.Conduit (ConduitT, yield)
16−import qualified Data.Conduit.Binary as CB
1713import Data.Monoid ((<>))
1814import qualified Data.Text as T
1915import qualified Data.Text.IO as TIO
@@ -133,16 +129,3 @@ exclusionCheck f ps = any id (map (\(ExclusionPattern p) -> f ~~ T.unpack p) ps)
133129inclusionCheck :: FilePath -> [InclusionPattern] -> Bool
134130inclusionCheck f ps = any id (map (\(InclusionPattern p) -> f ~~ T.unpack p) ps)
135131
136−
137−processLog :: Monad m => ConduitT BSS.ByteString BSS.ByteString m ()
138−processLog = do
139− -- metadata (is the next string is stdout or stderr)
140− _ <- CB.take 4
141− len' <- CB.take 4
142− let len = BS.foldl (\i w -> shiftL i 8 .&. fromIntegral w) 0 len'
143− case len of
144− 0 -> return ()
145− n -> do
146− chunk <- CB.take n
147− yield . BS.toStrict $ chunk
148− processLog