Commit 52cc1370 authored by René Nussbaumer's avatar René Nussbaumer
Browse files

htools: Adapt the Text backend to spindle usage



The old text files remain compatible with this change.
Signed-off-by: default avatarRené Nussbaumer <rn@google.com>
Reviewed-by: default avatarIustin Pop <iustin@google.com>
parent 981bb5cf
......@@ -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) $
......
......@@ -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.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment