Revision a7e1fd89
b/htools/Ganeti/HTools/Loader.hs | ||
---|---|---|
55 | 55 |
import qualified Ganeti.HTools.Instance as Instance |
56 | 56 |
import qualified Ganeti.HTools.Node as Node |
57 | 57 |
import qualified Ganeti.HTools.Group as Group |
58 |
import qualified Ganeti.HTools.Cluster as Cluster |
|
58 | 59 |
|
59 | 60 |
import Ganeti.HTools.Types |
60 | 61 |
import Ganeti.HTools.Utils |
... | ... | |
246 | 247 |
then Instance.setMovable inst False |
247 | 248 |
else inst |
248 | 249 |
|
250 |
-- | Disables moves for instances with a split group. |
|
251 |
disableSplitMoves :: Node.List -> Instance.Instance -> Instance.Instance |
|
252 |
disableSplitMoves nl inst = |
|
253 |
if not . isOk . Cluster.instanceGroup nl $ inst |
|
254 |
then Instance.setMovable inst False |
|
255 |
else inst |
|
256 |
|
|
249 | 257 |
-- | Compute the longest common suffix of a list of strings that |
250 | 258 |
-- starts with a dot. |
251 | 259 |
longestDomain :: [String] -> String |
... | ... | |
302 | 310 |
nl3 = Container.map (setNodePolicy gl . |
303 | 311 |
computeAlias common_suffix . |
304 | 312 |
(`Node.buildPeers` il4)) nl2 |
313 |
il5 = Container.map (disableSplitMoves nl3) il4 |
|
305 | 314 |
in if' (null lkp_unknown) |
306 |
(Ok cdata { cdNodes = nl3, cdInstances = il4 })
|
|
315 |
(Ok cdata { cdNodes = nl3, cdInstances = il5 })
|
|
307 | 316 |
(Bad $ "Unknown instance(s): " ++ show(map lrContent lkp_unknown)) |
308 | 317 |
|
309 | 318 |
-- | Checks the cluster data for consistency. |
b/htools/Ganeti/HTools/Program/Hbal.hs | ||
---|---|---|
301 | 301 |
|
302 | 302 |
-- hbal doesn't currently handle split clusters |
303 | 303 |
let split_insts = Cluster.findSplitInstances nl il |
304 |
unless (null split_insts) $ do |
|
304 |
unless (null split_insts || verbose <= 1) $ do
|
|
305 | 305 |
hPutStrLn stderr "Found instances belonging to multiple node groups:" |
306 | 306 |
mapM_ (\i -> hPutStrLn stderr $ " " ++ Instance.name i) split_insts |
307 |
hPutStrLn stderr "Aborting." |
|
308 |
exitWith $ ExitFailure 1 |
|
307 |
hPutStrLn stderr "These instances will not be moved." |
|
309 | 308 |
|
310 | 309 |
printf "Loaded %d nodes, %d instances\n" |
311 | 310 |
(Container.size nl) |
Also available in: Unified diff