on master help sign in
More fleshing out

Adds all the functions we have in master but whithout implementation.

commitab4a597e04933e20a6a37e7decf942209e807457 authorDeni Bertovic <deni@denibertovic.com> dateThu 3 Mar 2016, 15:19 (11 years ago) parent4e85f3f
2 files changed+60−13
src/Docker.hs+28 src/Docker/Types.hs+32−13
src/Docker.hs+28
@@ -10,3 +10,31 @@ listContainers = undefined
1010
1111listImages :: Monad m => ListOpts -> DockerT m ([Image])
1212listImages = undefined
13+
14+createContainer :: Monad m => CreateOpts -> DockerT m (ContainerID)
15+createContainer = undefined
16+
17+startContainer :: Monad m => StartOpts -> DockerT m (ContainerID)
18+startContainer = undefined
19+
20+stopContainer :: Monad m => Timeout -> DockerT m ()
21+stopContainer = undefined
22+
23+killContainer :: Monad m => Signal -> DockerT m ()
24+killContainer = undefined
25+
26+restartContainer :: Monad m => Timeout -> DockerT m ()
27+restartContainer = undefined
28+
29+pauseContainer :: Monad m => DockerT m ()
30+pauseContainer = undefined
31+
32+unpauseContainer :: Monad m => DockerT m ()
33+unpauseContainer = undefined
34+
35+deleteContainer :: Monad m => DeleteOpts -> DockerT m ()
36+deleteContainer = undefined
37+
38+getContainerLogs :: Monad m => LogOpts -> DockerT m ()
39+getContainerLogs = undefined
40+
src/Docker/Types.hs+32−13
@@ -2,8 +2,9 @@ module Docker.Types where
22
33import Control.Monad.Except (ExceptT, runExceptT)
44import Control.Monad.Reader (ReaderT, runReaderT)
5−import Data.Aeson (FromJSON, ToJSON, genericParseJSON,
6− genericToJSON, parseJSON, toJSON)
5+import Data.Aeson (FromJSON, ToJSON, encode,
6+ genericParseJSON, genericToJSON,
7+ parseJSON, toJSON)
78import Data.Aeson.Types (defaultOptions, fieldLabelModifier)
89import qualified Data.ByteString.Lazy as BL
910import Data.Char (toUpper)
@@ -15,10 +16,15 @@ import qualified Network.HTTP.Client as HTTP
1516type Endpoint = Text
1617type URL = Text
1718type ApiVersion = Text
19+type ContainerID = Text
20+type ImageID = Text
21+type Timeout = Integer
1822
1923type Request = HTTP.Request
2024type Response = HTTP.Response BL.ByteString
2125
26+data Signal = SIGINT | SIGKILL deriving (Eq, Show)
27+
2228data DockerClientOpts m = DockerClientOpts {
2329 http :: Request -> m Response
2430 , apiVersion :: ApiVersion
@@ -31,22 +37,17 @@ runDockerT :: (Monad m) => DockerClientOpts m -> DockerT m a -> m (Either String
3137runDockerT opts a = runExceptT $ runReaderT a opts
3238-- runDockerT opts a = (runExceptT .) . flip runReaderT opts a
3339
34−data ListOpts = ListOpts
35− { all :: Bool
36− } deriving (Eq, Show, Generic)
37−
38−instance ToJSON ListOpts
39−instance FromJSON ListOpts
40+data ListOpts = ListOpts { all :: Bool } deriving (Eq, Show)
4041
4142defaultClientOpts :: DockerClientOpts IO
42−defaultClientOpts = DockerClientOpts
43− { http = undefined
43+defaultClientOpts = DockerClientOpts {
44+ http = undefined
4445 , apiVersion = "v1.22"
4546 , baseUrl = "http://127.0.0.1:2375/"
4647 }
4748
48−data DockerVersion = DockerVersion
49− { version :: Text
49+data DockerVersion = DockerVersion {
50+ version :: Text
5051 , gitCommit :: Text
5152 , goVersion :: Text
5253 , arch :: Text
@@ -67,4 +68,22 @@ data Container = Container
6768
6869data Image = Image
6970
70−
71+data CreateOpts = CreateOpts
72+data StartOpts = StartOpts
73+
74+data DeleteOpts = DeleteOpts {
75+ v :: Bool
76+ , force :: Bool
77+ } deriving (Eq, Show)
78+
79+type Timestamp = Integer
80+data Tail = Integer | All deriving (Eq, Show)
81+
82+data LogOpts = LogOpts {
83+ follow :: Bool
84+ , stdout :: Bool
85+ , stderr :: Bool
86+ , since :: Timestamp
87+ , timestamps :: Bool
88+ , tail :: Tail
89+ } deriving (Eq, Show)