Revision f9e7e331 src/Ganeti/HTools/Cluster.hs
b/src/Ganeti/HTools/Cluster.hs | ||
---|---|---|
76 | 76 |
, splitCluster |
77 | 77 |
) where |
78 | 78 |
|
79 |
import Control.Applicative (liftA2) |
|
79 | 80 |
import qualified Data.IntSet as IntSet |
80 | 81 |
import Data.List |
81 | 82 |
import Data.Maybe (fromJust, fromMaybe, isJust, isNothing) |
... | ... | |
1283 | 1284 |
-- allocation. |
1284 | 1285 |
sufficesShrinking :: (Instance.Instance -> AllocSolution) -> Instance.Instance |
1285 | 1286 |
-> FailMode -> Bool |
1286 |
sufficesShrinking allocFn inst fm = any isJust . map (asSolution . allocFn) $ |
|
1287 |
iterateOk (`Instance.shrinkByType` fm) inst |
|
1287 |
sufficesShrinking allocFn inst fm = |
|
1288 |
any isJust |
|
1289 |
. map asSolution |
|
1290 |
. takeWhile (liftA2 (||) (elem fm . asFailures) (isJust . asSolution)) |
|
1291 |
. map allocFn $ |
|
1292 |
iterateOk (`Instance.shrinkByType` fm) inst |
|
1288 | 1293 |
|
1289 | 1294 |
-- | Tiered allocation method. |
1290 | 1295 |
-- |
Also available in: Unified diff