@@ -52,7 +52,7 @@ module Docker.Client.Types (
52 , NetworkMode(..)
52 , NetworkMode(..)
53 , PortType(..)
53 , PortType(..)
54-- , NetworkInterface(..)
54-- , NetworkInterface(..)
55− , Networks(..)
55+ , Network(..)
56 , NetworkSettings(..)
56 , NetworkSettings(..)
57 , NetworkOptions(..)
57 , NetworkOptions(..)
58 , Mount(..)
58 , Mount(..)
@@ -92,7 +92,6 @@ import qualified Data.Aeson as JSON
92import Data.Aeson.Types (defaultOptions, fieldLabelModifier)
92import Data.Aeson.Types (defaultOptions, fieldLabelModifier)
93import Data.Char (isAlphaNum, toUpper)
93import Data.Char (isAlphaNum, toUpper)
94import qualified Data.HashMap.Strict as HM
94import qualified Data.HashMap.Strict as HM
95−import qualified Data.Map as M
96import Data.Monoid ((<>))
95import Data.Monoid ((<>))
97import Data.Text (Text)
96import Data.Text (Text)
98import qualified Data.Text as T
97import qualified Data.Text as T
@@ -420,20 +419,17 @@ instance FromJSON NetworkOptions where
420 parseJSON _ = fail "NetworkOptions is not an object"
419 parseJSON _ = fail "NetworkOptions is not an object"
422-- TODO: Not sure what this is used for anymore.
421-- TODO: Not sure what this is used for anymore.
423−newtype Networks = Networks (M.Map NetworkMode NetworkOptions) -- Note: Is it ever possible that there will be duplicates of network modes?
422+data Network = Network NetworkMode NetworkOptions
424 deriving (Eq, Show)
423 deriving (Eq, Show)
426−instance FromJSON Networks where
425+instance FromJSON [Network] where
427− parseJSON (JSON.Object o) = do
426+ parseJSON (JSON.Object o) = HM.foldlWithKey' f (return []) o
428− Networks <$> HM.foldlWithKey' f (return M.empty) o
431 f accM k' v' = do
428 f accM k' v' = do
432 acc <- accM
429 acc <- accM
433 k <- parseJSON $ JSON.String k'
430 k <- parseJSON $ JSON.String k'
434 v <- parseJSON v'
431 v <- parseJSON v'
435− return $ M.insert k v acc
432+ return $ (Network k v):acc
437 parseJSON _ = fail "Networks is not an object"
433 parseJSON _ = fail "Networks is not an object"
439-- | Data type reprsenting the various network settings a container can have.
435-- | Data type reprsenting the various network settings a container can have.
@@ -455,7 +451,7 @@ data NetworkSettings = NetworkSettings {
455 , networkSettingsIpPrefixLen :: Int
451 , networkSettingsIpPrefixLen :: Int
456 , networkSettingsIpv6Gateway :: Text
452 , networkSettingsIpv6Gateway :: Text
457 , networkSettingsMacAddress :: Text
453 , networkSettingsMacAddress :: Text
458− , networkSettingsNetworks :: Networks
454+ , networkSettingsNetworks :: [Network]
460 deriving (Eq, Show)
456 deriving (Eq, Show)
@@ -493,7 +489,7 @@ data Container = Container
493 , containerStatus :: Status
489 , containerStatus :: Status
494 , containerPorts :: [ContainerPortInfo]
490 , containerPorts :: [ContainerPortInfo]
495 , containerLabels :: [Label]
491 , containerLabels :: [Label]
496− , containerNetworks :: Networks
492+ , containerNetworks :: [Network]
497 , containerMounts :: [Mount]
493 , containerMounts :: [Mount]
498 } deriving (Show, Eq)
494 } deriving (Show, Eq)