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