projects
/
ganeti-local
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Switch from hand-written monads to a real one
[ganeti-local]
/
Ganeti
/
HTools
/
Node.hs
diff --git
a/Ganeti/HTools/Node.hs
b/Ganeti/HTools/Node.hs
index
cbc2117
..
8dffd58
100644
(file)
--- a/
Ganeti/HTools/Node.hs
+++ b/
Ganeti/HTools/Node.hs
@@
-64,8
+64,9
@@
The index and the peers maps are empty, and will be need to be update
later via the 'setIdx' and 'buildPeers' functions.
-}
later via the 'setIdx' and 'buildPeers' functions.
-}
-create :: Double -> Int -> Int -> Double -> Int -> Node
-create mem_t_init mem_n_init mem_f_init dsk_t_init dsk_f_init =
+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 =
Node
{
t_mem = mem_t_init,
Node
{
t_mem = mem_t_init,
@@
-82,7
+83,7
@@
create mem_t_init mem_n_init mem_f_init dsk_t_init dsk_f_init =
p_mem = (fromIntegral mem_f_init) / mem_t_init,
p_dsk = (fromIntegral dsk_f_init) / dsk_t_init,
p_rem = 0,
p_mem = (fromIntegral mem_f_init) / mem_t_init,
p_dsk = (fromIntegral dsk_f_init) / dsk_t_init,
p_rem = 0,
- offline = False,
+ offline = offline_init,
x_mem = 0
}
x_mem = 0
}
@@
-101,7
+102,11
@@
setXmem t val = t { x_mem = val }
-- | Sets the free memory
setFmem :: Node -> Int -> Node
-- | Sets the free memory
setFmem :: Node -> Int -> Node
-setFmem t val = t { f_mem = val }
+setFmem t new_mem =
+ let new_n1 = computeFailN1 (r_mem t) new_mem (f_dsk t)
+ new_mp = (fromIntegral new_mem) / (t_mem t)
+ in
+ t { f_mem = new_mem, failN1 = new_n1, p_mem = new_mp }
-- | Given the rmem, free memory and disk, computes the failn1 status.
computeFailN1 :: Int -> Int -> Int -> Bool
-- | Given the rmem, free memory and disk, computes the failn1 status.
computeFailN1 :: Int -> Int -> Int -> Bool