Revision 52cc1370
b/htools/Ganeti/HTools/QC.hs | ||
---|---|---|
754 | 754 |
|
755 | 755 |
prop_Text_Load_Instance name mem dsk vcpus status |
756 | 756 |
(NonEmpty pnode) snode |
757 |
(NonNegative pdx) (NonNegative sdx) autobal dt = |
|
757 |
(NonNegative pdx) (NonNegative sdx) autobal dt su =
|
|
758 | 758 |
pnode /= snode && pdx /= sdx ==> |
759 | 759 |
let vcpus_s = show vcpus |
760 | 760 |
dsk_s = show dsk |
761 | 761 |
mem_s = show mem |
762 |
su_s = show su |
|
762 | 763 |
status_s = Types.instanceStatusToRaw status |
763 | 764 |
ndx = if null snode |
764 | 765 |
then [(pnode, pdx)] |
... | ... | |
769 | 770 |
sdt = Types.diskTemplateToRaw dt |
770 | 771 |
inst = Text.loadInst nl |
771 | 772 |
[name, mem_s, dsk_s, vcpus_s, status_s, |
772 |
sbal, pnode, snode, sdt, tags] |
|
773 |
sbal, pnode, snode, sdt, tags, su_s]
|
|
773 | 774 |
fail1 = Text.loadInst nl |
774 | 775 |
[name, mem_s, dsk_s, vcpus_s, status_s, |
775 | 776 |
sbal, pnode, pnode, tags] |
... | ... | |
789 | 790 |
then Node.noSecondary |
790 | 791 |
else sdx) && |
791 | 792 |
Instance.autoBalance i == autobal && |
793 |
Instance.spindleUsage i == su && |
|
792 | 794 |
Types.isBad fail1 |
793 | 795 |
|
794 | 796 |
prop_Text_Load_InstanceFail ktn fields = |
795 |
length fields /= 10 ==> |
|
797 |
length fields /= 10 && length fields /= 11 ==>
|
|
796 | 798 |
case Text.loadInst nl fields of |
797 | 799 |
Types.Ok _ -> failTest "Managed to load instance from invalid data" |
798 | 800 |
Types.Bad msg -> printTestCase ("Unrecognised error message: " ++ msg) $ |
b/htools/Ganeti/HTools/Text.hs | ||
---|---|---|
102 | 102 |
snode = (if sidx == Node.noSecondary |
103 | 103 |
then "" |
104 | 104 |
else Container.nameOf nl sidx) |
105 |
in printf "%s|%d|%d|%d|%s|%s|%s|%s|%s|%s" |
|
105 |
in printf "%s|%d|%d|%d|%s|%s|%s|%s|%s|%s|%d"
|
|
106 | 106 |
iname (Instance.mem inst) (Instance.dsk inst) |
107 | 107 |
(Instance.vcpus inst) (instanceStatusToRaw (Instance.runSt inst)) |
108 | 108 |
(if Instance.autoBalance inst then "Y" else "N") |
109 | 109 |
pnode snode (diskTemplateToRaw (Instance.diskTemplate inst)) |
110 |
(intercalate "," (Instance.tags inst)) |
|
110 |
(intercalate "," (Instance.tags inst)) (Instance.spindleUsage inst)
|
|
111 | 111 |
|
112 | 112 |
-- | Generate instance file data from instance objects. |
113 | 113 |
serializeInstances :: Node.List -> Instance.List -> String |
... | ... | |
206 | 206 |
-- instance name and |
207 | 207 |
-- the instance object |
208 | 208 |
loadInst ktn [ name, mem, dsk, vcpus, status, auto_bal, pnode, snode |
209 |
, dt, tags ] = do |
|
209 |
, dt, tags, su ] = do
|
|
210 | 210 |
pidx <- lookupNode ktn name pnode |
211 | 211 |
sidx <- if null snode |
212 | 212 |
then return Node.noSecondary |
... | ... | |
222 | 222 |
"' for instance " ++ name |
223 | 223 |
disk_template <- annotateResult ("Instance " ++ name) |
224 | 224 |
(diskTemplateFromRaw dt) |
225 |
spindle_usage <- tryRead name su |
|
225 | 226 |
when (sidx == pidx) $ fail $ "Instance " ++ name ++ |
226 | 227 |
" has same primary and secondary node - " ++ pnode |
227 | 228 |
let vtags = commaSplit tags |
228 | 229 |
newinst = Instance.create name vmem vdsk vvcpus vstatus vtags |
229 |
auto_balance pidx sidx disk_template 1
|
|
230 |
auto_balance pidx sidx disk_template spindle_usage
|
|
230 | 231 |
return (name, newinst) |
232 |
|
|
233 |
loadInst ktn [ name, mem, dsk, vcpus, status, auto_bal, pnode, snode |
|
234 |
, dt, tags ] = loadInst ktn [ name, mem, dsk, vcpus, status, |
|
235 |
auto_bal, pnode, snode, dt, tags, |
|
236 |
"1" ] |
|
231 | 237 |
loadInst _ s = fail $ "Invalid/incomplete instance data: '" ++ show s ++ "'" |
232 | 238 |
|
233 | 239 |
-- | Loads a spec from a field list. |
Also available in: Unified diff