Add a predicate whether a group is globally N+1 redundant
authorKlaus Aehlig <aehlig@google.com>
Tue, 22 Sep 2015 16:26:11 +0000 (18:26 +0200)
committerKlaus Aehlig <aehlig@google.com>
Fri, 25 Sep 2015 08:04:53 +0000 (10:04 +0200)
A group is redundant if the evacuation property holds for
all its nodes.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

src/Ganeti/HTools/GlobalN1.hs

index b88769d..b4d078b 100644 (file)
@@ -35,6 +35,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 module Ganeti.HTools.GlobalN1
   ( canEvacuateNode
   , redundant
+  , redundantGrp
   , allocGlobalN1
   ) where
 
@@ -123,6 +124,11 @@ redundant opts nl il =
                                . Node.group)
        $ filterFun nl
 
+-- | Predicate on wheter a given group is globally N+1 redundant.
+redundantGrp :: AlgorithmOptions -> Node.List -> Instance.List -> Gdx -> Bool
+redundantGrp opts nl il gdx =
+  redundant opts (Container.filter ((==) gdx . Node.group) nl) il
+
 -- | Predicate on wheter an allocation element leads to a globally N+1 redundant
 -- state.
 allocGlobalN1 :: AlgorithmOptions