on master help sign in
Fixes indentaion
6477978Deni Bertovic
Network/Docker.hs+20−11
@@ -21,38 +21,47 @@ import qualified Pipes.HTTP as PH
21import Text.Printf (printf)
21import Text.Printf (printf)
22
22
23import Network.Docker.Internal
23import Network.Docker.Internal
24−import Network.Docker.Options
25import Network.Docker.Types
24import Network.Docker.Types
26
25
27getDockerVersion :: DockerClientOpts -> IO (Maybe DockerVersion)
26getDockerVersion :: DockerClientOpts -> IO (Maybe DockerVersion)
27+getDockerVersion clientOpts = decodeResponse <$>
28−getDockerVersion clientOpts = decodeResponse <$> runDocker (getDockerVersionM clientOpts SVersionEndpoint)
28+ runDocker (getDockerVersionM clientOpts SVersionEndpoint)
29
29
30listContainers :: DockerClientOpts -> IO (Maybe [DockerContainer])
30listContainers :: DockerClientOpts -> IO (Maybe [DockerContainer])
31+listContainers clientOpts = decodeResponse <$>
31−listContainers clientOpts = decodeResponse <$> runDocker (listContainersM clientOpts SListContainersEndpoint)
32+ runDocker (listContainersM clientOpts SListContainersEndpoint)
32
33
33listImages :: DockerClientOpts -> IO (Maybe [DockerImage])
34listImages :: DockerClientOpts -> IO (Maybe [DockerImage])
35+listImages clientOpts = decodeResponse <$>
34−listImages clientOpts = decodeResponse <$> runDocker (listImagesM clientOpts SListImagesEndpoint)
36+ runDocker (listImagesM clientOpts SListImagesEndpoint)
35
37
36createContainer :: DockerClientOpts -> CreateContainerOpts -> IO(Maybe T.Text)
38createContainer :: DockerClientOpts -> CreateContainerOpts -> IO(Maybe T.Text)
39+createContainer clientOpts createOpts = getElemFromResponse "Id" <$>
37−createContainer clientOpts createOpts = getElemFromResponse "Id" <$> runDocker (createContainerM clientOpts (SCreateContainerEndpoint) createOpts)
40+ runDocker (createContainerM clientOpts (SCreateContainerEndpoint) createOpts)
38
41
39startContainer :: DockerClientOpts -> String -> StartContainerOpts -> IO(Status)
42startContainer :: DockerClientOpts -> String -> StartContainerOpts -> IO(Status)
43+startContainer clientOpts cid startOpts = (^. responseStatus) <$>
40−startContainer clientOpts cid startOpts = (^. responseStatus) <$> runDocker (startContainerM clientOpts (SStartContainerEndpoint cid) startOpts)
44+ runDocker (startContainerM clientOpts (SStartContainerEndpoint cid) startOpts)
41
45
42stopContainer :: DockerClientOpts -> String -> IO (Status)
46stopContainer :: DockerClientOpts -> String -> IO (Status)
47+stopContainer clientOpts cid = (^. responseStatus) <$>
43−stopContainer clientOpts cid = (^. responseStatus) <$> runDocker (stopContainerM clientOpts (SStopContainerEndpoint cid))
48+ runDocker (stopContainerM clientOpts (SStopContainerEndpoint cid))
44
49
45killContainer :: DockerClientOpts -> String -> IO (Status)
50killContainer :: DockerClientOpts -> String -> IO (Status)
51+killContainer clientOpts cid = (^. responseStatus) <$>
46−killContainer clientOpts cid = (^. responseStatus) <$> runDocker (killContainerM clientOpts (SKillContainerEndpoint cid))
52+ runDocker (killContainerM clientOpts (SKillContainerEndpoint cid))
47
53
48restartContainer :: DockerClientOpts -> String -> IO (Status)
54restartContainer :: DockerClientOpts -> String -> IO (Status)
55+restartContainer clientOpts cid = (^. responseStatus) <$>
49−restartContainer clientOpts cid = (^. responseStatus) <$> runDocker (restartContainerM clientOpts (SRestartContainerEndpoint cid))
56+ runDocker (restartContainerM clientOpts (SRestartContainerEndpoint cid))
50
57
51pauseContainer :: DockerClientOpts -> String -> IO (Status)
58pauseContainer :: DockerClientOpts -> String -> IO (Status)
59+pauseContainer clientOpts cid = (^. responseStatus) <$>
52−pauseContainer clientOpts cid = (^. responseStatus) <$> runDocker (pauseContainerM clientOpts (SPauseContainerEndpoint cid))
60+ runDocker (pauseContainerM clientOpts (SPauseContainerEndpoint cid))
53
61
54unpauseContainer :: DockerClientOpts -> String -> IO (Status)
62unpauseContainer :: DockerClientOpts -> String -> IO (Status)
63+unpauseContainer clientOpts cid = (^. responseStatus) <$>
55−unpauseContainer clientOpts cid = (^. responseStatus) <$> runDocker (unpauseContainerM clientOpts (SUnpauseContainerEndpoint cid))
64+ runDocker (unpauseContainerM clientOpts (SUnpauseContainerEndpoint cid))
56
65
57deleteContainer :: DockerClientOpts -> DeleteOpts -> String -> IO (Status)
66deleteContainer :: DockerClientOpts -> DeleteOpts -> String -> IO (Status)
58deleteContainer c d cid = deleteContainerWithOpts c d cid
67deleteContainer c d cid = deleteContainerWithOpts c d cid
Network/Docker/Internal.hs+86−39
@@ -56,87 +56,134 @@ getEndpoint (SDeleteContainerEndpoint cid (DeleteOpts removeVolumes force)) =
56
56
57setupSSLCtx :: SSLOptions -> IO SSLContext
57setupSSLCtx :: SSLOptions -> IO SSLContext
58setupSSLCtx (SSLOptions key cert) = do
58setupSSLCtx (SSLOptions key cert) = do
59− ctx <- SSL.context
59+ ctx <- SSL.context
60− SSL.contextSetPrivateKeyFile ctx key
60+ SSL.contextSetPrivateKeyFile ctx key
61− SSL.contextSetCertificateFile ctx cert
61+ SSL.contextSetCertificateFile ctx cert
62− SSL.contextAddOption ctx SSL.SSL_OP_NO_SSLv3
62+ SSL.contextAddOption ctx SSL.SSL_OP_NO_SSLv3
63− SSL.contextAddOption ctx SSL.SSL_OP_NO_SSLv2
63+ SSL.contextAddOption ctx SSL.SSL_OP_NO_SSLv2
64− return ctx
64+ return ctx
65
65
66mkOpts c = defaults & manager .~ Left (opensslManagerSettings c)
66mkOpts c = defaults & manager .~ Left (opensslManagerSettings c)
67
67
68getSSL
68getSSL
69− :: SSLOptions
69+ :: SSLOptions
70− -> String
70+ -> String
71− -> IO (Response L.ByteString)
71+ -> IO (Response L.ByteString)
72getSSL sopts url = withOpenSSL $ getWith (mkOpts $ setupSSLCtx sopts) url
72getSSL sopts url = withOpenSSL $ getWith (mkOpts $ setupSSLCtx sopts) url
73
73
74postSSL
74postSSL
75− :: ToJSON a
75+ :: ToJSON a
76− => SSLOptions
76+ => SSLOptions
77− -> String
77+ -> String
78− -> a
78+ -> a
79− -> IO (Response L.ByteString)
79+ -> IO (Response L.ByteString)
80postSSL sopts url = withOpenSSL . postWith (mkOpts $ setupSSLCtx sopts) url . toJSON
80postSSL sopts url = withOpenSSL . postWith (mkOpts $ setupSSLCtx sopts) url . toJSON
81
81
82deleteSSL
82deleteSSL
83− :: SSLOptions
83+ :: SSLOptions
84− -> String
84+ -> String
85− -> IO (Response L.ByteString)
85+ -> IO (Response L.ByteString)
86deleteSSL sopts url = withOpenSSL $ deleteWith (mkOpts $ setupSSLCtx sopts) url
86deleteSSL sopts url = withOpenSSL $ deleteWith (mkOpts $ setupSSLCtx sopts) url
87
87
88fullUrl :: DockerClientOpts -> SEndpoint a -> URL
88fullUrl :: DockerClientOpts -> SEndpoint a -> URL
89+fullUrl clientOpts endpoint =
89−fullUrl clientOpts endpoint = constructUrl (baseUrl clientOpts) (apiVersion clientOpts) (getEndpoint endpoint)
90+ constructUrl (baseUrl clientOpts) (apiVersion clientOpts) (getEndpoint endpoint)
90
91
91_dockerGetQuery :: DockerClientOpts -> SEndpoint a -> HttpRequestM (SEndpoint a)
92_dockerGetQuery :: DockerClientOpts -> SEndpoint a -> HttpRequestM (SEndpoint a)
92−_dockerGetQuery clientOpts@DockerClientOpts{ssl = NoSSL} endpoint = Free (Get (fullUrl clientOpts endpoint))
93+_dockerGetQuery clientOpts@DockerClientOpts{ssl = NoSSL} endpoint =
94+ Free (Get (fullUrl clientOpts endpoint))
93−_dockerGetQuery clientOpts@DockerClientOpts{ssl = SSL sslOpts} endpoint = Free (GetSSL sslOpts (fullUrl clientOpts endpoint))
95+_dockerGetQuery clientOpts@DockerClientOpts{ssl = SSL sslOpts} endpoint =
96+ Free (GetSSL sslOpts (fullUrl clientOpts endpoint))
94
97
95_dockerPostQuery :: ToJSON b => DockerClientOpts -> SEndpoint a -> b -> HttpRequestM (SEndpoint a)
98_dockerPostQuery :: ToJSON b => DockerClientOpts -> SEndpoint a -> b -> HttpRequestM (SEndpoint a)
96−_dockerPostQuery clientOpts@DockerClientOpts{ssl = NoSSL} endpoint postObject = Free (Post (fullUrl clientOpts endpoint) (toJSON postObject))
99+_dockerPostQuery clientOpts@DockerClientOpts{ssl = NoSSL} endpoint postObject =
100+ Free (Post (fullUrl clientOpts endpoint) (toJSON postObject))
97−_dockerPostQuery clientOpts@DockerClientOpts{ssl = SSL sslOpts} endpoint postObject = Free (PostSSL sslOpts (fullUrl clientOpts endpoint) (toJSON postObject))
101+_dockerPostQuery clientOpts@DockerClientOpts{ssl = SSL sslOpts} endpoint postObject =
102+ Free (PostSSL sslOpts (fullUrl clientOpts endpoint) (toJSON postObject))
98
103
99_dockerEmptyPostQuery :: DockerClientOpts -> SEndpoint a -> HttpRequestM (SEndpoint a)
104_dockerEmptyPostQuery :: DockerClientOpts -> SEndpoint a -> HttpRequestM (SEndpoint a)
100−_dockerEmptyPostQuery clientOpts@DockerClientOpts{ssl = NoSSL} endpoint = Free (Post (fullUrl clientOpts endpoint) (toJSON emptyPost))
105+_dockerEmptyPostQuery clientOpts@DockerClientOpts{ssl = NoSSL} endpoint =
106+ Free (Post (fullUrl clientOpts endpoint) (toJSON emptyPost))
101−_dockerEmptyPostQuery clientOpts@DockerClientOpts{ssl = SSL sslOpts} endpoint = Free (PostSSL sslOpts (fullUrl clientOpts endpoint) (toJSON emptyPost))
107+_dockerEmptyPostQuery clientOpts@DockerClientOpts{ssl = SSL sslOpts} endpoint =
108+ Free (PostSSL sslOpts (fullUrl clientOpts endpoint) (toJSON emptyPost))
102
109
103_dockerDeleteQuery :: DockerClientOpts -> SEndpoint a -> HttpRequestM (SEndpoint a)
110_dockerDeleteQuery :: DockerClientOpts -> SEndpoint a -> HttpRequestM (SEndpoint a)
104−_dockerDeleteQuery clientOpts@DockerClientOpts{ssl = NoSSL} endpoint = Free (Delete (fullUrl clientOpts endpoint))
111+_dockerDeleteQuery clientOpts@DockerClientOpts{ssl = NoSSL} endpoint =
112+ Free (Delete (fullUrl clientOpts endpoint))
105−_dockerDeleteQuery clientOpts@DockerClientOpts{ssl = SSL sslOpts} endpoint = Free (DeleteSSL sslOpts (fullUrl clientOpts endpoint))
113+_dockerDeleteQuery clientOpts@DockerClientOpts{ssl = SSL sslOpts} endpoint =
106−
114+ Free (DeleteSSL sslOpts (fullUrl clientOpts endpoint))
115+
116+getDockerVersionM
117+ :: DockerClientOpts
118+ -> SEndpoint VersionEndpoint
107−getDockerVersionM :: DockerClientOpts -> SEndpoint VersionEndpoint -> HttpRequestM (SEndpoint VersionEndpoint)
119+ -> HttpRequestM (SEndpoint VersionEndpoint)
108getDockerVersionM clientOpts e = _dockerGetQuery clientOpts e
120getDockerVersionM clientOpts e = _dockerGetQuery clientOpts e
109
121
122+stopContainerM
123+ :: DockerClientOpts
124+ -> SEndpoint StopContainerEndpoint
110−stopContainerM :: DockerClientOpts -> SEndpoint StopContainerEndpoint -> HttpRequestM (SEndpoint StopContainerEndpoint)
125+ -> HttpRequestM (SEndpoint StopContainerEndpoint)
111stopContainerM clientOpts e = _dockerEmptyPostQuery clientOpts e
126stopContainerM clientOpts e = _dockerEmptyPostQuery clientOpts e
112
127
128+listContainersM
129+ :: DockerClientOpts
130+ -> SEndpoint ListContainersEndpoint
113−listContainersM :: DockerClientOpts -> SEndpoint ListContainersEndpoint -> HttpRequestM (SEndpoint ListContainersEndpoint)
131+ -> HttpRequestM (SEndpoint ListContainersEndpoint)
114listContainersM clientOpts e = _dockerGetQuery clientOpts e
132listContainersM clientOpts e = _dockerGetQuery clientOpts e
115
133
134+listImagesM
135+ :: DockerClientOpts
136+ -> SEndpoint ListImagesEndpoint
116−listImagesM :: DockerClientOpts -> SEndpoint ListImagesEndpoint -> HttpRequestM (SEndpoint ListImagesEndpoint)
137+ -> HttpRequestM (SEndpoint ListImagesEndpoint)
117listImagesM clientOpts e = _dockerGetQuery clientOpts e
138listImagesM clientOpts e = _dockerGetQuery clientOpts e
118
139
140+killContainerM
141+ :: DockerClientOpts
142+ -> SEndpoint KillContainerEndpoint
119−killContainerM :: DockerClientOpts -> SEndpoint KillContainerEndpoint -> HttpRequestM (SEndpoint KillContainerEndpoint)
143+ -> HttpRequestM (SEndpoint KillContainerEndpoint)
120killContainerM clientOpts e = _dockerEmptyPostQuery clientOpts e
144killContainerM clientOpts e = _dockerEmptyPostQuery clientOpts e
121
145
146+restartContainerM
147+ :: DockerClientOpts
148+ -> SEndpoint RestartContainerEndpoint
122−restartContainerM :: DockerClientOpts -> SEndpoint RestartContainerEndpoint -> HttpRequestM (SEndpoint RestartContainerEndpoint)
149+ -> HttpRequestM (SEndpoint RestartContainerEndpoint)
123restartContainerM clientOpts e = _dockerEmptyPostQuery clientOpts e
150restartContainerM clientOpts e = _dockerEmptyPostQuery clientOpts e
124
151
152+pauseContainerM
153+ :: DockerClientOpts
154+ -> SEndpoint PauseContainerEndpoint
125−pauseContainerM :: DockerClientOpts -> SEndpoint PauseContainerEndpoint -> HttpRequestM (SEndpoint PauseContainerEndpoint)
155+ -> HttpRequestM (SEndpoint PauseContainerEndpoint)
126pauseContainerM clientOpts e = _dockerEmptyPostQuery clientOpts e
156pauseContainerM clientOpts e = _dockerEmptyPostQuery clientOpts e
127
157
158+unpauseContainerM
159+ :: DockerClientOpts
160+ -> SEndpoint UnpauseContainerEndpoint
128−unpauseContainerM :: DockerClientOpts -> SEndpoint UnpauseContainerEndpoint -> HttpRequestM (SEndpoint UnpauseContainerEndpoint)
161+ -> HttpRequestM (SEndpoint UnpauseContainerEndpoint)
129unpauseContainerM clientOpts e = _dockerEmptyPostQuery clientOpts e
162unpauseContainerM clientOpts e = _dockerEmptyPostQuery clientOpts e
130
163
164+createContainerM
165+ :: DockerClientOpts
166+ -> SEndpoint CreateContainerEndpoint
167+ -> CreateContainerOpts
131−createContainerM :: DockerClientOpts -> SEndpoint CreateContainerEndpoint -> CreateContainerOpts -> HttpRequestM (SEndpoint CreateContainerEndpoint)
168+ -> HttpRequestM (SEndpoint CreateContainerEndpoint)
132createContainerM clientOpts e c = _dockerPostQuery clientOpts e c
169createContainerM clientOpts e c = _dockerPostQuery clientOpts e c
133
170
171+startContainerM
172+ :: DockerClientOpts
173+ -> SEndpoint StartContainerEndpoint
174+ -> StartContainerOpts
134−startContainerM :: DockerClientOpts -> SEndpoint StartContainerEndpoint -> StartContainerOpts -> HttpRequestM (SEndpoint StartContainerEndpoint)
175+ -> HttpRequestM (SEndpoint StartContainerEndpoint)
135startContainerM clientOpts e c = _dockerPostQuery clientOpts e c
176startContainerM clientOpts e c = _dockerPostQuery clientOpts e c
136
177
178+deleteContainerM
179+ :: DockerClientOpts
180+ -> SEndpoint DeleteContainerEndpoint
137−deleteContainerM :: DockerClientOpts -> SEndpoint DeleteContainerEndpoint -> HttpRequestM (SEndpoint DeleteContainerEndpoint)
181+ -> HttpRequestM (SEndpoint DeleteContainerEndpoint)
138deleteContainerM clientOpts e = _dockerDeleteQuery clientOpts e
182deleteContainerM clientOpts e = _dockerDeleteQuery clientOpts e
139
183
184+getContainerLogsM
185+ :: DockerClientOpts
186+ -> SEndpoint ContainerLogsEndpoint
140−getContainerLogsM :: DockerClientOpts -> SEndpoint ContainerLogsEndpoint -> HttpRequestM (SEndpoint ContainerLogsEndpoint)
187+ -> HttpRequestM (SEndpoint ContainerLogsEndpoint)
141getContainerLogsM clientOpts e = _dockerGetQuery clientOpts e
188getContainerLogsM clientOpts e = _dockerGetQuery clientOpts e
142
189
Network/Docker/Types.hs+7−8
@@ -14,15 +14,14 @@ import Control.Monad.Free
14import Data.Aeson
14import Data.Aeson
15import Data.Aeson.Types
15import Data.Aeson.Types
16import Data.Bool
16import Data.Bool
17−import qualified Data.ByteString.Lazy as L
17+import qualified Data.ByteString.Lazy as L
18import Data.Default
18import Data.Default
19−import qualified Data.Map as Map
19+import qualified Data.Map as Map
20−import qualified Data.Text as T
20+import qualified Data.Text as T
21−import GHC.Generics (Generic)
21+import GHC.Generics (Generic)
22−import Network.Docker.Options
23−import Network.Wreq.Types (Postable)
22+import Network.Wreq.Types (Postable)
24−import OpenSSL.Session (SSLContext)
23+import OpenSSL.Session (SSLContext)
25−import Prelude hiding (id)
24+import Prelude hiding (id)
26
25
27type URL = String
26type URL = String
28type ApiVersion = String
27type ApiVersion = String