@@ -47,7 +47,7 @@ module Docker.Client.Types (
47 , VolumeFrom(..)
47 , VolumeFrom(..)
48 , Link(..)
48 , Link(..)
49 , LogDriverType(..)
49 , LogDriverType(..)
50− , LogDriverOptions(..)
50+ , LogDriverOption(..)
51 , LogDriverConfig(..)
51 , LogDriverConfig(..)
52 , NetworkMode(..)
52 , NetworkMode(..)
53 , PortType(..)
53 , PortType(..)
@@ -638,7 +638,7 @@ defaultHostConfig :: HostConfig
638defaultHostConfig = HostConfig {
638defaultHostConfig = HostConfig {
640 , containerIDFile=Nothing
640 , containerIDFile=Nothing
641− , logConfig=LogDriverConfig JsonFile Nothing
641+ , logConfig=LogDriverConfig JsonFile []
642 , networkMode=Bridge
642 , networkMode=Bridge
643 , portBindings=[]
643 , portBindings=[]
644 , restartPolicy=RestartOff
644 , restartPolicy=RestartOff
@@ -863,27 +863,27 @@ instance ToJSON LogDriverType where
863 toJSON Etwlogs = JSON.String "etwlogs"
863 toJSON Etwlogs = JSON.String "etwlogs"
864 toJSON LoggingDisabled = JSON.String "none"
864 toJSON LoggingDisabled = JSON.String "none"
866−newtype LogDriverOptions = LogDriverOptions (M.Map Text Text) deriving (Eq, Show)
866+data LogDriverOption = LogDriverOption Name Value deriving (Eq, Show)
868−instance FromJSON LogDriverOptions where
868+instance ToJSON [LogDriverOption] where
869− parseJSON (JSON.Object o) = do
869+ toJSON [] = emptyJsonObject
870− LogDriverOptions <$> HM.foldlWithKey' f (return M.empty) o
870+ toJSON (o:os) = toJsonKeyVal (o:os) key val
871+ where key (LogDriverOption n _) = T.unpack n
872+ val (LogDriverOption _ v) = v
872− where
874+instance FromJSON [LogDriverOption] where
875+ parseJSON (JSON.Object o) = HM.foldlWithKey' f (return []) o
873− f accM k (JSON.String v) = do
876+ where f accM k v = do
874 acc <- accM
877 acc <- accM
875− return $ M.insert k v acc
878+ value <- parseJSON v
876− f _ _ _ = fail "Value of LogDriverOptions is not a string"
879+ return $ (LogDriverOption k value):acc
878− parseJSON JSON.Null = return $ LogDriverOptions M.empty
880+ parseJSON JSON.Null = return []
879− parseJSON _ = fail "LogDriverOptions is not an object"
881−instance ToJSON LogDriverOptions where
882− toJSON (LogDriverOptions mp) = toJSON mp
881+ parseJSON _ = fail "Failed to parse LogDriverOptions"
884−data LogDriverConfig = LogDriverConfig LogDriverType (Maybe LogDriverOptions) deriving (Eq, Show)
883+data LogDriverConfig = LogDriverConfig LogDriverType [LogDriverOption] deriving (Eq, Show)
886instance ToJSON LogDriverConfig where
885instance ToJSON LogDriverConfig where
886+ toJSON (LogDriverConfig driverType []) = object ["Type" .= driverType]
887 toJSON (LogDriverConfig driverType driverOptions) = object ["Type" .= driverType, "Config" .= driverOptions]
887 toJSON (LogDriverConfig driverType driverOptions) = object ["Type" .= driverType, "Config" .= driverOptions]
889instance FromJSON LogDriverConfig where
889instance FromJSON LogDriverConfig where