Factor out the logRpcErrors function
authorMichele Tartara <mtartara@google.com>
Wed, 10 Jul 2013 14:39:33 +0000 (14:39 +0000)
committerMichele Tartara <mtartara@google.com>
Thu, 11 Jul 2013 11:41:44 +0000 (13:41 +0200)
This function can be useful to multiple RPC calls, therefore it is moved
to the file containing the common RPC functions.

Also, it is made more generic by changing its signature.

Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

src/Ganeti/Query/Node.hs
src/Ganeti/Rpc.hs

index 36b5000..f8a9d90 100644 (file)
@@ -36,7 +36,6 @@ import qualified Data.Map as Map
 import qualified Text.JSON as J
 
 import Ganeti.Config
-import Ganeti.Logging
 import Ganeti.Objects
 import Ganeti.JSON
 import Ganeti.Rpc
@@ -215,15 +214,6 @@ fieldsMap :: FieldMap Node Runtime
 fieldsMap =
   Map.fromList $ map (\v@(f, _, _) -> (fdefName f, v)) nodeFields
 
--- | Scan the list of results produced by executeRpcCall and log all the RPC
--- errors.
-logRpcErrors :: [(Node, Runtime)] -> IO ()
-logRpcErrors allElems =
-  let logOneRpcErr (_, Right _) = return ()
-      logOneRpcErr (_, Left err) =
-        logError $ "Error in the RPC HTTP reply: " ++ show err
-  in mapM_ logOneRpcErr allElems
-
 -- | Collect live data from RPC query if enabled.
 --
 -- FIXME: Check which fields we actually need and possibly send empty
index 73d22ca..5c3c8bb 100644 (file)
@@ -33,6 +33,7 @@ module Ganeti.Rpc
   , ERpcError
   , explainRpcError
   , executeRpcCall
+  , logRpcErrors
 
   , rpcCallName
   , rpcCallTimeout
@@ -83,6 +84,7 @@ import qualified Ganeti.Path as P
 
 import Ganeti.BasicTypes
 import qualified Ganeti.Constants as C
+import Ganeti.Logging
 import Ganeti.Objects
 import Ganeti.THH
 import Ganeti.Types
@@ -194,6 +196,15 @@ parseHttpResponse call res =
        J.JSString msg -> Left $ RpcResultError (J.fromJSString msg)
        _ -> Left . JsonDecodeError $ show (pp_value jerr)
 
+-- | Scan the list of results produced by executeRpcCall and log all the RPC
+-- errors.
+logRpcErrors :: [(a, ERpcError b)] -> IO ()
+logRpcErrors allElems =
+  let logOneRpcErr (_, Right _) = return ()
+      logOneRpcErr (_, Left err) =
+        logError $ "Error in the RPC HTTP reply: " ++ show err
+  in mapM_ logOneRpcErr allElems
+
 -- | Execute RPC call for many nodes in parallel.
 executeRpcCall :: (Rpc a b) => [Node] -> a -> IO [(Node, ERpcError b)]
 executeRpcCall nodes call = do