Revision da5f09ef src/Ganeti/Objects.hs
b/src/Ganeti/Objects.hs | ||
---|---|---|
66 | 66 |
, PartialISpecParams(..) |
67 | 67 |
, fillISpecParams |
68 | 68 |
, allISpecParamFields |
69 |
, FilledMinMaxISpecs(..) |
|
70 |
, PartialMinMaxISpecs(..) |
|
71 |
, fillMinMaxISpecs |
|
69 | 72 |
, FilledIPolicy(..) |
70 | 73 |
, PartialIPolicy(..) |
71 | 74 |
, fillIPolicy |
... | ... | |
491 | 494 |
, simpleField C.ispecSpindleUse [t| Int |] |
492 | 495 |
]) |
493 | 496 |
|
497 |
-- | Partial min-max instance specs. These is not built via buildParam since |
|
498 |
-- it has a special 2-level inheritance mode. |
|
499 |
$(buildObject "PartialMinMaxISpecs" "mmis" |
|
500 |
[ renameField "MinSpecP" $ simpleField "min" [t| PartialISpecParams |] |
|
501 |
, renameField "MaxSpecP" $ simpleField "max" [t| PartialISpecParams |] |
|
502 |
]) |
|
503 |
|
|
504 |
-- | Filled min-max instance specs. This is not built via buildParam since |
|
505 |
-- it has a special 2-level inheritance mode. |
|
506 |
$(buildObject "FilledMinMaxISpecs" "mmis" |
|
507 |
[ renameField "MinSpec" $ simpleField "min" [t| FilledISpecParams |] |
|
508 |
, renameField "MaxSpec" $ simpleField "max" [t| FilledISpecParams |] |
|
509 |
]) |
|
510 |
|
|
494 | 511 |
-- | Custom partial ipolicy. This is not built via buildParam since it |
495 | 512 |
-- has a special 2-level inheritance mode. |
496 | 513 |
$(buildObject "PartialIPolicy" "ipolicy" |
497 |
[ renameField "MinSpecP" $ simpleField "min" [t| PartialISpecParams |]
|
|
498 |
, renameField "MaxSpecP" $ simpleField "max" [t| PartialISpecParams |]
|
|
514 |
[ optionalField . renameField "MinMaxISpecsP"
|
|
515 |
$ simpleField C.ispecsMinmax [t| PartialMinMaxISpecs |]
|
|
499 | 516 |
, renameField "StdSpecP" $ simpleField "std" [t| PartialISpecParams |] |
500 | 517 |
, optionalField . renameField "SpindleRatioP" |
501 | 518 |
$ simpleField "spindle-ratio" [t| Double |] |
... | ... | |
508 | 525 |
-- | Custom filled ipolicy. This is not built via buildParam since it |
509 | 526 |
-- has a special 2-level inheritance mode. |
510 | 527 |
$(buildObject "FilledIPolicy" "ipolicy" |
511 |
[ renameField "MinSpec" $ simpleField "min" [t| FilledISpecParams |]
|
|
512 |
, renameField "MaxSpec" $ simpleField "max" [t| FilledISpecParams |]
|
|
528 |
[ renameField "MinMaxISpecs"
|
|
529 |
$ simpleField C.ispecsMinmax [t| FilledMinMaxISpecs |]
|
|
513 | 530 |
, renameField "StdSpec" $ simpleField "std" [t| FilledISpecParams |] |
514 | 531 |
, simpleField "spindle-ratio" [t| Double |] |
515 | 532 |
, simpleField "vcpu-ratio" [t| Double |] |
516 | 533 |
, simpleField "disk-templates" [t| [DiskTemplate] |] |
517 | 534 |
]) |
518 | 535 |
|
536 |
-- | Custom filler for the min-max instance specs. |
|
537 |
fillMinMaxISpecs :: FilledMinMaxISpecs -> Maybe PartialMinMaxISpecs -> |
|
538 |
FilledMinMaxISpecs |
|
539 |
fillMinMaxISpecs fminmax Nothing = fminmax |
|
540 |
fillMinMaxISpecs (FilledMinMaxISpecs { mmisMinSpec = fmin |
|
541 |
, mmisMaxSpec = fmax }) |
|
542 |
(Just PartialMinMaxISpecs { mmisMinSpecP = pmin |
|
543 |
, mmisMaxSpecP = pmax }) = |
|
544 |
FilledMinMaxISpecs { mmisMinSpec = fillISpecParams fmin pmin |
|
545 |
, mmisMaxSpec = fillISpecParams fmax pmax } |
|
546 |
|
|
519 | 547 |
-- | Custom filler for the ipolicy types. |
520 | 548 |
fillIPolicy :: FilledIPolicy -> PartialIPolicy -> FilledIPolicy |
521 |
fillIPolicy (FilledIPolicy { ipolicyMinSpec = fmin |
|
522 |
, ipolicyMaxSpec = fmax |
|
549 |
fillIPolicy (FilledIPolicy { ipolicyMinMaxISpecs = fminmax |
|
523 | 550 |
, ipolicyStdSpec = fstd |
524 | 551 |
, ipolicySpindleRatio = fspindleRatio |
525 | 552 |
, ipolicyVcpuRatio = fvcpuRatio |
526 | 553 |
, ipolicyDiskTemplates = fdiskTemplates}) |
527 |
(PartialIPolicy { ipolicyMinSpecP = pmin |
|
528 |
, ipolicyMaxSpecP = pmax |
|
554 |
(PartialIPolicy { ipolicyMinMaxISpecsP = pminmax |
|
529 | 555 |
, ipolicyStdSpecP = pstd |
530 | 556 |
, ipolicySpindleRatioP = pspindleRatio |
531 | 557 |
, ipolicyVcpuRatioP = pvcpuRatio |
532 | 558 |
, ipolicyDiskTemplatesP = pdiskTemplates}) = |
533 |
FilledIPolicy { ipolicyMinSpec = fillISpecParams fmin pmin |
|
534 |
, ipolicyMaxSpec = fillISpecParams fmax pmax |
|
559 |
FilledIPolicy { ipolicyMinMaxISpecs = fillMinMaxISpecs fminmax pminmax |
|
535 | 560 |
, ipolicyStdSpec = fillISpecParams fstd pstd |
536 | 561 |
, ipolicySpindleRatio = fromMaybe fspindleRatio pspindleRatio |
537 | 562 |
, ipolicyVcpuRatio = fromMaybe fvcpuRatio pvcpuRatio |
Also available in: Unified diff