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