From 10f055acd164c764549eb41978455daf04161763 Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Sat, 9 Jul 2011 11:17:10 +0200 Subject: [PATCH] htools: do not change node disk for non-local storage Signed-off-by: Iustin Pop <iustin@google.com> Reviewed-by: Guido Trotter <ultrotter@google.com> --- htools/Ganeti/HTools/Node.hs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/htools/Ganeti/HTools/Node.hs b/htools/Ganeti/HTools/Node.hs index cc723ad43..7b4e70e13 100644 --- a/htools/Ganeti/HTools/Node.hs +++ b/htools/Ganeti/HTools/Node.hs @@ -327,9 +327,13 @@ removePri t inst = removeSec :: Node -> Instance.Instance -> Node removeSec t inst = let iname = Instance.idx inst + uses_disk = Instance.usesLocalStorage inst + cur_dsk = fDsk t pnode = Instance.pNode inst new_slist = delete iname (sList t) - new_dsk = fDsk t + Instance.dsk inst + new_dsk = if uses_disk + then cur_dsk + Instance.dsk inst + else cur_dsk old_peers = peers t old_peem = P.find pnode old_peers new_peem = if Instance.autoBalance inst @@ -368,8 +372,12 @@ addPriEx :: Bool -- ^ Whether to override the N+1 and -- or a failure mode addPriEx force t inst = let iname = Instance.idx inst + uses_disk = Instance.usesLocalStorage inst + cur_dsk = fDsk t new_mem = fMem t - Instance.mem inst - new_dsk = fDsk t - Instance.dsk inst + new_dsk = if uses_disk + then cur_dsk - Instance.dsk inst + else cur_dsk new_failn1 = new_mem <= rMem t new_ucpu = uCpu t + Instance.vcpus inst new_pcpu = fromIntegral new_ucpu / tCpu t @@ -381,8 +389,8 @@ addPriEx force t inst = strict = not force in case () of _ | new_mem <= 0 -> T.OpFail T.FailMem - | new_dsk <= 0 -> T.OpFail T.FailDisk - | mDsk t > new_dp && strict -> T.OpFail T.FailDisk + | uses_disk && new_dsk <= 0 -> T.OpFail T.FailDisk + | uses_disk && mDsk t > new_dp && strict -> T.OpFail T.FailDisk | new_failn1 && not (failN1 t) && strict -> T.OpFail T.FailMem | l_cpu >= 0 && l_cpu < new_pcpu && strict -> T.OpFail T.FailCPU | rejectAddTags old_tags inst_tags -> T.OpFail T.FailTags @@ -421,7 +429,8 @@ addSecEx force t inst pdx = T.dskWeight (Instance.util inst) } strict = not force in case () of - _ | new_dsk <= 0 -> T.OpFail T.FailDisk + _ | not (Instance.hasSecondary inst) -> T.OpFail T.FailDisk + | new_dsk <= 0 -> T.OpFail T.FailDisk | mDsk t > new_dp && strict -> T.OpFail T.FailDisk | secondary_needed_mem >= old_mem && strict -> T.OpFail T.FailMem | new_failn1 && not (failN1 t) && strict -> T.OpFail T.FailMem -- GitLab