@@ -47,7 +47,7 @@ module Docker.Client.Types (
4747 , VolumeFrom(..)
4848 , Link(..)
4949 , LogDriverType(..)
50− , LogDriverOptions(..)
50+ , LogDriverOption(..)
5151 , LogDriverConfig(..)
5252 , NetworkMode(..)
5353 , PortType(..)
@@ -638,7 +638,7 @@ defaultHostConfig :: HostConfig
638638defaultHostConfig = HostConfig {
639639 binds=[]
640640 , containerIDFile=Nothing
641− , logConfig=LogDriverConfig JsonFile Nothing
641+ , logConfig=LogDriverConfig JsonFile []
642642 , networkMode=Bridge
643643 , portBindings=[]
644644 , restartPolicy=RestartOff
@@ -863,27 +863,27 @@ instance ToJSON LogDriverType where
863863 toJSON Etwlogs = JSON.String "etwlogs"
864864 toJSON LoggingDisabled = JSON.String "none"
865865
866−newtype LogDriverOptions = LogDriverOptions (M.Map Text Text) deriving (Eq, Show)
866+data LogDriverOption = LogDriverOption Name Value deriving (Eq, Show)
867867
868−instance FromJSON LogDriverOptions where
869− parseJSON (JSON.Object o) = do
870− LogDriverOptions <$> HM.foldlWithKey' f (return M.empty) o
868+instance ToJSON [LogDriverOption] where
869+ toJSON [] = emptyJsonObject
870+ toJSON (o:os) = toJsonKeyVal (o:os) key val
871+ where key (LogDriverOption n _) = T.unpack n
872+ val (LogDriverOption _ v) = v
871873
872− where
873− f accM k (JSON.String v) = do
874+instance FromJSON [LogDriverOption] where
875+ parseJSON (JSON.Object o) = HM.foldlWithKey' f (return []) o
876+ where f accM k v = do
874877 acc <- accM
875− return $ M.insert k v acc
876− f _ _ _ = fail "Value of LogDriverOptions is not a string"
877−
878− parseJSON JSON.Null = return $ LogDriverOptions M.empty
879− parseJSON _ = fail "LogDriverOptions is not an object"
880−
881−instance ToJSON LogDriverOptions where
882− toJSON (LogDriverOptions mp) = toJSON mp
878+ value <- parseJSON v
879+ return $ (LogDriverOption k value):acc
880+ parseJSON JSON.Null = return []
881+ parseJSON _ = fail "Failed to parse LogDriverOptions"
883882
884−data LogDriverConfig = LogDriverConfig LogDriverType (Maybe LogDriverOptions) deriving (Eq, Show)
883+data LogDriverConfig = LogDriverConfig LogDriverType [LogDriverOption] deriving (Eq, Show)
885884
886885instance ToJSON LogDriverConfig where
886+ toJSON (LogDriverConfig driverType []) = object ["Type" .= driverType]
887887 toJSON (LogDriverConfig driverType driverOptions) = object ["Type" .= driverType, "Config" .= driverOptions]
888888
889889instance FromJSON LogDriverConfig where