diff --git a/Ganeti/HTools/Rapi.hs b/Ganeti/HTools/Rapi.hs index 42d4afe24e56590995176aec2e5ab8fb875f09ef..183291cd21053ca2efb3624c0de2f5d08e43f595 100644 --- a/Ganeti/HTools/Rapi.hs +++ b/Ganeti/HTools/Rapi.hs @@ -65,11 +65,13 @@ getInstances :: NameAssoc -> String -> Result [(String, Instance.Instance)] getInstances ktn body = - loadJSArray body >>= mapM (parseInstance ktn . fromJSObject) + loadJSArray "Parsing instance data" body >>= + mapM (parseInstance ktn . fromJSObject) -- | Parse a node list in JSON format. getNodes :: String -> Result [(String, Node.Node)] -getNodes body = loadJSArray body >>= mapM (parseNode . fromJSObject) +getNodes body = loadJSArray "Parsing node data" body >>= + mapM (parseNode . fromJSObject) -- | Construct an instance from a JSON object. parseInstance :: [(String, Ndx)] diff --git a/Ganeti/HTools/Utils.hs b/Ganeti/HTools/Utils.hs index 736fcd85d8a0fb5034d6c38f0227e32bb21c163e..cf69dae3ec37921c1d274e7c680cc8d93596e8bd 100644 --- a/Ganeti/HTools/Utils.hs +++ b/Ganeti/HTools/Utils.hs @@ -112,8 +112,11 @@ readEitherString v = _ -> fail "Wrong JSON type" -- | Converts a JSON message into an array of JSON objects. -loadJSArray :: (Monad m) => String -> m [J.JSObject J.JSValue] -loadJSArray = fromJResult . J.decodeStrict +loadJSArray :: (Monad m) + => String -- ^ Operation description (for error reporting) + -> String -- ^ Input message + -> m [J.JSObject J.JSValue] +loadJSArray s = annotateJResult s . J.decodeStrict -- | Reads a the value of a key in a JSON object. fromObj :: (J.JSON a, Monad m) => String -> [(String, J.JSValue)] -> m a