module Ganeti.HTools.Node
(
- Node(failN1, idx, t_mem, n_mem, f_mem, t_dsk, f_dsk,
+ Node(failN1, name, idx, t_mem, n_mem, f_mem, t_dsk, f_dsk,
p_mem, p_dsk, p_rem,
plist, slist, offline)
-- * Constructor
-- ** Finalization after data loading
, buildPeers
, setIdx
+ , setName
, setOffline
, setXmem
, setFmem
import qualified Ganeti.HTools.Instance as Instance
import qualified Ganeti.HTools.PeerMap as PeerMap
-import Ganeti.HTools.Utils
-
-data Node = Node { t_mem :: Double -- ^ total memory (MiB)
+data Node = Node { name :: String -- ^ the node name
+ , t_mem :: Double -- ^ total memory (MiB)
, n_mem :: Int -- ^ node memory (MiB)
, f_mem :: Int -- ^ free memory (MiB)
, x_mem :: Int -- ^ unaccounted memory (MiB)
later via the 'setIdx' and 'buildPeers' functions.
-}
-create :: Double -> Int -> Int -> Double -> Int -> Bool -> Node
-create mem_t_init mem_n_init mem_f_init dsk_t_init dsk_f_init
- offline_init =
+create :: String -> Double -> Int -> Int -> Double -> Int -> Bool -> Node
+create name_init mem_t_init mem_n_init mem_f_init
+ dsk_t_init dsk_f_init offline_init =
Node
{
+ name = name_init,
t_mem = mem_t_init,
n_mem = mem_n_init,
f_mem = mem_f_init,
setIdx :: Node -> Int -> Node
setIdx t i = t {idx = i}
+-- | Changes the name
+-- This is used only during the building of the data structures.
+setName t s = t {name = s}
+
-- | Sets the offline attribute
setOffline :: Node -> Bool -> Node
setOffline t val = t { offline = val }
setSec t idx = t { slist = idx:(slist t) }
-- | String converter for the node list functionality.
-list :: Int -> String -> Node -> String
-list mname n t =
+list :: Int -> Node -> String
+list mname t =
let pl = plist t
sl = slist t
mp = p_mem t
in
printf " %c %-*s %5.0f %5d %5d %5d %5d %5d %5.0f %5d %3d %3d %.5f %.5f"
(if off then '-' else if fn then '*' else ' ')
- mname n tmem nmem imem xmem fmem (r_mem t)
+ mname (name t) tmem nmem imem xmem fmem (r_mem t)
((t_dsk t) / 1024) ((f_dsk t) `div` 1024)
(length pl) (length sl)
mp dp