Revision 3986684e Ganeti/HTools/Rapi.hs
b/Ganeti/HTools/Rapi.hs | ||
---|---|---|
31 | 31 |
, parseData |
32 | 32 |
) where |
33 | 33 |
|
34 |
import Data.Maybe (isJust)
|
|
34 |
import Data.Maybe (fromMaybe)
|
|
35 | 35 |
import Network.Curl |
36 | 36 |
import Network.Curl.Types () |
37 | 37 |
import Control.Monad |
... | ... | |
120 | 120 |
parseNode :: NameAssoc -> [(String, JSValue)] -> Result (String, Node.Node) |
121 | 121 |
parseNode ktg a = do |
122 | 122 |
name <- tryFromObj "Parsing new node" a "name" |
123 |
let extract s = tryFromObj ("Node '" ++ name ++ "'") a s |
|
123 |
let desc = "Node '" ++ name ++ "'" |
|
124 |
extract s = tryFromObj desc a s |
|
124 | 125 |
offline <- extract "offline" |
125 | 126 |
drained <- extract "drained" |
126 |
guuid <- (if isJust $ lookup "group.uuid" a |
|
127 |
then extract "group.uuid" |
|
128 |
else return defaultGroupID) >>= lookupGroup ktg name |
|
129 |
node <- (if offline || drained |
|
130 |
then return $ Node.create name 0 0 0 0 0 0 True guuid |
|
127 |
vm_cap <- annotateResult desc $ maybeFromObj a "vm_capable" |
|
128 |
let vm_cap' = fromMaybe True vm_cap |
|
129 |
guuid <- annotateResult desc $ maybeFromObj a "group.uuid" |
|
130 |
guuid' <- lookupGroup ktg name (fromMaybe defaultGroupID guuid) |
|
131 |
node <- (if offline || drained || not vm_cap' |
|
132 |
then return $ Node.create name 0 0 0 0 0 0 True guuid' |
|
131 | 133 |
else do |
132 | 134 |
mtotal <- extract "mtotal" |
133 | 135 |
mnode <- extract "mnode" |
... | ... | |
136 | 138 |
dfree <- extract "dfree" |
137 | 139 |
ctotal <- extract "ctotal" |
138 | 140 |
return $ Node.create name mtotal mnode mfree |
139 |
dtotal dfree ctotal False guuid) |
|
141 |
dtotal dfree ctotal False guuid')
|
|
140 | 142 |
return (name, node) |
141 | 143 |
|
142 | 144 |
-- | Construct a group from a JSON object. |
Also available in: Unified diff