Similar to the IAllocator change, this patch reads and uses the
vm_capable flag in Rapi. Furthermore, it changes the group UUID
reading to the same maybeFromObj infrastructure.
---
Ganeti/HTools/Rapi.hs | 17 +++++++++--------
1 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/Ganeti/HTools/Rapi.hs b/Ganeti/HTools/Rapi.hs
index ac0fd96..a7f9c2c 100644
--- a/Ganeti/HTools/Rapi.hs
+++ b/Ganeti/HTools/Rapi.hs
@@ -31,7 +31,7 @@ module Ganeti.HTools.Rapi
, parseData
) where
-import Data.Maybe (isJust)
+import Data.Maybe (fromMaybe)
import Network.Curl
import Network.Curl.Types ()
import Control.Monad
@@ -120,14 +120,15 @@ parseInstance ktn a = do
parseNode :: NameAssoc -> [(String, JSValue)] -> Result (String, Node.Node)
parseNode ktg a = do
name <- tryFromObj "Parsing new node" a "name"
- let extract s = tryFromObj ("Node '" ++ name ++ "'") a s
+ let desc = "Node '" ++ name ++ "'"
+ extract s = tryFromObj desc a s
offline <- extract "offline"
drained <- extract "drained"
- guuid <- (if isJust $ lookup "group.uuid" a
- then extract "group.uuid"
- else return defaultGroupID) >>= lookupGroup ktg name
- node <- (if offline || drained
- then return $ Node.create name 0 0 0 0 0 0 True guuid
+ vm_cap <- annotateResult desc $ maybeFromObj a "vm_capable"
+ guuid <- annotateResult desc $ maybeFromObj a "group.uuid"
+ guuid' <- lookupGroup ktg name (fromMaybe defaultGroupID guuid)
+ node <- (if offline || drained || not (fromMaybe True vm_cap)
+ then return $ Node.create name 0 0 0 0 0 0 True guuid'
else do
mtotal <- extract "mtotal"
mnode <- extract "mnode"
@@ -136,7 +137,7 @@ parseNode ktg a = do
dfree <- extract "dfree"
ctotal <- extract "ctotal"
return $ Node.create name mtotal mnode mfree
- dtotal dfree ctotal False guuid)
+ dtotal dfree ctotal False guuid')
return (name, node)
-- | Construct a group from a JSON object.
--
1.7.3.1