Revision bfa9a5d1

b/src/Ganeti/HTools/Instance.hs
246 246
                              in if v < T.unitMem
247 247
                                 then Bad "out of memory"
248 248
                                 else Ok inst { mem = v }
249
shrinkByType inst T.FailDisk = let v = dsk inst - T.unitDsk
250
                               in if v < T.unitDsk
251
                                  then Bad "out of disk"
252
                                  else Ok inst { dsk = v }
249
shrinkByType inst T.FailDisk =
250
  let newdisks = map (flip (-) T.unitDsk) $ disks inst
251
      v = dsk inst - (length . disks $ inst) * T.unitDsk
252
  in if any (< T.unitDsk) newdisks
253
     then Bad "out of disk"
254
     else Ok inst { dsk = v, disks = newdisks }
253 255
shrinkByType inst T.FailCPU = let v = vcpus inst - T.unitCpu
254 256
                              in if v < T.unitCpu
255 257
                                 then Bad "out of vcpus"
b/test/hs/Test/Ganeti/HTools/Instance.hs
178 178
prop_shrinkDF :: Instance.Instance -> Property
179 179
prop_shrinkDF inst =
180 180
  forAll (choose (0, 2 * Types.unitDsk - 1)) $ \dsk ->
181
    let inst' = inst { Instance.dsk = dsk }
181
    let inst' = inst { Instance.dsk = dsk, Instance.disks = [dsk] }
182 182
    in isBad $ Instance.shrinkByType inst' Types.FailDisk
183 183

  
184 184
prop_setMovable :: Instance.Instance -> Bool -> Property

Also available in: Unified diff