@@ -246,11 +246,11 @@ data ContainerDetails = ContainerDetails {
246-- | Data type used for parsing the mount information from a container
246-- | Data type used for parsing the mount information from a container
248data Mount = Mount {
248data Mount = Mount {
249− mountName :: Text
249+ mountName :: Maybe Text
250 , mountSource :: FilePath
250 , mountSource :: FilePath
251 , mountDestination :: FilePath
251 , mountDestination :: FilePath
252− , mountDriver :: Text
252+ , mountDriver :: Maybe Text
253− , mountMode :: Maybe VolumePermission -- apparently this can be null
253+ -- , mountMode :: Maybe VolumePermission -- apparently this can be null
254 , mountRW :: Bool
254 , mountRW :: Bool
255 , mountPropogation :: Text
255 , mountPropogation :: Text
@@ -258,14 +258,14 @@ data Mount = Mount {
259instance FromJSON Mount where
259instance FromJSON Mount where
260 parseJSON (JSON.Object o) = do
260 parseJSON (JSON.Object o) = do
261− name <- o .: "Name"
261+ name <- o .:? "Name"
262 src <- o .: "Source"
262 src <- o .: "Source"
263 dest <- o .: "Destination"
263 dest <- o .: "Destination"
264− driver <- o .: "Driver"
264+ driver <- o .:? "Driver"
265− mode <- o .: "Mode"
265+ -- mode <- o .: "Mode"
266 rw <- o .: "RW"
266 rw <- o .: "RW"
267 prop <- o .: "Propagation"
267 prop <- o .: "Propagation"
268− return $ Mount name src dest driver mode rw prop
268+ return $ Mount name src dest driver rw prop
269 parseJSON _ = fail "Mount is not an object"
269 parseJSON _ = fail "Mount is not an object"
271-- | Data type used for parsing the container state from a list of
271-- | Data type used for parsing the container state from a list of
@@ -520,11 +520,11 @@ data Container = Container
521instance FromJSON Container where
521instance FromJSON Container where
522 parseJSON o@(JSON.Object v) =
522 parseJSON o@(JSON.Object v) =
523− Container <$> (parseJSON o)
523+ Container <$> parseJSON o
524 <*> (v .: "Names")
524 <*> (v .: "Names")
525 <*> (v .: "Image")
525 <*> (v .: "Image")
526− <*> (v .: "ImageID")
526+ <*> (v .: "ImageID") -- Doesn't exist anymore
527− <*> (v .: "Command")
527+ <*> (v .: "Command") -- Doesn't exist anymore
528 <*> (v .: "Created")
528 <*> (v .: "Created")
529 <*> (v .: "Status")
529 <*> (v .: "Status")
530 <*> (v .: "Ports")
530 <*> (v .: "Ports")
@@ -538,17 +538,17 @@ instance FromJSON Container where
538 parseJSON _ = fail "Container: Not a JSON object."
538 parseJSON _ = fail "Container: Not a JSON object."
540-- | Represents the status of the container life cycle.
540-- | Represents the status of the container life cycle.
541−data Status = Created | Restarting | Running | Paused | Exited | Dead
541+data Status = ContainerStatus T.Text
542 deriving (Eq, Show, Generic)
542 deriving (Eq, Show, Generic)
544instance FromJSON Status where
544instance FromJSON Status where
545− parseJSON (JSON.String "running") = return Running
545+ parseJSON (JSON.String s) = return $ ContainerStatus s
546− parseJSON (JSON.String "created") = return Created -- Note: Guessing on the string values of these.
546+ -- parseJSON (JSON.String "Created") = return Created
547− parseJSON (JSON.String "restarting") = return Restarting
547+ -- parseJSON (JSON.String "Restarting") = return Restarting
548− parseJSON (JSON.String "paused") = return Paused
548+ -- parseJSON (JSON.String "Paused") = return Paused
549− parseJSON (JSON.String "exited") = return Exited
549+ -- parseJSON (JSON.String "Exited") = parseExited s
550− parseJSON (JSON.String "dead") = return Dead
550+ -- parseJSON (JSON.String "Dead") = return Dead
551− parseJSON _ = fail "Unknown Status"
551+ parseJSON _ = fail "Failed to parse Status. Unknown Status."
553-- | Alias for representing a RepoDigest. We could newtype this and add
553-- | Alias for representing a RepoDigest. We could newtype this and add
554-- some validation.
554-- some validation.
@@ -788,6 +788,8 @@ instance ToJSON VolumePermission where
788instance FromJSON VolumePermission where
788instance FromJSON VolumePermission where
789 parseJSON "rw" = return ReadWrite
789 parseJSON "rw" = return ReadWrite
790 parseJSON "ro" = return ReadOnly
790 parseJSON "ro" = return ReadOnly
791+ parseJSON "RW" = return ReadWrite
792+ parseJSON "RO" = return ReadOnly
791 parseJSON _ = fail "Failed to parse VolumePermission"
793 parseJSON _ = fail "Failed to parse VolumePermission"
793-- | Used for marking a directory in the container as "exposed" hence
795-- | Used for marking a directory in the container as "exposed" hence