From 52cc137053c5f69f036878d7dc4db70c2662e9fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Nussbaumer?= <rn@google.com> Date: Tue, 13 Mar 2012 11:47:31 +0100 Subject: [PATCH] htools: Adapt the Text backend to spindle usage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The old text files remain compatible with this change. Signed-off-by: RenΓ© Nussbaumer <rn@google.com> Reviewed-by: Iustin Pop <iustin@google.com> --- htools/Ganeti/HTools/QC.hs | 8 +++++--- htools/Ganeti/HTools/Text.hs | 14 ++++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/htools/Ganeti/HTools/QC.hs b/htools/Ganeti/HTools/QC.hs index e4cd394d0..31b745bf8 100644 --- a/htools/Ganeti/HTools/QC.hs +++ b/htools/Ganeti/HTools/QC.hs @@ -754,11 +754,12 @@ testSuite "Instance" prop_Text_Load_Instance name mem dsk vcpus status (NonEmpty pnode) snode - (NonNegative pdx) (NonNegative sdx) autobal dt = + (NonNegative pdx) (NonNegative sdx) autobal dt su = pnode /= snode && pdx /= sdx ==> let vcpus_s = show vcpus dsk_s = show dsk mem_s = show mem + su_s = show su status_s = Types.instanceStatusToRaw status ndx = if null snode then [(pnode, pdx)] @@ -769,7 +770,7 @@ prop_Text_Load_Instance name mem dsk vcpus status sdt = Types.diskTemplateToRaw dt inst = Text.loadInst nl [name, mem_s, dsk_s, vcpus_s, status_s, - sbal, pnode, snode, sdt, tags] + sbal, pnode, snode, sdt, tags, su_s] fail1 = Text.loadInst nl [name, mem_s, dsk_s, vcpus_s, status_s, sbal, pnode, pnode, tags] @@ -789,10 +790,11 @@ prop_Text_Load_Instance name mem dsk vcpus status then Node.noSecondary else sdx) && Instance.autoBalance i == autobal && + Instance.spindleUsage i == su && Types.isBad fail1 prop_Text_Load_InstanceFail ktn fields = - length fields /= 10 ==> + length fields /= 10 && length fields /= 11 ==> case Text.loadInst nl fields of Types.Ok _ -> failTest "Managed to load instance from invalid data" Types.Bad msg -> printTestCase ("Unrecognised error message: " ++ msg) $ diff --git a/htools/Ganeti/HTools/Text.hs b/htools/Ganeti/HTools/Text.hs index fc943e996..957758cb4 100644 --- a/htools/Ganeti/HTools/Text.hs +++ b/htools/Ganeti/HTools/Text.hs @@ -102,12 +102,12 @@ serializeInstance nl inst = snode = (if sidx == Node.noSecondary then "" else Container.nameOf nl sidx) - in printf "%s|%d|%d|%d|%s|%s|%s|%s|%s|%s" + in printf "%s|%d|%d|%d|%s|%s|%s|%s|%s|%s|%d" iname (Instance.mem inst) (Instance.dsk inst) (Instance.vcpus inst) (instanceStatusToRaw (Instance.runSt inst)) (if Instance.autoBalance inst then "Y" else "N") pnode snode (diskTemplateToRaw (Instance.diskTemplate inst)) - (intercalate "," (Instance.tags inst)) + (intercalate "," (Instance.tags inst)) (Instance.spindleUsage inst) -- | Generate instance file data from instance objects. serializeInstances :: Node.List -> Instance.List -> String @@ -206,7 +206,7 @@ loadInst :: NameAssoc -- ^ Association list with the current nodes -- instance name and -- the instance object loadInst ktn [ name, mem, dsk, vcpus, status, auto_bal, pnode, snode - , dt, tags ] = do + , dt, tags, su ] = do pidx <- lookupNode ktn name pnode sidx <- if null snode then return Node.noSecondary @@ -222,12 +222,18 @@ loadInst ktn [ name, mem, dsk, vcpus, status, auto_bal, pnode, snode "' for instance " ++ name disk_template <- annotateResult ("Instance " ++ name) (diskTemplateFromRaw dt) + spindle_usage <- tryRead name su when (sidx == pidx) $ fail $ "Instance " ++ name ++ " has same primary and secondary node - " ++ pnode let vtags = commaSplit tags newinst = Instance.create name vmem vdsk vvcpus vstatus vtags - auto_balance pidx sidx disk_template 1 + auto_balance pidx sidx disk_template spindle_usage return (name, newinst) + +loadInst ktn [ name, mem, dsk, vcpus, status, auto_bal, pnode, snode + , dt, tags ] = loadInst ktn [ name, mem, dsk, vcpus, status, + auto_bal, pnode, snode, dt, tags, + "1" ] loadInst _ s = fail $ "Invalid/incomplete instance data: '" ++ show s ++ "'" -- | Loads a spec from a field list. -- GitLab