diff --git a/Ganeti/HTools/IAlloc.hs b/Ganeti/HTools/IAlloc.hs index 819021c8aea8c32ed3bec6ded99b5bfc4acee778..2d20a4f7c25d3aff87b5e0411ec3e826e6eaeb19 100644 --- a/Ganeti/HTools/IAlloc.hs +++ b/Ganeti/HTools/IAlloc.hs @@ -99,7 +99,6 @@ parseData body = do let obj = fromJSObject decoded -- request parser request <- liftM fromJSObject (fromObj "request" obj) - rname <- fromObj "name" request -- existing node parsing nlist <- liftM fromJSObject (fromObj "nodes" obj) nobj <- mapM (\(x,y) -> asJSObject y >>= parseNode x . fromJSObject) nlist @@ -113,18 +112,21 @@ parseData body = do -- cluster tags ctags <- fromObj "cluster_tags" obj (map_n, map_i, ptags, csf) <- mergeData [] [] (nl, il, ctags) - req_nodes <- fromObj "required_nodes" request optype <- fromObj "type" request rqtype <- case optype of "allocate" -> do + rname <- fromObj "name" request + req_nodes <- fromObj "required_nodes" request inew <- parseBaseInstance rname request let io = snd inew return $ Allocate io req_nodes "relocate" -> do + rname <- fromObj "name" request ridx <- lookupInstance kti rname + req_nodes <- fromObj "required_nodes" request ex_nodes <- fromObj "relocate_from" request let ex_nodes' = map (stripSuffix $ length csf) ex_nodes ex_idex <- mapM (Container.findByName map_n) ex_nodes'