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