on master help sign in
work on HostConfig FromJSON instance
commit1ae3e9525c05c29cba3dd926610a72d763c9a81f authorJames Parker <dev@jamesparker.me> dateThu 28 Jul 2016, 15:45 (10 years ago) parentb2b575e
1 file changed+48−26
src/Docker/Types.hs+48−26
src/Docker/Types.hs+48−26
@@ -571,7 +571,7 @@ defaultHostConfig = HostConfig {
571571 , dnsSearch=[]
572572 , extraHosts=[]
573573 , ipcMode=Nothing
574− , links=Nothing
574+ , links=[]
575575 , oomScoreAdj=Nothing
576576 , privileged=False
577577 , publishAllPorts=False
@@ -933,7 +933,7 @@ data HostConfig = HostConfig
933933 , extraHosts :: [Text]
934934 -- , groupAdd :: [Integer] -- 1.24: Missing from inspecting container details... Going to omit for now.
935935 , ipcMode :: Maybe Text -- 1.24: Only in inspect, not create
936− , links :: Maybe [Link] -- Note: Expand JSON instances? Null is []?
936+ , links :: [Link]
937937 , oomScoreAdj :: Maybe Integer
938938 -- , pidMode :: Text -- 1.24: Don't see pidMode, just pidsLimit
939939 , privileged :: Bool
@@ -948,35 +948,57 @@ data HostConfig = HostConfig
948948 } deriving (Eq, Show, Generic)
949949
950950instance FromJSON HostConfig where
951− parseJSON v@(JSON.Object o) = HostConfig <$>
952− <*>
951+ parseJSON v@(JSON.Object o) = HostConfig
952+ <$> o .: "Binds"
953+ <*> o .: "ContainerIDFile"
954+ <*> o .: "LogConfig"
955+ <*> o .: "NetworkMode"
956+ <*> o .: "PortBindings"
957+ <*> o .: "RestartPolicy"
958+ <*> o .: "VolumeDriver"
959+ <*> o .: "VolumesFrom"
960+ <*> o .: "CapAdd"
961+ <*> o .: "CapDrop"
962+ <*> o .: "Dns"
963+ <*> o .: "DnsOptions"
964+ <*> o .: "DnsSearch"
965+ <*> o .: "ExtraHosts"
966+ <*> o .: "IpcMode"
967+ <*> o .:? "Links" .!= []
968+ <*> o .: "OomScoreAdj"
969+ <*> o .: "Privileged"
970+ <*> o .: "PublishAllPorts"
971+ <*> o .: "ReadonlyRootfs"
972+ <*> o .: "SecurityOpt"
973+ <*> o .: "ShmSize"
953974 <*> parseJSON v
975+ parseJSON _ = fail "HostConfig is not an object."
954976
955977instance ToJSON HostConfig where
956978 toJSON HostConfig{..} =
957979 let arr = [
958− "binds" .= binds
959− , "containerIDFile" .= containerIDFile
960− , "logConfig" .= logConfig
961− , "networkMode" .= networkMode
962− , "portBindings" .= portBindings
963− , "restartPolicy" .= restartPolicy
964− , "volumeDriver" .= volumeDriver
965− , "volumesFrom" .= volumesFrom
966− , "capAdd" .= capAdd
967− , "capDrop" .= capDrop
968− , "dns" .= dns
969− , "dnsOptions" .= dnsOptions
970− , "dnsSearch" .= dnsSearch
971− , "extraHosts" .= extraHosts
972− , "ipcMode" .= ipcMode
973− , "links" .= links
974− , "oomScoreAdj" .= oomScoreAdj
975− , "privileged" .= privileged
976− , "publishAllPorts" .= publishAllPorts
977− , "readonlyRootfs" .= readonlyRootfs
978− , "securityOpt" .= securityOpt
979− , "shmSize" .= shmSize
980+ "Binds" .= binds
981+ , "ContainerIDFile" .= containerIDFile
982+ , "LogConfig" .= logConfig
983+ , "NetworkMode" .= networkMode
984+ , "PortBindings" .= portBindings
985+ , "RestartPolicy" .= restartPolicy
986+ , "VolumeDriver" .= volumeDriver
987+ , "VolumesFrom" .= volumesFrom
988+ , "CapAdd" .= capAdd
989+ , "CapDrop" .= capDrop
990+ , "Dns" .= dns
991+ , "DnsOptions" .= dnsOptions
992+ , "DnsSearch" .= dnsSearch
993+ , "ExtraHosts" .= extraHosts
994+ , "IpcMode" .= ipcMode
995+ , "Links" .= links
996+ , "OomScoreAdj" .= oomScoreAdj
997+ , "Privileged" .= privileged
998+ , "PublishAllPorts" .= publishAllPorts
999+ , "ReadonlyRootfs" .= readonlyRootfs
1000+ , "SecurityOpt" .= securityOpt
1001+ , "ShmSize" .= shmSize
9801002 ]
9811003 in
9821004 object $ arr <> ( resourcesArr resources)