From e2fe6369769de31adaf709355b615bb6b496399c Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Tue, 15 Apr 2008 12:34:27 +0000 Subject: [PATCH] Move the disk size computation to its own function This is currently hard-coded for the two drive case and will need to be reworked for multi-disk support. The patch is needed to support passing the total required size to the iallocator interface. Reviewed-by: ultrotter --- lib/cmdlib.py | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 45a0bfb9e..d41cf83b3 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -3089,6 +3089,28 @@ def _RemoveDisks(instance, cfg): return result +def _ComputeDiskSize(disk_template, disk_size, swap_size): + """Compute disk size requirements in the volume group + + This is currently hard-coded for the two-drive layout. + + """ + # Required free disk space as a function of disk and swap space + req_size_dict = { + constants.DT_DISKLESS: None, + constants.DT_PLAIN: disk_size + swap_size, + # 256 MB are added for drbd metadata, 128MB for each drbd device + constants.DT_DRBD8: disk_size + swap_size + 256, + constants.DT_FILE: None, + } + + if disk_template not in req_size_dict: + raise errors.ProgrammerError("Disk template '%s' size requirement" + " is unknown" % disk_template) + + return req_size_dict[disk_template] + + class LUCreateInstance(LogicalUnit): """Create an instance. @@ -3224,20 +3246,8 @@ class LUCreateInstance(LogicalUnit): " the primary node.") self.secondaries.append(snode_name) - # Required free disk space as a function of disk and swap space - req_size_dict = { - constants.DT_DISKLESS: None, - constants.DT_PLAIN: self.op.disk_size + self.op.swap_size, - # 256 MB are added for drbd metadata, 128MB for each drbd device - constants.DT_DRBD8: self.op.disk_size + self.op.swap_size + 256, - constants.DT_FILE: None, - } - - if self.op.disk_template not in req_size_dict: - raise errors.ProgrammerError("Disk template '%s' size requirement" - " is unknown" % self.op.disk_template) - - req_size = req_size_dict[self.op.disk_template] + req_size = _ComputeDiskSize(self.op.disk_template, + self.op.disk_size, self.op.swap_size) # Check lv size requirements if req_size is not None: -- GitLab