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