@@ -6,6 +6,7 @@
66
77module Network.Docker.Types where
88
9+import Prelude hiding(id)
910import Control.Applicative
1011import Control.Lens.TH
1112import Control.Lens.TH
@@ -68,6 +69,13 @@ data PortMap = PortMap
6869 , _type :: PortType
6970 } deriving (Show, Eq)
7071
72+data DeleteOpts = DeleteOpts
73+ { removeVolumes :: Bool
74+ , force :: Bool
75+ }
76+
77+defaultDeleteOpts = DeleteOpts False False
78+
7179
7280data DockerContainer = DockerContainer
7381 { _containerId :: ResourceId
@@ -161,6 +169,7 @@ data StartContainerOpts = StartContainerOpts
161169 , _Privileged :: Bool
162170 , _Dns :: [T.Text]
163171 , _VolumesFrom :: [T.Text]
172+ , _RestartPolicy :: RestartPolicy
164173 } deriving (Show)
165174
166175defaultStartOpts = StartContainerOpts
@@ -172,6 +181,7 @@ defaultStartOpts = StartContainerOpts
172181 , _Privileged = False
173182 , _Dns = []
174183 , _VolumesFrom = []
184+ , _RestartPolicy = RestartNever
175185 }
176186
177187instance ToJSON StartContainerOpts where
@@ -184,8 +194,19 @@ instance ToJSON StartContainerOpts where
184194 , "Privileged" .= _Privileged
185195 , "Dns" .= _Dns
186196 , "VolumesFrom" .= _VolumesFrom
197+ , "RestartPolicy" .= _RestartPolicy
187198 ]
188199
200+data RestartPolicy = RestartNever
201+ | RestartAlways
202+ | RestartOnFailure Int
203+ deriving (Show)
204+
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 ]
209+
189210makeClassy ''ResourceId
190211
191212-- makeLenses ''CreateContainerResponse