Revision cd46491f
b/lib/cmdlib.py | ||
---|---|---|
8639 | 8639 |
return results |
8640 | 8640 |
|
8641 | 8641 |
|
8642 |
def _ComputeLDParams(disk_template, disk_params): |
|
8643 |
"""Computes Logical Disk parameters from Disk Template parameters. |
|
8644 |
|
|
8645 |
@type disk_template: string |
|
8646 |
@param disk_template: disk template, one of L{constants.DISK_TEMPLATES} |
|
8647 |
@type disk_params: dict |
|
8648 |
@param disk_params: disk template parameters; dict(template_name -> parameters |
|
8649 |
@rtype: list(dict) |
|
8650 |
@return: a list of dicts, one for each node of the disk hierarchy. Each dict |
|
8651 |
contains the LD parameters of the node. The tree is flattened in-order. |
|
8652 |
|
|
8653 |
""" |
|
8654 |
if disk_template not in constants.DISK_TEMPLATES: |
|
8655 |
raise errors.ProgrammerError("Unknown disk template %s" % disk_template) |
|
8656 |
|
|
8657 |
result = list() |
|
8658 |
dt_params = disk_params[disk_template] |
|
8659 |
if disk_template == constants.DT_DRBD8: |
|
8660 |
drbd_params = { |
|
8661 |
constants.LDP_RESYNC_RATE: dt_params[constants.DRBD_RESYNC_RATE], |
|
8662 |
constants.LDP_BARRIERS: dt_params[constants.DRBD_DISK_BARRIERS], |
|
8663 |
constants.LDP_NO_META_FLUSH: dt_params[constants.DRBD_META_BARRIERS], |
|
8664 |
constants.LDP_DEFAULT_METAVG: dt_params[constants.DRBD_DEFAULT_METAVG], |
|
8665 |
constants.LDP_DISK_CUSTOM: dt_params[constants.DRBD_DISK_CUSTOM], |
|
8666 |
constants.LDP_NET_CUSTOM: dt_params[constants.DRBD_NET_CUSTOM], |
|
8667 |
constants.LDP_DYNAMIC_RESYNC: dt_params[constants.DRBD_DYNAMIC_RESYNC], |
|
8668 |
constants.LDP_PLAN_AHEAD: dt_params[constants.DRBD_PLAN_AHEAD], |
|
8669 |
constants.LDP_FILL_TARGET: dt_params[constants.DRBD_FILL_TARGET], |
|
8670 |
constants.LDP_DELAY_TARGET: dt_params[constants.DRBD_DELAY_TARGET], |
|
8671 |
constants.LDP_MAX_RATE: dt_params[constants.DRBD_MAX_RATE], |
|
8672 |
constants.LDP_MIN_RATE: dt_params[constants.DRBD_MIN_RATE], |
|
8673 |
} |
|
8674 |
|
|
8675 |
drbd_params = \ |
|
8676 |
objects.FillDict(constants.DISK_LD_DEFAULTS[constants.LD_DRBD8], |
|
8677 |
drbd_params) |
|
8678 |
|
|
8679 |
result.append(drbd_params) |
|
8680 |
|
|
8681 |
# data LV |
|
8682 |
data_params = { |
|
8683 |
constants.LDP_STRIPES: dt_params[constants.DRBD_DATA_STRIPES], |
|
8684 |
} |
|
8685 |
data_params = \ |
|
8686 |
objects.FillDict(constants.DISK_LD_DEFAULTS[constants.LD_LV], |
|
8687 |
data_params) |
|
8688 |
result.append(data_params) |
|
8689 |
|
|
8690 |
# metadata LV |
|
8691 |
meta_params = { |
|
8692 |
constants.LDP_STRIPES: dt_params[constants.DRBD_META_STRIPES], |
|
8693 |
} |
|
8694 |
meta_params = \ |
|
8695 |
objects.FillDict(constants.DISK_LD_DEFAULTS[constants.LD_LV], |
|
8696 |
meta_params) |
|
8697 |
result.append(meta_params) |
|
8698 |
|
|
8699 |
elif (disk_template == constants.DT_FILE or |
|
8700 |
disk_template == constants.DT_SHARED_FILE): |
|
8701 |
result.append(constants.DISK_LD_DEFAULTS[constants.LD_FILE]) |
|
8702 |
|
|
8703 |
elif disk_template == constants.DT_PLAIN: |
|
8704 |
params = { |
|
8705 |
constants.LDP_STRIPES: dt_params[constants.LV_STRIPES], |
|
8706 |
} |
|
8707 |
params = \ |
|
8708 |
objects.FillDict(constants.DISK_LD_DEFAULTS[constants.LD_LV], |
|
8709 |
params) |
|
8710 |
result.append(params) |
|
8711 |
|
|
8712 |
elif disk_template == constants.DT_BLOCK: |
|
8713 |
result.append(constants.DISK_LD_DEFAULTS[constants.LD_BLOCKDEV]) |
|
8714 |
|
|
8715 |
elif disk_template == constants.DT_RBD: |
|
8716 |
params = { |
|
8717 |
constants.LDP_POOL: dt_params[constants.RBD_POOL] |
|
8718 |
} |
|
8719 |
params = \ |
|
8720 |
objects.FillDict(constants.DISK_LD_DEFAULTS[constants.LD_RBD], |
|
8721 |
params) |
|
8722 |
result.append(params) |
|
8723 |
|
|
8724 |
return result |
|
8725 |
|
|
8726 |
|
|
8727 | 8642 |
def _GenerateDRBD8Branch(lu, primary, secondary, size, vgnames, names, |
8728 | 8643 |
iv_name, p_minor, s_minor, drbd_params, data_params, |
8729 | 8644 |
meta_params): |
b/lib/objects.py | ||
---|---|---|
922 | 922 |
self.params) |
923 | 923 |
# add here config upgrade for this disk |
924 | 924 |
|
925 |
@staticmethod |
|
926 |
def ComputeLDParams(disk_template, disk_params): |
|
927 |
"""Computes Logical Disk parameters from Disk Template parameters. |
|
928 |
|
|
929 |
@type disk_template: string |
|
930 |
@param disk_template: disk template, one of L{constants.DISK_TEMPLATES} |
|
931 |
@type disk_params: dict |
|
932 |
@param disk_params: disk template parameters; |
|
933 |
dict(template_name -> parameters |
|
934 |
@rtype: list(dict) |
|
935 |
@return: a list of dicts, one for each node of the disk hierarchy. Each dict |
|
936 |
contains the LD parameters of the node. The tree is flattened in-order. |
|
937 |
|
|
938 |
""" |
|
939 |
if disk_template not in constants.DISK_TEMPLATES: |
|
940 |
raise errors.ProgrammerError("Unknown disk template %s" % disk_template) |
|
941 |
|
|
942 |
assert disk_template in disk_params |
|
943 |
|
|
944 |
result = list() |
|
945 |
dt_params = disk_params[disk_template] |
|
946 |
if disk_template == constants.DT_DRBD8: |
|
947 |
drbd_params = { |
|
948 |
constants.LDP_RESYNC_RATE: dt_params[constants.DRBD_RESYNC_RATE], |
|
949 |
constants.LDP_BARRIERS: dt_params[constants.DRBD_DISK_BARRIERS], |
|
950 |
constants.LDP_NO_META_FLUSH: dt_params[constants.DRBD_META_BARRIERS], |
|
951 |
constants.LDP_DEFAULT_METAVG: dt_params[constants.DRBD_DEFAULT_METAVG], |
|
952 |
constants.LDP_DISK_CUSTOM: dt_params[constants.DRBD_DISK_CUSTOM], |
|
953 |
constants.LDP_NET_CUSTOM: dt_params[constants.DRBD_NET_CUSTOM], |
|
954 |
constants.LDP_DYNAMIC_RESYNC: dt_params[constants.DRBD_DYNAMIC_RESYNC], |
|
955 |
constants.LDP_PLAN_AHEAD: dt_params[constants.DRBD_PLAN_AHEAD], |
|
956 |
constants.LDP_FILL_TARGET: dt_params[constants.DRBD_FILL_TARGET], |
|
957 |
constants.LDP_DELAY_TARGET: dt_params[constants.DRBD_DELAY_TARGET], |
|
958 |
constants.LDP_MAX_RATE: dt_params[constants.DRBD_MAX_RATE], |
|
959 |
constants.LDP_MIN_RATE: dt_params[constants.DRBD_MIN_RATE], |
|
960 |
} |
|
961 |
|
|
962 |
drbd_params = \ |
|
963 |
FillDict(constants.DISK_LD_DEFAULTS[constants.LD_DRBD8], |
|
964 |
drbd_params) |
|
965 |
|
|
966 |
result.append(drbd_params) |
|
967 |
|
|
968 |
# data LV |
|
969 |
data_params = { |
|
970 |
constants.LDP_STRIPES: dt_params[constants.DRBD_DATA_STRIPES], |
|
971 |
} |
|
972 |
data_params = \ |
|
973 |
FillDict(constants.DISK_LD_DEFAULTS[constants.LD_LV], |
|
974 |
data_params) |
|
975 |
result.append(data_params) |
|
976 |
|
|
977 |
# metadata LV |
|
978 |
meta_params = { |
|
979 |
constants.LDP_STRIPES: dt_params[constants.DRBD_META_STRIPES], |
|
980 |
} |
|
981 |
meta_params = \ |
|
982 |
FillDict(constants.DISK_LD_DEFAULTS[constants.LD_LV], |
|
983 |
meta_params) |
|
984 |
result.append(meta_params) |
|
985 |
|
|
986 |
elif (disk_template == constants.DT_FILE or |
|
987 |
disk_template == constants.DT_SHARED_FILE): |
|
988 |
result.append(constants.DISK_LD_DEFAULTS[constants.LD_FILE]) |
|
989 |
|
|
990 |
elif disk_template == constants.DT_PLAIN: |
|
991 |
params = { |
|
992 |
constants.LDP_STRIPES: dt_params[constants.LV_STRIPES], |
|
993 |
} |
|
994 |
params = \ |
|
995 |
FillDict(constants.DISK_LD_DEFAULTS[constants.LD_LV], |
|
996 |
params) |
|
997 |
result.append(params) |
|
998 |
|
|
999 |
elif disk_template == constants.DT_BLOCK: |
|
1000 |
result.append(constants.DISK_LD_DEFAULTS[constants.LD_BLOCKDEV]) |
|
1001 |
|
|
1002 |
elif disk_template == constants.DT_RBD: |
|
1003 |
params = { |
|
1004 |
constants.LDP_POOL: dt_params[constants.RBD_POOL] |
|
1005 |
} |
|
1006 |
params = \ |
|
1007 |
FillDict(constants.DISK_LD_DEFAULTS[constants.LD_RBD], |
|
1008 |
params) |
|
1009 |
result.append(params) |
|
1010 |
|
|
1011 |
return result |
|
1012 |
|
|
925 | 1013 |
|
926 | 1014 |
class InstancePolicy(ConfigObject): |
927 | 1015 |
"""Config object representing instance policy limits dictionary. |
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