git.iko.soy/typeable/bloodhound
on master help sign in
Turns out some disk fields are not always present
commit172be51b84ddb812eb5ee6e4f27e74a3af18119a authorMichael Xavier <michael@michaelxavier.net> dateWed 14 Sep 2016, 19:25 (10 years ago) parentdf27a37
1 file changed+47−39
src/Database/Bloodhound/Types.hs+47−39
src/Database/Bloodhound/Types.hs+47−39
@@ -3927,14 +3927,14 @@ data NodeFSStats = NodeFSStats {
39273927 } deriving (Eq, Show, Generic, Typeable)
39283928
39293929data NodeDataPathStats = NodeDataPathStats {
3930− nodeDataPathDiskServiceTime :: Double
3931− , nodeDataPathDiskQueue :: Double
3932− , nodeDataPathIOSize :: Bytes
3933− , nodeDataPathWriteSize :: Bytes
3934− , nodeDataPathReadSize :: Bytes
3935− , nodeDataPathIOOps :: Int
3936− , nodeDataPathWrites :: Int
3937− , nodeDataPathReads :: Int
3930+ nodeDataPathDiskServiceTime :: Maybe Double
3931+ , nodeDataPathDiskQueue :: Maybe Double
3932+ , nodeDataPathIOSize :: Maybe Bytes
3933+ , nodeDataPathWriteSize :: Maybe Bytes
3934+ , nodeDataPathReadSize :: Maybe Bytes
3935+ , nodeDataPathIOOps :: Maybe Int
3936+ , nodeDataPathWrites :: Maybe Int
3937+ , nodeDataPathReads :: Maybe Int
39383938 , nodeDataPathAvailable :: Bytes
39393939 , nodeDataPathFree :: Bytes
39403940 , nodeDataPathTotal :: Bytes
@@ -3945,14 +3945,14 @@ data NodeDataPathStats = NodeDataPathStats {
39453945 } deriving (Eq, Show, Generic, Typeable)
39463946
39473947data NodeFSTotalStats = NodeFSTotalStats {
3948− nodeFSTotalDiskServiceTime :: Double
3949− , nodeFSTotalDiskQueue :: Double
3950− , nodeFSTotalIOSize :: Bytes
3951− , nodeFSTotalWriteSize :: Bytes
3952− , nodeFSTotalReadSize :: Bytes
3953− , nodeFSTotalIOOps :: Int
3954− , nodeFSTotalWrites :: Int
3955− , nodeFSTotalReads :: Int
3948+ nodeFSTotalDiskServiceTime :: Maybe Double
3949+ , nodeFSTotalDiskQueue :: Maybe Double
3950+ , nodeFSTotalIOSize :: Maybe Bytes
3951+ , nodeFSTotalWriteSize :: Maybe Bytes
3952+ , nodeFSTotalReadSize :: Maybe Bytes
3953+ , nodeFSTotalIOOps :: Maybe Int
3954+ , nodeFSTotalWrites :: Maybe Int
3955+ , nodeFSTotalReads :: Maybe Int
39563956 , nodeFSTotalAvailable :: Bytes
39573957 , nodeFSTotalFree :: Bytes
39583958 , nodeFSTotalTotal :: Bytes
@@ -4711,33 +4711,41 @@ instance FromJSON NodeFSStats where
47114711instance FromJSON NodeDataPathStats where
47124712 parseJSON = withObject "NodeDataPathStats" parse
47134713 where
4714− parse o = NodeDataPathStats <$> (parseJSON . unStringlyTypeJSON =<< o .: "disk_service_time")
4715− <*> (parseJSON . unStringlyTypeJSON =<< o .: "disk_queue")
4716− <*> o .: "disk_io_size_in_bytes"
4717− <*> o .: "disk_write_size_in_bytes"
4718− <*> o .: "disk_read_size_in_bytes"
4719− <*> o .: "disk_io_op"
4720− <*> o .: "disk_writes"
4721− <*> o .: "disk_reads"
4722− <*> o .: "available_in_bytes"
4723− <*> o .: "free_in_bytes"
4724− <*> o .: "total_in_bytes"
4725− <*> o .: "type"
4726− <*> o .: "dev"
4727− <*> o .: "mount"
4728− <*> o .: "path"
4714+ parse o =
4715+ NodeDataPathStats <$> (fmap unStringlyTypedDouble <$> o .:? "disk_service_time")
4716+ <*> (fmap unStringlyTypedDouble <$> o .:? "disk_queue")
4717+ <*> o .:? "disk_io_size_in_bytes"
4718+ <*> o .:? "disk_write_size_in_bytes"
4719+ <*> o .:? "disk_read_size_in_bytes"
4720+ <*> o .:? "disk_io_op"
4721+ <*> o .:? "disk_writes"
4722+ <*> o .:? "disk_reads"
4723+ <*> o .: "available_in_bytes"
4724+ <*> o .: "free_in_bytes"
4725+ <*> o .: "total_in_bytes"
4726+ <*> o .: "type"
4727+ <*> o .: "dev"
4728+ <*> o .: "mount"
4729+ <*> o .: "path"
4730+
4731+newtype StringlyTypedDouble = StringlyTypedDouble { unStringlyTypedDouble :: Double }
4732+
4733+
4734+instance FromJSON StringlyTypedDouble where
4735+ parseJSON = fmap StringlyTypedDouble . parseJSON . unStringlyTypeJSON
4736+
47294737
47304738instance FromJSON NodeFSTotalStats where
47314739 parseJSON = withObject "NodeFSTotalStats" parse
47324740 where
4733− parse o = NodeFSTotalStats <$> (parseJSON . unStringlyTypeJSON =<< o .: "disk_service_time")
4734− <*> (parseJSON . unStringlyTypeJSON =<< o .: "disk_queue")
4735− <*> o .: "disk_io_size_in_bytes"
4736− <*> o .: "disk_write_size_in_bytes"
4737− <*> o .: "disk_read_size_in_bytes"
4738− <*> o .: "disk_io_op"
4739− <*> o .: "disk_writes"
4740− <*> o .: "disk_reads"
4741+ parse o = NodeFSTotalStats <$> (fmap unStringlyTypedDouble <$> o .:? "disk_service_time")
4742+ <*> (fmap unStringlyTypedDouble <$> o .:? "disk_queue")
4743+ <*> o .:? "disk_io_size_in_bytes"
4744+ <*> o .:? "disk_write_size_in_bytes"
4745+ <*> o .:? "disk_read_size_in_bytes"
4746+ <*> o .:? "disk_io_op"
4747+ <*> o .:? "disk_writes"
4748+ <*> o .:? "disk_reads"
47414749 <*> o .: "available_in_bytes"
47424750 <*> o .: "free_in_bytes"
47434751 <*> o .: "total_in_bytes"