Revision a4a6e623
b/Ganeti/HTools/Node.hs | ||
---|---|---|
340 | 340 |
new_load = utilLoad t `T.addUtil` Instance.util inst |
341 | 341 |
inst_tags = Instance.tags inst |
342 | 342 |
old_tags = pTags t |
343 |
in if new_mem <= 0 then T.OpFail T.FailMem |
|
344 |
else if new_dsk <= 0 || mDsk t > new_dp then T.OpFail T.FailDisk |
|
345 |
else if new_failn1 && not (failN1 t) then T.OpFail T.FailMem |
|
346 |
else if l_cpu >= 0 && l_cpu < new_pcpu then T.OpFail T.FailCPU |
|
347 |
else if rejectAddTags old_tags inst_tags |
|
348 |
then T.OpFail T.FailTags |
|
349 |
else |
|
350 |
let new_plist = iname:pList t |
|
351 |
new_mp = fromIntegral new_mem / tMem t |
|
352 |
r = t { pList = new_plist, fMem = new_mem, fDsk = new_dsk |
|
353 |
, failN1 = new_failn1, pMem = new_mp, pDsk = new_dp |
|
354 |
, uCpu = new_ucpu, pCpu = new_pcpu, utilLoad = new_load |
|
355 |
, pTags = addTags old_tags inst_tags } |
|
356 |
in T.OpGood r |
|
343 |
in case () of |
|
344 |
_ | new_mem <= 0 -> T.OpFail T.FailMem |
|
345 |
| new_dsk <= 0 || mDsk t > new_dp -> T.OpFail T.FailDisk |
|
346 |
| new_failn1 && not (failN1 t) -> T.OpFail T.FailMem |
|
347 |
| l_cpu >= 0 && l_cpu < new_pcpu -> T.OpFail T.FailCPU |
|
348 |
| rejectAddTags old_tags inst_tags -> T.OpFail T.FailTags |
|
349 |
| otherwise -> |
|
350 |
let new_plist = iname:pList t |
|
351 |
new_mp = fromIntegral new_mem / tMem t |
|
352 |
r = t { pList = new_plist, fMem = new_mem, fDsk = new_dsk |
|
353 |
, failN1 = new_failn1, pMem = new_mp, pDsk = new_dp |
|
354 |
, uCpu = new_ucpu, pCpu = new_pcpu |
|
355 |
, utilLoad = new_load |
|
356 |
, pTags = addTags old_tags inst_tags } |
|
357 |
in T.OpGood r |
|
357 | 358 |
|
358 | 359 |
-- | Adds a secondary instance. |
359 | 360 |
addSec :: Node -> Instance.Instance -> T.Ndx -> T.OpResult Node |
... | ... | |
371 | 372 |
old_load = utilLoad t |
372 | 373 |
new_load = old_load { T.dskWeight = T.dskWeight old_load + |
373 | 374 |
T.dskWeight (Instance.util inst) } |
374 |
in if new_dsk <= 0 || mDsk t > new_dp then T.OpFail T.FailDisk |
|
375 |
else if new_failn1 && not (failN1 t) then T.OpFail T.FailMem |
|
376 |
else let new_slist = iname:sList t |
|
377 |
r = t { sList = new_slist, fDsk = new_dsk |
|
378 |
, peers = new_peers, failN1 = new_failn1 |
|
379 |
, rMem = new_rmem, pDsk = new_dp |
|
380 |
, pRem = new_prem, utilLoad = new_load } |
|
381 |
in T.OpGood r |
|
375 |
in case () of |
|
376 |
_ | new_dsk <= 0 || mDsk t > new_dp -> T.OpFail T.FailDisk |
|
377 |
| new_failn1 && not (failN1 t) -> T.OpFail T.FailMem |
|
378 |
| otherwise -> |
|
379 |
let new_slist = iname:sList t |
|
380 |
r = t { sList = new_slist, fDsk = new_dsk |
|
381 |
, peers = new_peers, failN1 = new_failn1 |
|
382 |
, rMem = new_rmem, pDsk = new_dp |
|
383 |
, pRem = new_prem, utilLoad = new_load } |
|
384 |
in T.OpGood r |
|
382 | 385 |
|
383 | 386 |
-- * Stats functions |
384 | 387 |
|
Also available in: Unified diff