Revision 0f511c8a 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 |
, MinMaxISpecs(..) |
|
72 | 70 |
, FilledIPolicy(..) |
73 | 71 |
, PartialIPolicy(..) |
74 | 72 |
, fillIPolicy |
... | ... | |
505 | 503 |
, simpleField C.ispecSpindleUse [t| Int |] |
506 | 504 |
]) |
507 | 505 |
|
508 |
-- | Partial min-max instance specs. These is not built via buildParam since |
|
509 |
-- it has a special 2-level inheritance mode. |
|
510 |
$(buildObject "PartialMinMaxISpecs" "mmis" |
|
511 |
[ renameField "MinSpecP" $ simpleField "min" [t| PartialISpecParams |] |
|
512 |
, renameField "MaxSpecP" $ simpleField "max" [t| PartialISpecParams |] |
|
513 |
]) |
|
514 |
|
|
515 |
-- | Filled min-max instance specs. This is not built via buildParam since |
|
516 |
-- it has a special 2-level inheritance mode. |
|
517 |
$(buildObject "FilledMinMaxISpecs" "mmis" |
|
506 |
$(buildObject "MinMaxISpecs" "mmis" |
|
518 | 507 |
[ renameField "MinSpec" $ simpleField "min" [t| FilledISpecParams |] |
519 | 508 |
, renameField "MaxSpec" $ simpleField "max" [t| FilledISpecParams |] |
520 | 509 |
]) |
... | ... | |
523 | 512 |
-- has a special 2-level inheritance mode. |
524 | 513 |
$(buildObject "PartialIPolicy" "ipolicy" |
525 | 514 |
[ optionalField . renameField "MinMaxISpecsP" |
526 |
$ simpleField C.ispecsMinmax [t| PartialMinMaxISpecs |] |
|
527 |
, renameField "StdSpecP" $ simpleField "std" [t| PartialISpecParams |] |
|
515 |
$ simpleField C.ispecsMinmax [t| MinMaxISpecs |] |
|
516 |
, optionalField . renameField "StdSpecP" |
|
517 |
$ simpleField "std" [t| PartialISpecParams |] |
|
528 | 518 |
, optionalField . renameField "SpindleRatioP" |
529 | 519 |
$ simpleField "spindle-ratio" [t| Double |] |
530 | 520 |
, optionalField . renameField "VcpuRatioP" |
... | ... | |
537 | 527 |
-- has a special 2-level inheritance mode. |
538 | 528 |
$(buildObject "FilledIPolicy" "ipolicy" |
539 | 529 |
[ renameField "MinMaxISpecs" |
540 |
$ simpleField C.ispecsMinmax [t| FilledMinMaxISpecs |]
|
|
530 |
$ simpleField C.ispecsMinmax [t| MinMaxISpecs |] |
|
541 | 531 |
, renameField "StdSpec" $ simpleField "std" [t| FilledISpecParams |] |
542 | 532 |
, simpleField "spindle-ratio" [t| Double |] |
543 | 533 |
, simpleField "vcpu-ratio" [t| Double |] |
544 | 534 |
, simpleField "disk-templates" [t| [DiskTemplate] |] |
545 | 535 |
]) |
546 | 536 |
|
547 |
-- | Custom filler for the min-max instance specs. |
|
548 |
fillMinMaxISpecs :: FilledMinMaxISpecs -> Maybe PartialMinMaxISpecs -> |
|
549 |
FilledMinMaxISpecs |
|
550 |
fillMinMaxISpecs fminmax Nothing = fminmax |
|
551 |
fillMinMaxISpecs (FilledMinMaxISpecs { mmisMinSpec = fmin |
|
552 |
, mmisMaxSpec = fmax }) |
|
553 |
(Just PartialMinMaxISpecs { mmisMinSpecP = pmin |
|
554 |
, mmisMaxSpecP = pmax }) = |
|
555 |
FilledMinMaxISpecs { mmisMinSpec = fillISpecParams fmin pmin |
|
556 |
, mmisMaxSpec = fillISpecParams fmax pmax } |
|
557 |
|
|
558 | 537 |
-- | Custom filler for the ipolicy types. |
559 | 538 |
fillIPolicy :: FilledIPolicy -> PartialIPolicy -> FilledIPolicy |
560 | 539 |
fillIPolicy (FilledIPolicy { ipolicyMinMaxISpecs = fminmax |
... | ... | |
567 | 546 |
, ipolicySpindleRatioP = pspindleRatio |
568 | 547 |
, ipolicyVcpuRatioP = pvcpuRatio |
569 | 548 |
, ipolicyDiskTemplatesP = pdiskTemplates}) = |
570 |
FilledIPolicy { ipolicyMinMaxISpecs = fillMinMaxISpecs fminmax pminmax |
|
571 |
, ipolicyStdSpec = fillISpecParams fstd pstd |
|
549 |
FilledIPolicy { ipolicyMinMaxISpecs = fromMaybe fminmax pminmax |
|
550 |
, ipolicyStdSpec = case pstd of |
|
551 |
Nothing -> fstd |
|
552 |
Just p -> fillISpecParams fstd p |
|
572 | 553 |
, ipolicySpindleRatio = fromMaybe fspindleRatio pspindleRatio |
573 | 554 |
, ipolicyVcpuRatio = fromMaybe fvcpuRatio pvcpuRatio |
574 | 555 |
, ipolicyDiskTemplates = fromMaybe fdiskTemplates |
Also available in: Unified diff