Commit 54c7dff7 authored by Michele Tartara's avatar Michele Tartara
Browse files

Add Kind data type for data collectors



Also, add it to the DRBD data collector, and export it from there.
Signed-off-by: default avatarMichele Tartara <mtartara@google.com>
Reviewed-by: default avatarBernardo Dal Seno <bdalseno@google.com>
parent f0e4b2a4
......@@ -31,6 +31,7 @@ module Ganeti.DataCollectors.Drbd
, dcVersion
, dcFormatVersion
, dcCategory
, dcKind
) where
......@@ -82,6 +83,10 @@ dcFormatVersion = 1
dcCategory :: Maybe DCCategory
dcCategory = Just DCStorage
-- | The kind of this data collector.
dcKind :: DCKind
dcKind = DCKStatus
-- * Command line options
options :: IO [OptType]
......@@ -130,7 +135,7 @@ buildDRBDReport statusFile pairingFile = do
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 ()
......
......@@ -28,6 +28,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
module Ganeti.DataCollectors.Types
( DCReport(..)
, DCCategory(..)
, DCKind(..)
, DCVersion(..)
, buildReport
) where
......@@ -48,6 +49,17 @@ instance JSON DCCategory 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)
......@@ -65,6 +77,7 @@ $(buildObject "DCReport" "dcReport"
, simpleField "timestamp" [t| Integer |]
, optionalNullSerField $
simpleField "category" [t| DCCategory |]
, simpleField "kind" [t| DCKind |]
, simpleField "data" [t| JSValue |]
])
......@@ -72,9 +85,11 @@ $(buildObject "DCReport" "dcReport"
-- 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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment