LGTM On Mon, Oct 5, 2015 at 5:10 PM, 'Klaus Aehlig' via ganeti-devel < [email protected]> wrote:
> At the IAlloc backend of htools we do not get the actual > state of the instance (as everything is state-of-record only). > However, we do get the administrative state. Therefore, by > assuming that for each instance the actual state is the one > corresponding to the administrated one, we can get a much better > description of the cluster than blindly assuming all instances > are running. Do so, whenever the admin_state is provided. > > Signed-off-by: Klaus Aehlig <[email protected]> > --- > src/Ganeti/HTools/Backend/IAlloc.hs | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/src/Ganeti/HTools/Backend/IAlloc.hs > b/src/Ganeti/HTools/Backend/IAlloc.hs > index 9cf66a2..da547b0 100644 > --- a/src/Ganeti/HTools/Backend/IAlloc.hs > +++ b/src/Ganeti/HTools/Backend/IAlloc.hs > @@ -59,7 +59,8 @@ import Ganeti.HTools.CLI > import Ganeti.HTools.Loader > import Ganeti.HTools.Types > import Ganeti.JSON > -import Ganeti.Types (EvacMode(ChangePrimary, ChangeSecondary)) > +import Ganeti.Types ( EvacMode(ChangePrimary, ChangeSecondary) > + , adminStateFromRaw, AdminState(..)) > import Ganeti.Utils > > {-# ANN module "HLint: ignore Eta reduce" #-} > @@ -107,9 +108,13 @@ parseBaseInstance n a = do > su <- extract "spindle_use" > nics <- extract "nics" >>= toArray >>= asObjectList >>= > mapM (parseNic n . fromJSObject) > - return > - (n, > - Instance.create n mem disk disks vcpus Running tags True 0 0 dt su > nics) > + state <- (tryFromObj errorMessage a "admin_state" >>= adminStateFromRaw) > + `mplus` Ok AdminUp > + let getRunSt AdminOffline = StatusOffline > + getRunSt AdminDown = StatusDown > + getRunSt AdminUp = Running > + return (n, Instance.create n mem disk disks vcpus (getRunSt state) tags > + True 0 0 dt su nics) > > -- | Parses an instance as found in the cluster instance list. > parseInstance :: NameAssoc -- ^ The node name-to-index association list > -- > 2.6.0.rc2.230.g3dd15c0 > > -- Lisa Velden Software Engineer [email protected] Google Germany GmbH Dienerstraße 12 80331 München Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg
