diff --git a/htools/Ganeti/Rpc.hs b/htools/Ganeti/Rpc.hs index 7b41e45cedef74e02b6c282d0edb4109a6c81fbc..625c7b67f3d335607a27a96e20a49d845e161efa 100644 --- a/htools/Ganeti/Rpc.hs +++ b/htools/Ganeti/Rpc.hs @@ -198,8 +198,9 @@ prepareHttpRequest node call | otherwise = Left $ OfflineNodeError node -- | Parse a result based on the received HTTP response. -rpcResultParse :: (Rpc a b) => a -> String -> ERpcError b -rpcResultParse call res = +parseHttpResponse :: (Rpc a b) => a -> ERpcError String -> ERpcError b +parseHttpResponse _ (Left err) = Left err +parseHttpResponse call (Right res) = case J.decode res of J.Error val -> Left $ JsonDecodeError val J.Ok (True, res'') -> rpcResultFill call res'' @@ -207,11 +208,6 @@ rpcResultParse call res = J.JSString msg -> Left $ RpcResultError (J.fromJSString msg) _ -> Left . JsonDecodeError $ show (pp_value jerr) --- | Parse the response or propagate the error. -parseHttpResponse :: (Rpc a b) => a -> ERpcError String -> ERpcError b -parseHttpResponse _ (Left err) = Left err -parseHttpResponse call (Right response) = rpcResultParse call response - -- | Execute RPC call for a sigle node. executeSingleRpcCall :: (Rpc a b) => Node -> a -> IO (Node, ERpcError b) executeSingleRpcCall node call = do