Revision 6488e5bc lib/cmdlib/common.py
b/lib/cmdlib/common.py | ||
---|---|---|
1142 | 1142 |
@raise errors.OpPrereqError: if the check fails. |
1143 | 1143 |
|
1144 | 1144 |
""" |
1145 |
if constants.DT_RBD in parameters:
|
|
1146 |
access = parameters[constants.DT_RBD].get(constants.RBD_ACCESS,
|
|
1147 |
constants.DISK_KERNELSPACE)
|
|
1145 |
for disk_template in parameters:
|
|
1146 |
access = parameters[disk_template].get(constants.LDP_ACCESS,
|
|
1147 |
constants.DISK_KERNELSPACE) |
|
1148 | 1148 |
if access not in constants.DISK_VALID_ACCESS_MODES: |
1149 | 1149 |
valid_vals_str = utils.CommaJoin(constants.DISK_VALID_ACCESS_MODES) |
1150 | 1150 |
raise errors.OpPrereqError("Invalid value of '{d}:{a}': '{v}' (expected" |
1151 |
" one of {o})".format(d=constants.DT_RBD,
|
|
1152 |
a=constants.RBD_ACCESS,
|
|
1151 |
" one of {o})".format(d=disk_template,
|
|
1152 |
a=constants.LDP_ACCESS,
|
|
1153 | 1153 |
v=access, |
1154 | 1154 |
o=valid_vals_str)) |
1155 | 1155 |
|
... | ... | |
1170 | 1170 |
""" |
1171 | 1171 |
CheckDiskAccessModeValidity(parameters) |
1172 | 1172 |
|
1173 |
if constants.DT_RBD in parameters: |
|
1174 |
access = parameters[constants.DT_RBD].get(constants.RBD_ACCESS, |
|
1175 |
constants.DISK_KERNELSPACE) |
|
1173 |
for disk_template in parameters: |
|
1174 |
access = parameters[disk_template].get(constants.LDP_ACCESS, |
|
1175 |
constants.DISK_KERNELSPACE) |
|
1176 |
|
|
1177 |
if dt not in constants.DTS_HAVE_ACCESS |
|
1178 |
continue |
|
1176 | 1179 |
|
1177 | 1180 |
#Check the combination of instance hypervisor, disk template and access |
1178 | 1181 |
#protocol is sane. |
... | ... | |
1180 | 1183 |
cfg.GetInstanceList() |
1181 | 1184 |
|
1182 | 1185 |
for entry in inst_uuids: |
1183 |
#hyp, disk, access |
|
1184 | 1186 |
inst = cfg.GetInstanceInfo(entry) |
1185 | 1187 |
hv = inst.hypervisor |
1186 | 1188 |
dt = inst.disk_template |
1187 | 1189 |
|
1188 |
#do not check for disk types that don't have this setting. |
|
1189 |
if dt != constants.DT_RBD: |
|
1190 |
continue |
|
1191 |
|
|
1192 | 1190 |
if not IsValidDiskAccessModeCombination(hv, dt, access): |
1193 | 1191 |
raise errors.OpPrereqError("Instance {i}: cannot use '{a}' access" |
1194 | 1192 |
" setting with {h} hypervisor and {d} disk" |
... | ... | |
1212 | 1210 |
return True |
1213 | 1211 |
|
1214 | 1212 |
if (hv == constants.HT_KVM and |
1215 |
disk_template == constants.DT_RBD and
|
|
1213 |
disk_template in (constants.DT_RBD, constants.DT_GLUSTER) and
|
|
1216 | 1214 |
mode == constants.DISK_USERSPACE): |
1217 | 1215 |
return True |
1218 | 1216 |
|
Also available in: Unified diff