diff --git a/Ganeti/HTools/Luxi.hs b/Ganeti/HTools/Luxi.hs index 1c2fae431aee363c145f33ca5ee90527ae4de14c..4463683bafd295b2c52e61cbff82947205d0b965 100644 --- a/Ganeti/HTools/Luxi.hs +++ b/Ganeti/HTools/Luxi.hs @@ -70,7 +70,7 @@ queryInstancesMsg = let nnames = JSArray [] fnames = ["name", "disk_usage", "be/memory", "be/vcpus", - "status", "pnode", "snodes", "tags"] + "status", "pnode", "snodes", "tags", "oper_ram"] fields = JSArray $ map (JSString . toJSString) fnames use_locking = JSBool False in JSArray [nnames, fields, use_locking] @@ -101,11 +101,13 @@ parseInstance :: [(String, Ndx)] -> JSValue -> Result (String, Instance.Instance) parseInstance ktn (JSArray [ name, disk, mem, vcpus - , status, pnode, snodes, tags ]) = do + , status, pnode, snodes, tags, oram ]) = do xname <- annotateResult "Parsing new instance" (fromJVal name) let convert v = annotateResult ("Instance '" ++ xname ++ "'") (fromJVal v) xdisk <- convert disk - xmem <- convert mem + xmem <- (case oram of + JSRational _ _ -> convert oram + _ -> convert mem) xvcpus <- convert vcpus xpnode <- convert pnode >>= lookupNode ktn xname xsnodes <- convert snodes::Result [JSString] diff --git a/Ganeti/HTools/Rapi.hs b/Ganeti/HTools/Rapi.hs index 8544723e4bc7679ca55f3218df61b06fce23313a..623baeb5bc4d0a16114c07a6551b2270ebabef73 100644 --- a/Ganeti/HTools/Rapi.hs +++ b/Ganeti/HTools/Rapi.hs @@ -34,6 +34,7 @@ import Network.Curl.Code import Data.List import Control.Monad import Text.JSON (JSObject, JSValue, fromJSObject, decodeStrict) +import Text.JSON.Types (JSValue(..)) import Text.Printf (printf) import Ganeti.HTools.Utils @@ -78,10 +79,14 @@ parseInstance :: [(String, Ndx)] -> Result (String, Instance.Instance) parseInstance ktn a = do name <- tryFromObj "Parsing new instance" a "name" - let extract s x = tryFromObj ("Instance '" ++ name ++ "'") x s + let owner_name = "Instance '" ++ name ++ "'" + let extract s x = tryFromObj owner_name x s disk <- extract "disk_usage" a beparams <- liftM fromJSObject (extract "beparams" a) - mem <- extract "memory" beparams + omem <- extract "oper_ram" a + mem <- (case omem of + JSRational _ _ -> annotateResult owner_name (fromJVal omem) + _ -> extract "memory" beparams) vcpus <- extract "vcpus" beparams pnode <- extract "pnode" a >>= lookupNode ktn name snodes <- extract "snodes" a