{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module Network.AWS.Wolf.Count
( count
, countMain
) where
import Network.AWS.Wolf.Ctx
import Network.AWS.Wolf.File
import Network.AWS.Wolf.Prelude
import Network.AWS.Wolf.SWF
import Network.AWS.Wolf.Types
countActivity :: MonadConf c m => Task -> m ()
countActivity t = do
traceInfo "count-act" [ "task" .= t ]
let queue = t ^. tQueue
runAmazonWorkCtx queue $ do
c <- countActivities
traceInfo "count-activities" [ "task" .= t, "count" .= c ]
statsGauge "wolf.act.queue.depth" c [ "queue" =. queue ]
countDecision :: MonadConf c m => Task -> m ()
countDecision t = do
traceInfo "count-decision" [ "task" .= t ]
let queue = t ^. tQueue
runAmazonWorkCtx queue $ do
c <- countDecisions
traceInfo "count-decisions" [ "task" .= t, "count" .= c ]
statsGauge "wolf.decide.queue.depth" c [ "queue" =. queue ]
count :: MonadConf c m => Plan -> m ()
count p =
preConfCtx [ "label" .= LabelCount ] $ do
countDecision (p ^. pStart)
mapM_ countActivity (p ^. pTasks)
countMain :: MonadControl m => FilePath -> FilePath -> Maybe Text -> m ()
countMain cf pf domain =
runCtx $ runTop $ do
conf <- readYaml cf
let conf' = override cDomain domain conf
runConfCtx conf' $ do
plans <- readYaml pf
mapM_ count (plans :: [Plan])