From 0ee8fd765ca02df512e8c99443f82b7c175e02fc Mon Sep 17 00:00:00 2001
From: Iustin Pop <iustin@google.com>
Date: Sun, 22 Mar 2009 22:33:55 +0100
Subject: [PATCH] Update all needed node fields on f_mem change

This fixes the setFmem function which didn't compute other related
fields after free memory change. Ideally, this should be abstracted so
that add/remove Pri and similar functions could reuse it instead of
duplicating code.
---
 Ganeti/HTools/Node.hs | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/Ganeti/HTools/Node.hs b/Ganeti/HTools/Node.hs
index cbc2117a4..1156ee2b5 100644
--- a/Ganeti/HTools/Node.hs
+++ b/Ganeti/HTools/Node.hs
@@ -101,7 +101,11 @@ setXmem t val = t { x_mem = val }
 
 -- | 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
-- 
GitLab