Currently, we list the entire object in error messages. But for large
objects (e.g. an IAllocator message), this makes the output
unreadable, as the elements are containers themselves.

To simplify the reporting, we only list the keys, as this is more
relevent than the values.
---
 Ganeti/HTools/Utils.hs |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/Ganeti/HTools/Utils.hs b/Ganeti/HTools/Utils.hs
index 1e58bc3..5611dbc 100644
--- a/Ganeti/HTools/Utils.hs
+++ b/Ganeti/HTools/Utils.hs
@@ -130,7 +130,8 @@ loadJSArray s = fromJResult s . J.decodeStrict
 fromObj :: (J.JSON a, Monad m) => [(String, J.JSValue)] -> String -> m a
 fromObj o k =
     case lookup k o of
-      Nothing -> fail $ printf "key '%s' not found in %s" k (show o)
+      Nothing -> fail $ printf "key '%s' not found, object contains only %s"
+                 k (show (map fst o))
       Just val -> fromKeyValue k val
 
 -- | Reads the value of an optional key in a JSON object.
-- 
1.7.3.1

Reply via email to