Revision 2724417c src/Ganeti/HTools/Backend/Text.hs
b/src/Ganeti/HTools/Backend/Text.hs | ||
---|---|---|
111 | 111 |
snode = (if sidx == Node.noSecondary |
112 | 112 |
then "" |
113 | 113 |
else Container.nameOf nl sidx) |
114 |
in printf "%s|%d|%d|%d|%s|%s|%s|%s|%s|%s|%d" |
|
114 |
in printf "%s|%d|%d|%d|%s|%s|%s|%s|%s|%s|%d|%s"
|
|
115 | 115 |
iname (Instance.mem inst) (Instance.dsk inst) |
116 | 116 |
(Instance.vcpus inst) (instanceStatusToRaw (Instance.runSt inst)) |
117 | 117 |
(if Instance.autoBalance inst then "Y" else "N") |
118 | 118 |
pnode snode (diskTemplateToRaw (Instance.diskTemplate inst)) |
119 | 119 |
(intercalate "," (Instance.allTags inst)) (Instance.spindleUse inst) |
120 |
-- disk spindles are summed together, as it's done for disk size |
|
121 |
(case Instance.getTotalSpindles inst of |
|
122 |
Nothing -> "-" |
|
123 |
Just x -> show x) |
|
120 | 124 |
|
121 | 125 |
-- | Generate instance file data from instance objects. |
122 | 126 |
serializeInstances :: Node.List -> Instance.List -> String |
... | ... | |
244 | 248 |
-- instance name and |
245 | 249 |
-- the instance object |
246 | 250 |
loadInst ktn [ name, mem, dsk, vcpus, status, auto_bal, pnode, snode |
247 |
, dt, tags, su ] = do |
|
251 |
, dt, tags, su, spindles ] = do
|
|
248 | 252 |
pidx <- lookupNode ktn name pnode |
249 | 253 |
sidx <- if null snode |
250 | 254 |
then return Node.noSecondary |
251 | 255 |
else lookupNode ktn name snode |
252 | 256 |
vmem <- tryRead name mem |
253 |
vdsk <- tryRead name dsk
|
|
257 |
dsize <- tryRead name dsk
|
|
254 | 258 |
vvcpus <- tryRead name vcpus |
255 | 259 |
vstatus <- instanceStatusFromRaw status |
256 | 260 |
auto_balance <- case auto_bal of |
... | ... | |
261 | 265 |
disk_template <- annotateResult ("Instance " ++ name) |
262 | 266 |
(diskTemplateFromRaw dt) |
263 | 267 |
spindle_use <- tryRead name su |
268 |
vspindles <- case spindles of |
|
269 |
"-" -> return Nothing |
|
270 |
_ -> liftM Just (tryRead name spindles) |
|
271 |
let disk = Instance.Disk dsize vspindles |
|
264 | 272 |
let vtags = commaSplit tags |
265 |
newinst = Instance.create name vmem vdsk [vdsk] vvcpus vstatus vtags
|
|
273 |
newinst = Instance.create name vmem dsize [disk] vvcpus vstatus vtags
|
|
266 | 274 |
auto_balance pidx sidx disk_template spindle_use [] |
267 | 275 |
when (Instance.hasSecondary newinst && sidx == pidx) . fail $ |
268 | 276 |
"Instance " ++ name ++ " has same primary and secondary node - " ++ pnode |
... | ... | |
272 | 280 |
, dt, tags ] = loadInst ktn [ name, mem, dsk, vcpus, status, |
273 | 281 |
auto_bal, pnode, snode, dt, tags, |
274 | 282 |
"1" ] |
283 |
|
|
284 |
loadInst ktn [ name, mem, dsk, vcpus, status, auto_bal, pnode, snode |
|
285 |
, dt, tags, su ] = |
|
286 |
loadInst ktn [ name, mem, dsk, vcpus, status, auto_bal, pnode, snode, dt |
|
287 |
, tags, su, "-" ] |
|
288 |
|
|
275 | 289 |
loadInst _ s = fail $ "Invalid/incomplete instance data: '" ++ show s ++ "'" |
276 | 290 |
|
277 | 291 |
-- | Loads a spec from a field list. |
Also available in: Unified diff