.... to make sure that we can use it later for checking disk modifications.
Signed-off-by: Hrvoje Ribicic <[email protected]> --- lib/cmdlib/instance_storage.py | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/lib/cmdlib/instance_storage.py b/lib/cmdlib/instance_storage.py index f24518d..a41383f 100644 --- a/lib/cmdlib/instance_storage.py +++ b/lib/cmdlib/instance_storage.py @@ -365,12 +365,7 @@ def ComputeDisks(disks, disk_template, default_vg): raise errors.OpPrereqError("Invalid disk size '%s'" % size, errors.ECODE_INVAL) - ext_provider = disk.get(constants.IDISK_PROVIDER, None) - if ext_provider and disk_template != constants.DT_EXT: - raise errors.OpPrereqError("The '%s' option is only valid for the %s" - " disk template, not %s" % - (constants.IDISK_PROVIDER, constants.DT_EXT, - disk_template), errors.ECODE_INVAL) + CheckDiskExtProvider(disk, disk_template) data_vg = disk.get(constants.IDISK_VG, default_vg) name = disk.get(constants.IDISK_NAME, None) @@ -400,14 +395,10 @@ def ComputeDisks(disks, disk_template, default_vg): # For extstorage, demand the `provider' option and add any # additional parameters (ext-params) to the dict if disk_template == constants.DT_EXT: - if ext_provider: - new_disk[constants.IDISK_PROVIDER] = ext_provider - for key in disk: - if key not in constants.IDISK_PARAMS: - new_disk[key] = disk[key] - else: - raise errors.OpPrereqError("Missing provider for template '%s'" % - constants.DT_EXT, errors.ECODE_INVAL) + new_disk[constants.IDISK_PROVIDER] = disk[constants.IDISK_PROVIDER] + for key in disk: + if key not in constants.IDISK_PARAMS: + new_disk[key] = disk[key] new_disks.append(new_disk) @@ -745,6 +736,28 @@ def CheckSpindlesExclusiveStorage(diskdict, es_flag, required): errors.ECODE_INVAL) +def CheckDiskExtProvider(diskdict, disk_template): + """Check that the given disk + + @type diskdict: dict + @param diskdict: disk parameters + @type disk_template: string + @param disk_template: the desired template of this disk + + """ + ext_provider = diskdict.get(constants.IDISK_PROVIDER, None) + + if ext_provider and disk_template != constants.DT_EXT: + raise errors.OpPrereqError("The '%s' option is only valid for the %s" + " disk template, not %s" % + (constants.IDISK_PROVIDER, constants.DT_EXT, + disk_template), errors.ECODE_INVAL) + + if ext_provider is None and disk_template == constants.DT_EXT: + raise errors.OpPrereqError("Missing provider for template '%s'" % + constants.DT_EXT, errors.ECODE_INVAL) + + class LUInstanceRecreateDisks(LogicalUnit): """Recreate an instance's missing disks. -- 2.2.0.rc0.207.ga3a616c
