From 06fb841e3b9044608cc85fe068a3d606c0a6c5f8 Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Wed, 1 Dec 2010 00:10:57 +0000 Subject: [PATCH] Add two utility functions for the Result type Actually, this just moves the functions from the QC module to Types, and removes a duplicate entry from Cluster. Signed-off-by: Iustin Pop <iustin@google.com> Reviewed-by: Balazs Lecz <leczb@google.com> --- Ganeti/HTools/Cluster.hs | 3 --- Ganeti/HTools/QC.hs | 14 +++----------- Ganeti/HTools/Types.hs | 11 +++++++++++ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Ganeti/HTools/Cluster.hs b/Ganeti/HTools/Cluster.hs index 1ad304d70..7172cff07 100644 --- a/Ganeti/HTools/Cluster.hs +++ b/Ganeti/HTools/Cluster.hs @@ -854,9 +854,6 @@ instanceGroup nl i = findSplitInstances :: Node.List -> Instance.List -> [Instance.Instance] findSplitInstances nl il = filter (not . isOk . instanceGroup nl) (Container.elems il) - where isOk x = case x of - Bad _ -> False - _ -> True -- | Splits a cluster into the component node groups splitCluster :: Node.List -> Instance.List -> diff --git a/Ganeti/HTools/QC.hs b/Ganeti/HTools/QC.hs index b4ab4b0d6..206d86ed1 100644 --- a/Ganeti/HTools/QC.hs +++ b/Ganeti/HTools/QC.hs @@ -85,14 +85,6 @@ isFailure :: Types.OpResult a -> Bool isFailure (Types.OpFail _) = True isFailure _ = False --- | Simple checker for whether Result is fail or pass -isOk :: Types.Result a -> Bool -isOk (Types.Ok _ ) = True -isOk _ = False - -isBad :: Types.Result a -> Bool -isBad = not . isOk - -- | Update an instance to be smaller than a node setInstanceSmallerThanNode node inst = inst { Instance.mem = Node.availMem node `div` 2 @@ -388,7 +380,7 @@ prop_Instance_shrinkMG inst = prop_Instance_shrinkMF inst = Instance.mem inst < 2 * Types.unitMem ==> - isBad $ Instance.shrinkByType inst Types.FailMem + Types.isBad $ Instance.shrinkByType inst Types.FailMem prop_Instance_shrinkCG inst = Instance.vcpus inst >= 2 * Types.unitCpu ==> @@ -399,7 +391,7 @@ prop_Instance_shrinkCG inst = prop_Instance_shrinkCF inst = Instance.vcpus inst < 2 * Types.unitCpu ==> - isBad $ Instance.shrinkByType inst Types.FailCPU + Types.isBad $ Instance.shrinkByType inst Types.FailCPU prop_Instance_shrinkDG inst = Instance.dsk inst >= 2 * Types.unitDsk ==> @@ -410,7 +402,7 @@ prop_Instance_shrinkDG inst = prop_Instance_shrinkDF inst = Instance.dsk inst < 2 * Types.unitDsk ==> - isBad $ Instance.shrinkByType inst Types.FailDisk + Types.isBad $ Instance.shrinkByType inst Types.FailDisk prop_Instance_setMovable inst m = Instance.movable inst' == m diff --git a/Ganeti/HTools/Types.hs b/Ganeti/HTools/Types.hs index 7a0c6db90..96c6f0f7e 100644 --- a/Ganeti/HTools/Types.hs +++ b/Ganeti/HTools/Types.hs @@ -47,6 +47,8 @@ module Ganeti.HTools.Types , MoveJob , JobSet , Result(..) + , isOk + , isBad , Element(..) , FailMode(..) , FailStats @@ -178,6 +180,15 @@ instance Monad Result where return = Ok fail = Bad +-- | Simple checker for whether Result is OK +isOk :: Result a -> Bool +isOk (Ok _) = True +isOk _ = False + +-- | Simple checker for whether Result is a failure +isBad :: Result a -> Bool +isBad = not . isOk + -- | Reason for an operation's falure data FailMode = FailMem -- ^ Failed due to not enough RAM | FailDisk -- ^ Failed due to not enough disk -- GitLab