diff --git a/Ganeti/HTools/IAlloc.hs b/Ganeti/HTools/IAlloc.hs index f015f9d42f0a0436f9cbe925e8a368480797e897..68a598f5bec0f86ba6194423f354f3b297cd98a7 100644 --- a/Ganeti/HTools/IAlloc.hs +++ b/Ganeti/HTools/IAlloc.hs @@ -156,7 +156,7 @@ parseData body = do let ex_ndx = map Node.idx ex_nodes return $ Evacuate ex_ndx other -> fail ("Invalid request type '" ++ other ++ "'") - return $ Request rqtype map_g map_n map_i ptags + return $ Request rqtype (ClusterData map_g map_n map_i ptags) -- | Format the result formatRVal :: RqType -> [Node.AllocElement] -> JSValue diff --git a/Ganeti/HTools/Loader.hs b/Ganeti/HTools/Loader.hs index 81ccbfee9181f98a8abcaf1be26bd1049614c888..13c10d655bd1d8d1b7cbba486bcf1219d8b9f182 100644 --- a/Ganeti/HTools/Loader.hs +++ b/Ganeti/HTools/Loader.hs @@ -73,7 +73,7 @@ data RqType deriving (Show) -- | A complete request, as received from Ganeti. -data Request = Request RqType Group.List Node.List Instance.List [String] +data Request = Request RqType ClusterData deriving (Show) -- | The cluster state. diff --git a/hail.hs b/hail.hs index 9fdaea64d66df3770518e0a62e938abaec394d24..ed67005718f348f2c47551aa3cdcdf83108cef54 100644 --- a/hail.hs +++ b/hail.hs @@ -37,7 +37,7 @@ import qualified Ganeti.HTools.Cluster as Cluster import Ganeti.HTools.CLI import Ganeti.HTools.IAlloc import Ganeti.HTools.Types -import Ganeti.HTools.Loader (RqType(..), Request(..)) +import Ganeti.HTools.Loader (RqType(..), Request(..), ClusterData(..)) import Ganeti.HTools.ExtLoader (loadExternalData) -- | Options list and functions @@ -68,7 +68,7 @@ processResults _ as = processRequest :: Request -> Result Cluster.AllocSolution processRequest request = - let Request rqtype gl nl il _ = request + let Request rqtype (ClusterData gl nl il _) = request in case rqtype of Allocate xi reqn -> Cluster.tryMGAlloc gl nl il xi reqn Relocate idx reqn exnodes -> Cluster.tryReloc nl il idx reqn exnodes @@ -90,8 +90,8 @@ readRequest opts args = do r2 <- if isJust (optDataFile opts) || (not . null . optNodeSim) opts then do (gl, nl, il, ctags) <- loadExternalData opts - let Request rqt _ _ _ _ = r1 - return $ Request rqt gl nl il ctags + let Request rqt _ = r1 + return $ Request rqt (ClusterData gl nl il ctags) else return r1 return r2 @@ -105,11 +105,12 @@ main = do request <- readRequest opts args - let Request rq _ nl _ _ = request + let Request rq cdata = request when (isJust shownodes) $ do hPutStrLn stderr "Initial cluster status:" - hPutStrLn stderr $ Cluster.printNodes nl (fromJust shownodes) + hPutStrLn stderr $ Cluster.printNodes (cdNodes cdata) + (fromJust shownodes) let sols = processRequest request >>= processResults rq let (ok, info, rn) =