, dcVersion
, dcFormatVersion
, dcCategory
+ , dcKind
) where
dcCategory :: Maybe DCCategory
dcCategory = Just DCStorage
+-- | The kind of this data collector.
+dcKind :: DCKind
+dcKind = DCKStatus
+
-- * Command line options
options :: IO [OptType]
show (Prelude.take defaultCharNum $ unpack unparsedText) ++ "\n"
++ show contexts ++ "\n" ++ errorMessage
A.Done _ drbdStatus -> return $ J.showJSON drbdStatus
- buildReport dcName dcVersion dcFormatVersion dcCategory jsonData
+ buildReport dcName dcVersion dcFormatVersion dcCategory dcKind jsonData
-- | Main function.
main :: Options -> [String] -> IO ()
module Ganeti.DataCollectors.Types
( DCReport(..)
, DCCategory(..)
+ , DCKind(..)
, DCVersion(..)
, buildReport
) where
readJSON =
error "JSON read instance not implemented for type DCCategory"
+-- | The type representing the kind of the collector.
+data DCKind = DCKPerf -- ^ Performance reporting collector
+ | DCKStatus -- ^ Status reporting collector
+ deriving (Show, Eq)
+
+-- | The JSON instance for CollectorKind.
+instance JSON DCKind where
+ showJSON DCKPerf = showJSON (0 :: Int)
+ showJSON DCKStatus = showJSON (1 :: Int)
+ readJSON = error "JSON read instance not implemented for type DCKind"
+
-- | Type representing the version number of a data collector.
data DCVersion = DCVerBuiltin | DCVersion String deriving (Show, Eq)
, simpleField "timestamp" [t| Integer |]
, optionalNullSerField $
simpleField "category" [t| DCCategory |]
+ , simpleField "kind" [t| DCKind |]
, simpleField "data" [t| JSValue |]
])
-- timestamp (rounded up to seconds).
-- If the version is not specified, it will be set to the value indicating
-- a builtin collector.
-buildReport :: String -> DCVersion -> Int -> Maybe DCCategory -> JSValue
- -> IO DCReport
-buildReport name version format_version category jsonData = do
+buildReport :: String -> DCVersion -> Int -> Maybe DCCategory -> DCKind
+ -> JSValue -> IO DCReport
+buildReport name version format_version category kind jsonData = do
now <- getCurrentTime
let timestamp = now * 1000000000 :: Integer
- return $ DCReport name version format_version timestamp category jsonData
+ return $
+ DCReport name version format_version timestamp category kind
+ jsonData