Revision d953a965

b/htools/Ganeti/HTools/QC.hs
116 116
                                       , Types.iSpecDiskSize   = 0
117 117
                                       , Types.iSpecDiskCount  = 0
118 118
                                       , Types.iSpecNicCount   = 0
119
                                       , Types.iSpecSpindleUse = 0
119 120
                                       }
120 121
  , Types.iPolicyMaxSpec = Types.ISpec { Types.iSpecMemorySize = maxBound
121 122
                                       , Types.iSpecCpuCount   = maxBound
122 123
                                       , Types.iSpecDiskSize   = maxBound
123 124
                                       , Types.iSpecDiskCount  = C.maxDisks
124 125
                                       , Types.iSpecNicCount   = C.maxNics
126
                                       , Types.iSpecSpindleUse = maxBound
125 127
                                       }
126 128
  , Types.iPolicyStdSpec = Types.ISpec { Types.iSpecMemorySize = Types.unitMem
127 129
                                       , Types.iSpecCpuCount   = Types.unitCpu
128 130
                                       , Types.iSpecDiskSize   = Types.unitDsk
129 131
                                       , Types.iSpecDiskCount  = 1
130 132
                                       , Types.iSpecNicCount   = 1
133
                                       , Types.iSpecSpindleUse = 1
131 134
                                       }
132 135
  , Types.iPolicyDiskTemplates = [Types.DTDrbd8, Types.DTPlain]
133 136
  , Types.iPolicyVcpuRatio = maxVcpuRatio -- somewhat random value, high
......
432 435
    dsk_s <- arbitrary::Gen (NonNegative Int)
433 436
    cpu_c <- arbitrary::Gen (NonNegative Int)
434 437
    nic_c <- arbitrary::Gen (NonNegative Int)
438
    su    <- arbitrary::Gen (NonNegative Int)
435 439
    return Types.ISpec { Types.iSpecMemorySize = fromIntegral mem_s
436 440
                       , Types.iSpecCpuCount   = fromIntegral cpu_c
437 441
                       , Types.iSpecDiskSize   = fromIntegral dsk_s
438 442
                       , Types.iSpecDiskCount  = fromIntegral dsk_c
439 443
                       , Types.iSpecNicCount   = fromIntegral nic_c
444
                       , Types.iSpecSpindleUse = fromIntegral su
440 445
                       }
441 446

  
442 447
-- | Generates an ispec bigger than the given one.
......
447 452
  dsk_s <- choose (Types.iSpecDiskSize imin, maxBound)
448 453
  cpu_c <- choose (Types.iSpecCpuCount imin, maxBound)
449 454
  nic_c <- choose (Types.iSpecNicCount imin, maxBound)
455
  su    <- choose (Types.iSpecSpindleUse imin, maxBound)
450 456
  return Types.ISpec { Types.iSpecMemorySize = fromIntegral mem_s
451 457
                     , Types.iSpecCpuCount   = fromIntegral cpu_c
452 458
                     , Types.iSpecDiskSize   = fromIntegral dsk_s
453 459
                     , Types.iSpecDiskCount  = fromIntegral dsk_c
454 460
                     , Types.iSpecNicCount   = fromIntegral nic_c
461
                     , Types.iSpecSpindleUse = fromIntegral su
455 462
                     }
456 463

  
457 464
instance Arbitrary Types.IPolicy where
b/htools/Ganeti/HTools/Text.hs
118 118
serializeISpec :: ISpec -> String
119 119
serializeISpec ispec =
120 120
  -- this needs to be kept in sync with the object definition
121
  let ISpec mem_s cpu_c disk_s disk_c nic_c = ispec
122
      strings = [show mem_s, show cpu_c, show disk_s, show disk_c, show nic_c]
121
  let ISpec mem_s cpu_c disk_s disk_c nic_c su = ispec
122
      strings = [show mem_s, show cpu_c, show disk_s, show disk_c, show nic_c,
123
                 show su]
123 124
  in intercalate "," strings
