On Mon, Apr 29, 2013 at 10:54 AM, Helga Velroyen <[email protected]> wrote:

> Hi!
>
> On Wed, Apr 24, 2013 at 1:03 PM, Michele Tartara <[email protected]>wrote:
>
>> Implement the handler for outputting the list of collectors
>> (name, category, kind) in JSON format.
>>
>> Signed-off-by: Michele Tartara <[email protected]>
>> ---
>>  src/Ganeti/Monitoring/Server.hs |   29 +++++++++++++++++++++++++++--
>>  1 file changed, 27 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/Ganeti/Monitoring/Server.hs
>> b/src/Ganeti/Monitoring/Server.hs
>> index fc9174e..8c080c7 100644
>> --- a/src/Ganeti/Monitoring/Server.hs
>> +++ b/src/Ganeti/Monitoring/Server.hs
>> @@ -35,10 +35,12 @@ import Control.Applicative
>>  import Control.Monad
>>  import Snap.Core
>>  import Snap.Http.Server
>> -import Data.ByteString.Char8
>> +import Data.ByteString.Char8 hiding (map)
>>  import qualified Text.JSON as J
>>
>>  import Ganeti.Daemon
>> +import qualified Ganeti.DataCollectors.Drbd as Drbd
>> +import Ganeti.DataCollectors.Types
>>  import qualified Ganeti.Constants as C
>>
>>  -- * Types and constants definitions
>> @@ -53,6 +55,19 @@ type PrepResult = Config Snap ()
>>  latestAPIVersion :: Int
>>  latestAPIVersion = 1
>>
>> +data DataCollector = DataCollector
>> +  { dName     :: String
>> +  , dCategory :: Maybe DCCategory
>> +  , dKind     :: DCKind
>> +  }
>>
>
> Please add some comment what is captured by "category" and "kind" (maybe
> with examples) since those variable names are rather general.
>

It's all already described in the design doc, but I'll add a short recall
here in a comment.


>
>> +
>> +-- | The list of available builtin data collectors.
>> +collectors :: [DataCollector]
>> +collectors =
>> +  [ DataCollector Drbd.dcName Drbd.dcCategory Drbd.dcKind
>> +  ]
>> +
>> +
>>  -- * Configuration handling
>>
>>  -- | The default configuration for the HTTP server.
>> @@ -93,10 +108,20 @@ version1Api =
>>         , ("report", reportHandler)
>>         ]
>>
>> +-- | Get the JSON representation of a data collector to be used in the
>> collector
>> +-- list.
>> +dcListItem :: DataCollector -> J.JSValue
>> +dcListItem dc =
>> +  J.JSArray
>> +    [ J.showJSON $ dName dc
>> +    , maybe J.JSNull J.showJSON $ dCategory dc
>> +    , J.showJSON $ dKind dc
>> +    ]
>> +
>>  -- | Handler for returning lists.
>>  listHandler :: Snap ()
>>  listHandler =
>> -  dir "collectors" $ writeText "TODO: return the list of collectors"
>> +  dir "collectors" . writeBS . pack . J.encode $ map dcListItem
>> collectors
>>
>>  -- | Handler for returning data collector reports.
>>  reportHandler :: Snap ()
>> --
>> 1.7.10.4
>>
>>
> LGTM, thanks.
>
> Cheers,
> Helga
>

Thanks,
Michele

Reply via email to