Revision 10f055ac

b/htools/Ganeti/HTools/Node.hs
327 327
removeSec :: Node -> Instance.Instance -> Node
328 328
removeSec t inst =
329 329
    let iname = Instance.idx inst
330
        uses_disk = Instance.usesLocalStorage inst
331
        cur_dsk = fDsk t
330 332
        pnode = Instance.pNode inst
331 333
        new_slist = delete iname (sList t)
332
        new_dsk = fDsk t + Instance.dsk inst
334
        new_dsk = if uses_disk
335
                  then cur_dsk + Instance.dsk inst
336
                  else cur_dsk
333 337
        old_peers = peers t
334 338
        old_peem = P.find pnode old_peers
335 339
        new_peem =  if Instance.autoBalance inst
......
368 372
                               -- or a failure mode
369 373
addPriEx force t inst =
370 374
    let iname = Instance.idx inst
375
        uses_disk = Instance.usesLocalStorage inst
376
        cur_dsk = fDsk t
371 377
        new_mem = fMem t - Instance.mem inst
372
        new_dsk = fDsk t - Instance.dsk inst
378
        new_dsk = if uses_disk
379
                  then cur_dsk - Instance.dsk inst
380
                  else cur_dsk
373 381
        new_failn1 = new_mem <= rMem t
374 382
        new_ucpu = uCpu t + Instance.vcpus inst
375 383
        new_pcpu = fromIntegral new_ucpu / tCpu t
......
381 389
        strict = not force
382 390
    in case () of
383 391
         _ | new_mem <= 0 -> T.OpFail T.FailMem
384
           | new_dsk <= 0 -> T.OpFail T.FailDisk
385
           | mDsk t > new_dp && strict -> T.OpFail T.FailDisk
392
           | uses_disk && new_dsk <= 0 -> T.OpFail T.FailDisk
393
           | uses_disk && mDsk t > new_dp && strict -> T.OpFail T.FailDisk
386 394
           | new_failn1 && not (failN1 t) && strict -> T.OpFail T.FailMem
387 395
           | l_cpu >= 0 && l_cpu < new_pcpu && strict -> T.OpFail T.FailCPU
388 396
           | rejectAddTags old_tags inst_tags -> T.OpFail T.FailTags
......
421 429
                                            T.dskWeight (Instance.util inst) }
422 430
        strict = not force
423 431
    in case () of
424
         _ | new_dsk <= 0 -> T.OpFail T.FailDisk
432
         _ | not (Instance.hasSecondary inst) -> T.OpFail T.FailDisk
433
           | new_dsk <= 0 -> T.OpFail T.FailDisk
425 434
           | mDsk t > new_dp && strict -> T.OpFail T.FailDisk
426 435
           | secondary_needed_mem >= old_mem && strict -> T.OpFail T.FailMem
427 436
           | new_failn1 && not (failN1 t) && strict -> T.OpFail T.FailMem

Also available in: Unified diff