, dcName
, dcVersion
, dcFormatVersion
+ , dcCategory
) where
dcFormatVersion :: Int
dcFormatVersion = 1
+-- | The category of this data collector.
+dcCategory :: Maybe DCCategory
+dcCategory = Just DCStorage
+
-- * 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 jsonData
+ buildReport dcName dcVersion dcFormatVersion dcCategory jsonData
-- | Main function.
main :: Options -> [String] -> IO ()
module Ganeti.DataCollectors.Types
( DCReport(..)
+ , DCCategory(..)
, DCVersion(..)
, buildReport
) where
import Ganeti.THH
import Ganeti.Utils (getCurrentTime)
+-- | The possible classes a data collector can belong to.
+data DCCategory = DCInstance | DCStorage | DCDaemon | DCHypervisor
+ deriving (Show, Eq)
+
+-- | The JSON instance for DCCategory.
+instance JSON DCCategory where
+ showJSON = showJSON . show
+ readJSON =
+ error "JSON read instance not implemented for type DCCategory"
+
-- | Type representing the version number of a data collector.
data DCVersion = DCVerBuiltin | DCVersion String deriving (Show, Eq)
, simpleField "version" [t| DCVersion |]
, simpleField "format_version" [t| Int |]
, simpleField "timestamp" [t| Integer |]
+ , optionalNullSerField $
+ simpleField "category" [t| DCCategory |]
, 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 -> JSValue -> IO DCReport
-buildReport name version format_version jsonData = do
+buildReport :: String -> DCVersion -> Int -> Maybe DCCategory -> JSValue
+ -> IO DCReport
+buildReport name version format_version category jsonData = do
now <- getCurrentTime
let timestamp = now * 1000000000 :: Integer
- return $ DCReport name version format_version timestamp jsonData
+ return $ DCReport name version format_version timestamp category jsonData