124 125

  
125 126
-- | Generate disk template data.
......
238 239

  
239 240
-- | Loads a spec from a field list.
240 241
loadISpec :: String -> [String] -> Result ISpec
241
loadISpec owner [mem_s, cpu_c, dsk_s, dsk_c, nic_c] = do
242
loadISpec owner [mem_s, cpu_c, dsk_s, dsk_c, nic_c, su] = do
242 243
  xmem_s <- tryRead (owner ++ "/memsize") mem_s
243 244
  xcpu_c <- tryRead (owner ++ "/cpucount") cpu_c
244 245
  xdsk_s <- tryRead (owner ++ "/disksize") dsk_s
245 246
  xdsk_c <- tryRead (owner ++ "/diskcount") dsk_c
246 247
  xnic_c <- tryRead (owner ++ "/niccount") nic_c
247
  return $ ISpec xmem_s xcpu_c xdsk_s xdsk_c xnic_c
248
  xsu    <- tryRead (owner ++ "/spindleuse") su
249
  return $ ISpec xmem_s xcpu_c xdsk_s xdsk_c xnic_c xsu
248 250
loadISpec owner s = fail $ "Invalid ispec data for " ++ owner ++ ": " ++ show s
249 251

  
250 252
-- | Loads an ipolicy from a field list.
b/htools/Ganeti/HTools/Types.hs
192 192

  
193 193
-- | Instance specification type.
194 194
$(THH.buildObject "ISpec" "iSpec"
195
  [ THH.renameField "MemorySize" $ THH.simpleField C.ispecMemSize   [t| Int |]
196
  , THH.renameField "CpuCount"   $ THH.simpleField C.ispecCpuCount  [t| Int |]
197
  , THH.renameField "DiskSize"   $ THH.simpleField C.ispecDiskSize  [t| Int |]
198
  , THH.renameField "DiskCount"  $ THH.simpleField C.ispecDiskCount [t| Int |]
199
  , THH.renameField "NicCount"   $ THH.simpleField C.ispecNicCount  [t| Int |]
195
  [ THH.renameField "MemorySize"   $ THH.simpleField C.ispecMemSize      [t| Int |]
196
  , THH.renameField "CpuCount"     $ THH.simpleField C.ispecCpuCount     [t| Int |]
197
  , THH.renameField "DiskSize"     $ THH.simpleField C.ispecDiskSize     [t| Int |]
198
  , THH.renameField "DiskCount"    $ THH.simpleField C.ispecDiskCount    [t| Int |]
199
  , THH.renameField "NicCount"     $ THH.simpleField C.ispecNicCount     [t| Int |]
200
  , THH.renameField "SpindleUse"   $ THH.simpleField C.ispecSpindleUse   [t| Int |]
200 201
  ])
201 202

  
202 203
-- | The default minimum ispec.
......
206 207
                    , iSpecDiskSize   = C.ipolicyDefaultsMinDiskSize
207 208
                    , iSpecDiskCount  = C.ipolicyDefaultsMinDiskCount
208 209
                    , iSpecNicCount   = C.ipolicyDefaultsMinNicCount
210
                    , iSpecSpindleUse = C.ipolicyDefaultsMinSpindleUse
209 211
                    }
210 212

  
211 213
-- | The default standard ispec.
......
215 217
                    , iSpecDiskSize   = C.ipolicyDefaultsStdDiskSize
216 218
                    , iSpecDiskCount  = C.ipolicyDefaultsStdDiskCount
217 219
                    , iSpecNicCount   = C.ipolicyDefaultsStdNicCount
220
                    , iSpecSpindleUse = C.ipolicyDefaultsStdSpindleUse
218 221
                    }
219 222

  
220 223
-- | The default max ispec.
......
224 227
                    , iSpecDiskSize   = C.ipolicyDefaultsMaxDiskSize
225 228
                    , iSpecDiskCount  = C.ipolicyDefaultsMaxDiskCount
226 229
                    , iSpecNicCount   = C.ipolicyDefaultsMaxNicCount
230
                    , iSpecSpindleUse = C.ipolicyDefaultsMaxSpindleUse
227 231
                    }
228 232

  
229 233
-- | Instance policy type.

Also available in: Unified diff