Revision 608efcce Ganeti/HTools/Cluster.hs

b/Ganeti/HTools/Cluster.hs
52 52
type Score = Double
53 53

  
54 54
-- | The description of an instance placement.
55
type Placement = (Int, Int, Int, Score)
55
type Placement = (Idx, Ndx, Ndx, Score)
56 56

  
57 57
{- | A cluster solution described as the solution delta and the list
58 58
of placements.
......
72 72

  
73 73
-- | An instance move definition
74 74
data IMove = Failover                -- ^ Failover the instance (f)
75
           | ReplacePrimary Int      -- ^ Replace primary (f, r:np, f)
76
           | ReplaceSecondary Int    -- ^ Replace secondary (r:ns)
77
           | ReplaceAndFailover Int  -- ^ Replace secondary, failover (r:np, f)
78
           | FailoverAndReplace Int  -- ^ Failover, replace secondary (f, r:ns)
75
           | ReplacePrimary Ndx      -- ^ Replace primary (f, r:np, f)
76
           | ReplaceSecondary Ndx    -- ^ Replace secondary (r:ns)
77
           | ReplaceAndFailover Ndx  -- ^ Replace secondary, failover (r:np, f)
78
           | FailoverAndReplace Ndx  -- ^ Failover, replace secondary (f, r:ns)
79 79
             deriving (Show)
80 80

  
81 81
-- | The complete state for the balancing solution
......
238 238
-- Second phase functions
239 239

  
240 240
-- | Single-node relocation cost
241
nodeDelta :: Int -> Int -> Int -> Int
241
nodeDelta :: Ndx -> Ndx -> Ndx -> Int
242 242
nodeDelta i p s =
243 243
    if i == p || i == s then
244 244
        0
......
333 333

  
334 334
-- | Apply a move
335 335
applyMove :: Node.List -> Instance.Instance
336
          -> IMove -> (Maybe Node.List, Instance.Instance, Int, Int)
336
          -> IMove -> (Maybe Node.List, Instance.Instance, Ndx, Ndx)
337 337
-- Failover (f)
338 338
applyMove nl inst Failover =
339 339
    let old_pdx = Instance.pnode inst
......
451 451
-- | Given the status of the current secondary as a valid new node
452 452
-- and the current candidate target node,
453 453
-- generate the possible moves for a instance.
454
possibleMoves :: Bool -> Int -> [IMove]
454
possibleMoves :: Bool -> Ndx -> [IMove]
455 455
possibleMoves True tdx =
456 456
    [ReplaceSecondary tdx,
457 457
     ReplaceAndFailover tdx,
......
463 463
     ReplaceAndFailover tdx]
464 464

  
465 465
-- | Compute the best move for a given instance.
466
checkInstanceMove :: [Int]             -- Allowed target node indices
466
checkInstanceMove :: [Ndx]             -- Allowed target node indices
467 467
                  -> Table             -- Original table
468 468
                  -> Instance.Instance -- Instance to move
469 469
                  -> Table             -- Best new table for this instance
......
482 482
      foldl' (checkSingleStep ini_tbl target) aft_failover all_moves
483 483

  
484 484
-- | Compute the best next move.
485
checkMove :: [Int]               -- ^ Allowed target node indices
485
checkMove :: [Ndx]               -- ^ Allowed target node indices
486 486
          -> Table               -- ^ The current solution
487 487
          -> [Instance.Instance] -- ^ List of instances still to move
488 488
          -> Table               -- ^ The new solution

Also available in: Unified diff