Revision 94a420ed src/Ganeti/HTools/Cluster.hs

b/src/Ganeti/HTools/Cluster.hs
46 46
  , printSolutionLine
47 47
  , formatCmds
48 48
  , involvedNodes
49
  , getMoves
49 50
  , splitJobs
50 51
  -- * Display functions
51 52
  , printNodes
......
1412 1413
      inst = Container.find i il
1413 1414
  in nub . filter (>= 0) $ [np, ns] ++ Instance.allNodes inst
1414 1415

  
1416
-- | From two adjacent cluster tables get the list of moves that transitions
1417
-- from to the other
1418
getMoves :: (Table, Table) -> [MoveJob]
1419
getMoves (Table _ initial_il _ initial_plc, Table final_nl _ _ final_plc) =
1420
  let
1421
    plctoMoves (plc@(idx, p, s, mv, _)) =
1422
      let inst = Container.find idx initial_il
1423
          inst_name = Instance.name inst
1424
          affected = involvedNodes initial_il plc
1425
          np = Node.alias $ Container.find p final_nl
1426
          ns = Node.alias $ Container.find s final_nl
1427
          (_, cmds) = computeMoves inst inst_name mv np ns
1428
      in (affected, idx, mv, cmds)
1429
  in map plctoMoves . reverse . drop (length initial_plc) $ reverse final_plc
1430
             
1415 1431
-- | Inner function for splitJobs, that either appends the next job to
1416 1432
-- the current jobset, or starts a new jobset.
1417 1433
mergeJobs :: ([JobSet], [Ndx]) -> MoveJob -> ([JobSet], [Ndx])

Also available in: Unified diff