@@ -6,6 +6,7 @@
7module Network.Docker.Types where
7module Network.Docker.Types where
9+import Prelude hiding(id)
9import Control.Applicative
10import Control.Applicative
10import Control.Lens.TH
11import Control.Lens.TH
11import Control.Lens.TH
12import Control.Lens.TH
@@ -68,6 +69,13 @@ data PortMap = PortMap
68 , _type :: PortType
69 , _type :: PortType
69 } deriving (Show, Eq)
70 } deriving (Show, Eq)
72+data DeleteOpts = DeleteOpts
73+ { removeVolumes :: Bool
77+defaultDeleteOpts = DeleteOpts False False
72data DockerContainer = DockerContainer
80data DockerContainer = DockerContainer
73 { _containerId :: ResourceId
81 { _containerId :: ResourceId
@@ -161,6 +169,7 @@ data StartContainerOpts = StartContainerOpts
161 , _Privileged :: Bool
169 , _Privileged :: Bool
162 , _Dns :: [T.Text]
170 , _Dns :: [T.Text]
163 , _VolumesFrom :: [T.Text]
171 , _VolumesFrom :: [T.Text]
172+ , _RestartPolicy :: RestartPolicy
164 } deriving (Show)
173 } deriving (Show)
166defaultStartOpts = StartContainerOpts
175defaultStartOpts = StartContainerOpts
@@ -172,6 +181,7 @@ defaultStartOpts = StartContainerOpts
172 , _Privileged = False
181 , _Privileged = False
173 , _Dns = []
182 , _Dns = []
174 , _VolumesFrom = []
183 , _VolumesFrom = []
184+ , _RestartPolicy = RestartNever
177instance ToJSON StartContainerOpts where
187instance ToJSON StartContainerOpts where
@@ -184,8 +194,19 @@ instance ToJSON StartContainerOpts where
184 , "Privileged" .= _Privileged
194 , "Privileged" .= _Privileged
185 , "Dns" .= _Dns
195 , "Dns" .= _Dns
186 , "VolumesFrom" .= _VolumesFrom
196 , "VolumesFrom" .= _VolumesFrom
197+ , "RestartPolicy" .= _RestartPolicy
200+data RestartPolicy = RestartNever
202+ | RestartOnFailure Int
205+instance ToJSON RestartPolicy where
206+ toJSON RestartNever = object ["Name" .= (""::String), "MaximumRetryCount" .= (0::Int) ]
207+ toJSON RestartAlways = object ["Name" .= ("always"::String), "MaximumRetryCount" .= (0::Int) ]
208+ toJSON (RestartOnFailure n) = object ["Name" .= ("on-failure"::String), "MaximumRetryCount" .= n ]
189makeClassy ''ResourceId
210makeClassy ''ResourceId
191-- makeLenses ''CreateContainerResponse
212-- makeLenses ''CreateContainerResponse