Revision cd46491f lib/rpc.py
b/lib/rpc.py | ||
---|---|---|
575 | 575 |
return [(d.ToDict(), uid) for d, uid in value] |
576 | 576 |
|
577 | 577 |
|
578 |
def _AnnotateDParamsDRBD(disk, (drbd_params, data_params, meta_params)): |
|
579 |
"""Annotates just DRBD disks layouts. |
|
580 |
|
|
581 |
""" |
|
582 |
assert disk.dev_type == constants.LD_DRBD8 |
|
583 |
|
|
584 |
disk.params = objects.FillDict(drbd_params, disk.params) |
|
585 |
(dev_data, dev_meta) = disk.children |
|
586 |
dev_data.params = objects.FillDict(data_params, dev_data.params) |
|
587 |
dev_meta.params = objects.FillDict(meta_params, dev_meta.params) |
|
588 |
|
|
589 |
return disk |
|
590 |
|
|
591 |
|
|
592 |
def _AnnotateDParamsGeneric(disk, (params, )): |
|
593 |
"""Generic disk parameter annotation routine. |
|
594 |
|
|
595 |
""" |
|
596 |
assert disk.dev_type != constants.LD_DRBD8 |
|
597 |
|
|
598 |
disk.params = objects.FillDict(params, disk.params) |
|
599 |
|
|
600 |
return disk |
|
601 |
|
|
602 |
|
|
603 |
def AnnotateDiskParams(template, disks, disk_params): |
|
604 |
"""Annotates the disk objects with the disk parameters. |
|
605 |
|
|
606 |
@param template: The disk template used |
|
607 |
@param disks: The list of disks objects to annotate |
|
608 |
@param disk_params: The disk paramaters for annotation |
|
609 |
@returns: A list of disk objects annotated |
|
610 |
|
|
611 |
""" |
|
612 |
ld_params = objects.Disk.ComputeLDParams(template, disk_params) |
|
613 |
|
|
614 |
if template == constants.DT_DRBD8: |
|
615 |
annotation_fn = _AnnotateDParamsDRBD |
|
616 |
elif template == constants.DT_DISKLESS: |
|
617 |
annotation_fn = lambda disk, _: disk |
|
618 |
else: |
|
619 |
annotation_fn = _AnnotateDParamsGeneric |
|
620 |
|
|
621 |
new_disks = [] |
|
622 |
for disk in disks: |
|
623 |
new_disks.append(annotation_fn(disk.Copy(), ld_params)) |
|
624 |
|
|
625 |
return new_disks |
|
626 |
|
|
627 |
|
|
578 | 628 |
#: Generic encoders |
579 | 629 |
_ENCODERS = { |
580 | 630 |
rpc_defs.ED_OBJECT_DICT: _ObjectToDict, |
Also available in: Unified diff