on master help sign in
Refactors Networks
2207d98Deni Bertovic
src/Docker/Client/Types.hs+7−11
@@ -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"
421
420
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)
425
424
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
429−
430 where
427 where
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
436−
437 parseJSON _ = fail "Networks is not an object"
433 parseJSON _ = fail "Networks is not an object"
438
434
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]
459 }
455 }
460 deriving (Eq, Show)
456 deriving (Eq, Show)
461
457
@@ -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)
499
495