On Tue, Jul 9, 2013 at 3:34 PM, Michele Tartara <mtart...@google.com> wrote:

> While running "gnt-node list", if a query to ConfD fails (especially
> because of permission problems) it used to just fail silently, with
> gnt-node
> showing question marks instead of data.
>
> With this patch, ConfD records the error in its log file, together with a
> message giving an indication of the reason.
>
> Fixes Issue 517.
>
> Signed-off-by: Michele Tartara <mtart...@google.com>
> ---
>  src/Ganeti/Query/Node.hs |   15 +++++++++++++++
>  1 file changed, 15 insertions(+)
>
> diff --git a/src/Ganeti/Query/Node.hs b/src/Ganeti/Query/Node.hs
> index 293ceb7..8e7c91d 100644
> --- a/src/Ganeti/Query/Node.hs
> +++ b/src/Ganeti/Query/Node.hs
> @@ -36,6 +36,7 @@ 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
> @@ -214,6 +215,19 @@ 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 [] = return ()
> +logRpcErrors (x:xs) = do
> +  let logOneRpcErr (_, Right _) = return ()
> +      logOneRpcErr (_, Left err) = do
> +        logError $ "Error in the RPC HTTP reply: " ++ show err
> +        return ()
> +  logOneRpcErr x
> +  logRpcErrors xs
> +
> +
>  -- | Collect live data from RPC query if enabled.
>  --
>  -- FIXME: Check which fields we actually need and possibly send empty
> @@ -233,6 +247,7 @@ collectLiveData True cfg nodes = do
>               Nothing -> (n : bn, gn, em)
>        (bnodes, gnodes, emap) = foldr step ([], [], []) nodes
>    rpcres <- executeRpcCall gnodes (RpcCallNodeInfo vgs hvs (Map.fromList
> emap))
> +  logRpcErrors rpcres
>    -- FIXME: The order of nodes in the result could be different from the
> input
>    return $ zip bnodes (repeat $ Left (RpcResultError "Broken
> configuration"))
>             ++ rpcres
> --
> 1.7.10.4
>
>

Also, interdiff removing an extra empty line:
diff --git a/src/Ganeti/Query/Node.hs b/src/Ganeti/Query/Node.hs
index 8e7c91d..fd51ffe 100644
--- a/src/Ganeti/Query/Node.hs
+++ b/src/Ganeti/Query/Node.hs
@@ -227,7 +227,6 @@ logRpcErrors (x:xs) = do
   logOneRpcErr x
   logRpcErrors xs

-
 -- | Collect live data from RPC query if enabled.
 --
 -- FIXME: Check which fields we actually need and possibly send empty

Thanks,
Michele

Reply via email to