37 |
37 |
import Ganeti.HTools.CLI
|
38 |
38 |
import Ganeti.HTools.IAlloc
|
39 |
39 |
import Ganeti.HTools.Types
|
40 |
|
import Ganeti.HTools.Loader (RqType(..), Request(..))
|
|
40 |
import Ganeti.HTools.Loader (RqType(..), Request(..), ClusterData(..))
|
41 |
41 |
import Ganeti.HTools.ExtLoader (loadExternalData)
|
42 |
42 |
|
43 |
43 |
-- | Options list and functions
|
... | ... | |
68 |
68 |
processRequest :: Request
|
69 |
69 |
-> Result Cluster.AllocSolution
|
70 |
70 |
processRequest request =
|
71 |
|
let Request rqtype gl nl il _ = request
|
|
71 |
let Request rqtype (ClusterData gl nl il _) = request
|
72 |
72 |
in case rqtype of
|
73 |
73 |
Allocate xi reqn -> Cluster.tryMGAlloc gl nl il xi reqn
|
74 |
74 |
Relocate idx reqn exnodes -> Cluster.tryReloc nl il idx reqn exnodes
|
... | ... | |
90 |
90 |
r2 <- if isJust (optDataFile opts) || (not . null . optNodeSim) opts
|
91 |
91 |
then do
|
92 |
92 |
(gl, nl, il, ctags) <- loadExternalData opts
|
93 |
|
let Request rqt _ _ _ _ = r1
|
94 |
|
return $ Request rqt gl nl il ctags
|
|
93 |
let Request rqt _ = r1
|
|
94 |
return $ Request rqt (ClusterData gl nl il ctags)
|
95 |
95 |
else return r1
|
96 |
96 |
return r2
|
97 |
97 |
|
... | ... | |
105 |
105 |
|
106 |
106 |
request <- readRequest opts args
|
107 |
107 |
|
108 |
|
let Request rq _ nl _ _ = request
|
|
108 |
let Request rq cdata = request
|
109 |
109 |
|
110 |
110 |
when (isJust shownodes) $ do
|
111 |
111 |
hPutStrLn stderr "Initial cluster status:"
|
112 |
|
hPutStrLn stderr $ Cluster.printNodes nl (fromJust shownodes)
|
|
112 |
hPutStrLn stderr $ Cluster.printNodes (cdNodes cdata)
|
|
113 |
(fromJust shownodes)
|
113 |
114 |
|
114 |
115 |
let sols = processRequest request >>= processResults rq
|
115 |
116 |
let (ok, info, rn) =
|