Add default file_driver if missing
authorMichele Tartara <mtartara@google.com>
Wed, 4 Dec 2013 17:49:50 +0000 (18:49 +0100)
committerMichele Tartara <mtartara@google.com>
Thu, 5 Dec 2013 09:39:11 +0000 (10:39 +0100)
If the file driver of an instance with file based storage is not specified, the
default one is automatically added by the UpgradeConfig function.

Fixes Issue 571.

Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

lib/cmdlib/instance.py
lib/constants.py
lib/objects.py

index adf8d59..e922800 100644 (file)
@@ -408,7 +408,7 @@ class LUInstanceCreate(LogicalUnit):
     if (not self.op.file_driver and
         self.op.disk_template in [constants.DT_FILE,
                                   constants.DT_SHARED_FILE]):
     if (not self.op.file_driver and
         self.op.disk_template in [constants.DT_FILE,
                                   constants.DT_SHARED_FILE]):
-      self.op.file_driver = constants.FD_LOOP
+      self.op.file_driver = constants.FD_DEFAULT
 
     if self.op.disk_template == constants.DT_FILE:
       opcodes.RequireFileStorage()
 
     if self.op.disk_template == constants.DT_FILE:
       opcodes.RequireFileStorage()
index dd4b777..d8b6063 100644 (file)
@@ -615,6 +615,7 @@ RBD_CMD = "rbd"
 # file backend driver
 FD_LOOP = "loop"
 FD_BLKTAP = "blktap"
 # file backend driver
 FD_LOOP = "loop"
 FD_BLKTAP = "blktap"
+FD_DEFAULT = FD_LOOP
 
 # the set of drbd-like disk types
 LDS_DRBD = compat.UniqueFrozenset([LD_DRBD8])
 
 # the set of drbd-like disk types
 LDS_DRBD = compat.UniqueFrozenset([LD_DRBD8])
index ad9f1d7..1c8de13 100644 (file)
@@ -831,6 +831,10 @@ class Disk(ConfigObject):
     self.params = {}
     # add here config upgrade for this disk
 
     self.params = {}
     # add here config upgrade for this disk
 
+    # If the file driver is empty, fill it up with the default value
+    if self.dev_type == constants.LD_FILE and self.physical_id[0] is None:
+      self.physical_id[0] = constants.FD_DEFAULT
+
   @staticmethod
   def ComputeLDParams(disk_template, disk_params):
     """Computes Logical Disk parameters from Disk Template parameters.
   @staticmethod
   def ComputeLDParams(disk_template, disk_params):
     """Computes Logical Disk parameters from Disk Template parameters.