52 |
52 |
, fillNDParams
|
53 |
53 |
, Node(..)
|
54 |
54 |
, AllocPolicy(..)
|
|
55 |
, FilledISpecParams(..)
|
|
56 |
, PartialISpecParams(..)
|
|
57 |
, fillISpecParams
|
|
58 |
, FilledIPolicy(..)
|
|
59 |
, PartialIPolicy(..)
|
|
60 |
, fillIPolicy
|
55 |
61 |
, NodeGroup(..)
|
56 |
62 |
, IpFamily(..)
|
57 |
63 |
, ipFamilyToVersion
|
... | ... | |
289 |
295 |
++ uuidFields
|
290 |
296 |
++ serialFields)
|
291 |
297 |
|
|
298 |
-- * IPolicy definitions
|
|
299 |
|
|
300 |
$(buildParam "ISpec" "ispec" $
|
|
301 |
[ simpleField C.ispecMemSize [t| Int |]
|
|
302 |
, simpleField C.ispecDiskSize [t| Int |]
|
|
303 |
, simpleField C.ispecDiskCount [t| Int |]
|
|
304 |
, simpleField C.ispecCpuCount [t| Int |]
|
|
305 |
, simpleField C.ispecSpindleUse [t| Int |]
|
|
306 |
])
|
|
307 |
|
|
308 |
-- | Custom partial ipolicy. This is not built via buildParam since it
|
|
309 |
-- has a special 2-level inheritance mode.
|
|
310 |
$(buildObject "PartialIPolicy" "ipolicy" $
|
|
311 |
[ renameField "MinSpecP" $ simpleField "min" [t| PartialISpecParams |]
|
|
312 |
, renameField "MaxSpecP" $ simpleField "max" [t| PartialISpecParams |]
|
|
313 |
, renameField "StdSpecP" $ simpleField "std" [t| PartialISpecParams |]
|
|
314 |
, optionalField . renameField "SpindleRatioP"
|
|
315 |
$ simpleField "spindle-ratio" [t| Double |]
|
|
316 |
, optionalField . renameField "VcpuRatioP"
|
|
317 |
$ simpleField "vcpu-ratio" [t| Double |]
|
|
318 |
, optionalField . renameField "DiskTemplatesP"
|
|
319 |
$ simpleField "disk-templates" [t| [DiskTemplate] |]
|
|
320 |
])
|
|
321 |
|
|
322 |
-- | Custom filled ipolicy. This is not built via buildParam since it
|
|
323 |
-- has a special 2-level inheritance mode.
|
|
324 |
$(buildObject "FilledIPolicy" "ipolicy" $
|
|
325 |
[ renameField "MinSpec" $ simpleField "min" [t| FilledISpecParams |]
|
|
326 |
, renameField "MaxSpec" $ simpleField "max" [t| FilledISpecParams |]
|
|
327 |
, renameField "StdSpec" $ simpleField "std" [t| FilledISpecParams |]
|
|
328 |
, simpleField "spindle-ratio" [t| Double |]
|
|
329 |
, simpleField "vcpu-ratio" [t| Double |]
|
|
330 |
, simpleField "disk-templates" [t| [DiskTemplate] |]
|
|
331 |
])
|
|
332 |
|
|
333 |
-- | Custom filler for the ipolicy types.
|
|
334 |
fillIPolicy :: FilledIPolicy -> PartialIPolicy -> FilledIPolicy
|
|
335 |
fillIPolicy (FilledIPolicy { ipolicyMinSpec = fmin
|
|
336 |
, ipolicyMaxSpec = fmax
|
|
337 |
, ipolicyStdSpec = fstd
|
|
338 |
, ipolicySpindleRatio = fspindleRatio
|
|
339 |
, ipolicyVcpuRatio = fvcpuRatio
|
|
340 |
, ipolicyDiskTemplates = fdiskTemplates})
|
|
341 |
(PartialIPolicy { ipolicyMinSpecP = pmin
|
|
342 |
, ipolicyMaxSpecP = pmax
|
|
343 |
, ipolicyStdSpecP = pstd
|
|
344 |
, ipolicySpindleRatioP = pspindleRatio
|
|
345 |
, ipolicyVcpuRatioP = pvcpuRatio
|
|
346 |
, ipolicyDiskTemplatesP = pdiskTemplates}) =
|
|
347 |
FilledIPolicy { ipolicyMinSpec = fillISpecParams fmin pmin
|
|
348 |
, ipolicyMaxSpec = fillISpecParams fmax pmax
|
|
349 |
, ipolicyStdSpec = fillISpecParams fstd pstd
|
|
350 |
, ipolicySpindleRatio = fromMaybe fspindleRatio pspindleRatio
|
|
351 |
, ipolicyVcpuRatio = fromMaybe fvcpuRatio pvcpuRatio
|
|
352 |
, ipolicyDiskTemplates = fromMaybe fdiskTemplates
|
|
353 |
pdiskTemplates
|
|
354 |
}
|
292 |
355 |
-- * Node definitions
|
293 |
356 |
|
294 |
357 |
$(buildParam "ND" "ndp" $
|
295 |
|
[ simpleField "oob_program" [t| String |]
|
|
358 |
[ simpleField "oob_program" [t| String |]
|
|
359 |
, simpleField "spindle_count" [t| Int |]
|
296 |
360 |
])
|
297 |
361 |
|
298 |
362 |
$(buildObject "Node" "node" $
|
... | ... | |
333 |
397 |
[ simpleField "name" [t| String |]
|
334 |
398 |
, defaultField [| [] |] $ simpleField "members" [t| [String] |]
|
335 |
399 |
, simpleField "ndparams" [t| PartialNDParams |]
|
336 |
|
, simpleField "alloc_policy" [t| AllocPolicy |]
|
|
400 |
, simpleField "alloc_policy" [t| AllocPolicy |]
|
|
401 |
, simpleField "ipolicy" [t| PartialIPolicy |]
|
337 |
402 |
]
|
338 |
403 |
++ timeStampFields
|
339 |
404 |
++ uuidFields
|
... | ... | |
388 |
453 |
, simpleField "blacklisted_os" [t| [String] |]
|
389 |
454 |
, simpleField "primary_ip_family" [t| IpFamily |]
|
390 |
455 |
, simpleField "prealloc_wipe_disks" [t| Bool |]
|
|
456 |
, simpleField "ipolicy" [t| FilledIPolicy |]
|
391 |
457 |
]
|
392 |
458 |
++ serialFields
|
393 |
459 |
++ timeStampFields
|