diff --git a/Ganeti/HTools/Node.hs b/Ganeti/HTools/Node.hs index 30e336215f3120bad70f085e6cf8ba4529d28139..6b56c9d564162ee34a5b6d2dc379556f6bfa64b8 100644 --- a/Ganeti/HTools/Node.hs +++ b/Ganeti/HTools/Node.hs @@ -6,12 +6,14 @@ module Ganeti.HTools.Node ( - Node(failN1, idx, f_mem, f_dsk, p_mem, p_dsk, slist, plist, p_rem) + Node(failN1, idx, f_mem, f_dsk, p_mem, p_dsk, slist, plist, + p_rem, offline) -- * Constructor , create -- ** Finalization after data loading , buildPeers , setIdx + , setOffline -- * Instance (re)location , removePri , removeSec @@ -46,6 +48,9 @@ data Node = Node { t_mem :: Double -- ^ total memory (Mib) , p_mem :: Double -- ^ percent of free memory , p_dsk :: Double -- ^ percent of free disk , p_rem :: Double -- ^ percent of reserved memory + , offline :: Bool -- ^ whether the node should not be used + -- for allocations and skipped from + -- score computations } deriving (Show) {- | Create a new node. @@ -75,7 +80,8 @@ create mem_t_init mem_f_init dsk_t_init dsk_f_init = r_mem = 0, p_mem = (fromIntegral mem_f) / (fromIntegral mem_t), p_dsk = (fromIntegral dsk_f) / (fromIntegral dsk_t), - p_rem = 0 + p_rem = 0, + offline = False } -- | Changes the index. @@ -83,6 +89,10 @@ create mem_t_init mem_f_init dsk_t_init dsk_f_init = setIdx :: Node -> Int -> Node setIdx t i = t {idx = i} +-- | Sets the offline attribute +setOffline :: Node -> Bool -> Node +setOffline t val = t { offline = val } + -- | Given the rmem, free memory and disk, computes the failn1 status. computeFailN1 :: Int -> Int -> Int -> Bool computeFailN1 new_rmem new_mem new_dsk =