bdev: Add a guard to verify disk parameters are set
authorRené Nussbaumer <rn@google.com>
Tue, 8 May 2012 09:16:11 +0000 (11:16 +0200)
committerRené Nussbaumer <rn@google.com>
Thu, 10 May 2012 11:30:47 +0000 (13:30 +0200)
Signed-off-by: René Nussbaumer <rn@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

lib/bdev.py

index 452e510..310ddf8 100644 (file)
@@ -2653,6 +2653,16 @@ def _VerifyDiskType(dev_type):
     raise errors.ProgrammerError("Invalid block device type '%s'" % dev_type)
 
 
+def _VerifyDiskParams(disk):
+  """Verifies if all disk parameters are set.
+
+  """
+  missing = set(constants.DISK_LD_DEFAULTS[disk.dev_type]) - set(disk.params)
+  if missing:
+    raise errors.ProgrammerError("Block device is missing disk parameters: %s" %
+                                 missing)
+
+
 def FindDevice(disk, children):
   """Search for an existing, assembled device.
 
@@ -2688,6 +2698,7 @@ def Assemble(disk, children):
 
   """
   _VerifyDiskType(disk.dev_type)
+  _VerifyDiskParams(disk)
   device = DEV_MAP[disk.dev_type](disk.physical_id, children, disk.size,
                                   disk.params)
   device.Assemble()
@@ -2705,6 +2716,7 @@ def Create(disk, children):
 
   """
   _VerifyDiskType(disk.dev_type)
+  _VerifyDiskParams(disk)
   device = DEV_MAP[disk.dev_type].Create(disk.physical_id, children, disk.size,
                                          disk.params)
   return device