packages feed

wolf 0.3.12 → 0.3.13

raw patch · 6 files changed

+122/−3 lines, 6 filesdep ~basenew-component:exe:wolf-counter

Dependency ranges changed: base

Files

+ main/counter.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE DeriveGeneric     #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE OverloadedStrings #-}++-- | Run actor.+--+import Network.AWS.Wolf+import Options.Generic++-- | Args+--+-- Program arguments.+--+data Args = Args+  { config :: FilePath+    -- ^ Configuration file.+  , plan   :: FilePath+    -- ^ Plan file to count on.+  } deriving (Show, Generic)++instance ParseRecord Args++-- | Run counter.+--+main :: IO ()+main = do+  args <- getRecord "Counter"+  countMain+    (config args)+    (plan args)
src/Network/AWS/Wolf.hs view
@@ -5,5 +5,6 @@   ) where  import Network.AWS.Wolf.Act     as Exports+import Network.AWS.Wolf.Count   as Exports import Network.AWS.Wolf.Decide  as Exports import Network.AWS.Wolf.Prelude as Exports
+ src/Network/AWS/Wolf/Count.hs view
@@ -0,0 +1,59 @@+{-# LANGUAGE FlexibleContexts  #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE OverloadedStrings #-}++-- | SWF Counter logic.+--+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++-- | Count pending activities.+--+countActivity :: MonadAmazon c m => Task -> m ()+countActivity t = do+  traceInfo "count-act" [ "task" .= t ]+  let queue = t ^. tQueue+  runAmazonWorkCtx queue $ do+    c <- countActivities+    traceInfo "count-acitivities" [ "task" .= t, "count" .= c ]+    statsGauge "wolf.act.queue.depth" c [ "queue" =. queue ]++-- | Count open workflows.+--+countDecision :: MonadAmazon 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 ]++-- | Counter logic - count all the queues.+--+count :: MonadConf c m => Plan -> m ()+count p =+  preConfCtx [ "label" .= LabelCount ] $+    runAmazonCtx $ do+      countDecision (p ^. pStart)+      mapM_ countActivity (p ^. pTasks)++-- | Run counter from main with config file.+--+countMain :: MonadControl m => FilePath -> FilePath -> m ()+countMain cf pf =+  runResourceT $+    runCtx $+      runStatsCtx $ do+        conf <- readYaml cf+        runConfCtx conf $ do+          plans <- readYaml pf+          mapM_ count (plans :: [Plan])
src/Network/AWS/Wolf/SWF.hs view
@@ -6,6 +6,8 @@ module Network.AWS.Wolf.SWF   ( pollActivity   , pollDecision+  , countActivities+  , countDecisions   , completeActivity   , failActivity   , completeDecision@@ -46,6 +48,24 @@     , reverse $ concatMap (view pfdtrsEvents) pfdtrs     ) +-- | Count activities.+--+countActivities :: MonadAmazonWork c m => m Int+countActivities = do+  d   <- view cDomain <$> view ccConf+  tl  <- taskList <$> view awcQueue+  ptc <- send (countPendingActivityTasks d tl)+  return $ fromIntegral (ptc ^. ptcCount)++-- | Count decisions.+--+countDecisions :: MonadAmazonWork c m => m Int+countDecisions = do+  d   <- view cDomain <$> view ccConf+  tl  <- taskList <$> view awcQueue+  ptc <- send (countPendingDecisionTasks d tl)+  return $ fromIntegral (ptc ^. ptcCount)+ -- | Successful job completion. -- completeActivity :: MonadAmazon c m => Text -> Maybe Text -> m ()@@ -96,5 +116,3 @@   where     fweda =       failWorkflowExecutionDecisionAttributes--
src/Network/AWS/Wolf/Types/Sum.hs view
@@ -16,6 +16,7 @@   = LabelWolf   | LabelAct   | LabelDecide+  | LabelCount   deriving (Show, Eq)  $(deriveJSON spinalOptions ''LabelType)
wolf.cabal view
@@ -1,5 +1,5 @@ name:                  wolf-version:               0.3.12+version:               0.3.13 synopsis:              Amazon Simple Workflow Service Wrapper. description:           Wolf is a wrapper around Amazon Simple Workflow Service. homepage:              https://github.com/swift-nav/wolf@@ -19,6 +19,7 @@ library   exposed-modules:     Network.AWS.Wolf   other-modules:       Network.AWS.Wolf.Act+                     , Network.AWS.Wolf.Count                      , Network.AWS.Wolf.Ctx                      , Network.AWS.Wolf.Decide                      , Network.AWS.Wolf.File@@ -70,6 +71,15 @@ executable wolf-decider   hs-source-dirs:      main   main-is:             decider.hs+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wall+  build-depends:       base+                     , wolf+                     , optparse-generic+  default-language:    Haskell2010++executable wolf-counter+  hs-source-dirs:      main+  main-is:             counter.hs   ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wall   build-depends:       base                      , wolf