commit fe96220b7c7555beb584bd141fcba461fc0b45e2
Author: Iustin Pop <iustin@google.com>
Date:   Fri Oct 19 11:48:00 2007 +0000

    Abstract more strings values into constants
    
    Currently, the disk types are defined using constants in the code.
    Convert those into constants so that we can easily find them and check
    their usage.
    
    Note that we don't rename the values of the constants as they are used
    in the configuration file, and as such it's best to leave them as they
    are.
    
    Reviewed-by: imsnah

diff --git a/lib/backend.py b/lib/backend.py
index d2c154a..78ce381 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -1093,7 +1093,7 @@ def SnapshotBlockDevice(disk):
         if child.size == disk.size:
           # return implies breaking the loop
           return SnapshotBlockDevice(child)
-  elif disk.dev_type == "lvm":
+  elif disk.dev_type == constants.LD_LV:
     r_dev = _RecursiveFindBD(disk)
     if r_dev is not None:
       # let's stay on the safe side and ask for the full size, for now
diff --git a/lib/bdev.py b/lib/bdev.py
index 94ce454..473e4a4 100644
--- a/lib/bdev.py
+++ b/lib/bdev.py
@@ -28,6 +28,7 @@ import errno
 from ganeti import utils
 from ganeti import logger
 from ganeti import errors
+from ganeti import constants
 
 
 class BlockDev(object):
@@ -1522,9 +1523,9 @@ class DRBDev(BlockDev):
 
 
 DEV_MAP = {
-  "lvm": LogicalVolume,
-  "md_raid1": MDRaid1,
-  "drbd": DRBDev,
+  constants.LD_LV: LogicalVolume,
+  constants.LD_MD_R1: MDRaid1,
+  constants.LD_DRBD7: DRBDev,
   }
 
 
diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 2fce8a2..e316e7e 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -2620,11 +2620,11 @@ def _GenerateMDDRBDBranch(cfg, primary, secondary, size, names):
   """
   port = cfg.AllocatePort()
   vgname = cfg.GetVGName()
-  dev_data = objects.Disk(dev_type="lvm", size=size,
+  dev_data = objects.Disk(dev_type=constants.LD_LV, size=size,
                           logical_id=(vgname, names[0]))
-  dev_meta = objects.Disk(dev_type="lvm", size=128,
+  dev_meta = objects.Disk(dev_type=constants.LD_LV, size=128,
                           logical_id=(vgname, names[1]))
-  drbd_dev = objects.Disk(dev_type="drbd", size=size,
+  drbd_dev = objects.Disk(dev_type=constants.LD_DRBD7, size=size,
                           logical_id = (primary, secondary, port),
                           children = [dev_data, dev_meta])
   return drbd_dev
@@ -2646,10 +2646,10 @@ def _GenerateDiskTemplate(cfg, template_name,
       raise errors.ProgrammerError("Wrong template configuration")
 
     names = _GenerateUniqueNames(cfg, [".sda", ".sdb"])
-    sda_dev = objects.Disk(dev_type="lvm", size=disk_sz,
+    sda_dev = objects.Disk(dev_type=constants.LD_LV, size=disk_sz,
                            logical_id=(vgname, names[0]),
                            iv_name = "sda")
-    sdb_dev = objects.Disk(dev_type="lvm", size=swap_sz,
+    sdb_dev = objects.Disk(dev_type=constants.LD_LV, size=swap_sz,
                            logical_id=(vgname, names[1]),
                            iv_name = "sdb")
     disks = [sda_dev, sdb_dev]
@@ -2660,18 +2660,18 @@ def _GenerateDiskTemplate(cfg, template_name,
 
     names = _GenerateUniqueNames(cfg, [".sda_m1", ".sda_m2",
                                        ".sdb_m1", ".sdb_m2"])
-    sda_dev_m1 = objects.Disk(dev_type="lvm", size=disk_sz,
+    sda_dev_m1 = objects.Disk(dev_type=constants.LD_LV, size=disk_sz,
                               logical_id=(vgname, names[0]))
-    sda_dev_m2 = objects.Disk(dev_type="lvm", size=disk_sz,
+    sda_dev_m2 = objects.Disk(dev_type=constants.LD_LV, size=disk_sz,
                               logical_id=(vgname, names[1]))
-    md_sda_dev = objects.Disk(dev_type="md_raid1", iv_name = "sda",
+    md_sda_dev = objects.Disk(dev_type=constants.LD_MD_R1, iv_name = "sda",
                               size=disk_sz,
                               children = [sda_dev_m1, sda_dev_m2])
-    sdb_dev_m1 = objects.Disk(dev_type="lvm", size=swap_sz,
+    sdb_dev_m1 = objects.Disk(dev_type=constants.LD_LV, size=swap_sz,
                               logical_id=(vgname, names[2]))
-    sdb_dev_m2 = objects.Disk(dev_type="lvm", size=swap_sz,
+    sdb_dev_m2 = objects.Disk(dev_type=constants.LD_LV, size=swap_sz,
                               logical_id=(vgname, names[3]))
-    md_sdb_dev = objects.Disk(dev_type="md_raid1", iv_name = "sdb",
+    md_sdb_dev = objects.Disk(dev_type=constants.LD_MD_R1, iv_name = "sdb",
                               size=swap_sz,
                               children = [sdb_dev_m1, sdb_dev_m2])
     disks = [md_sda_dev, md_sdb_dev]
@@ -2683,11 +2683,11 @@ def _GenerateDiskTemplate(cfg, template_name,
                                        ".sdb_data", ".sdb_meta"])
     drbd_sda_dev = _GenerateMDDRBDBranch(cfg, primary_node, remote_node,
                                          disk_sz, names[0:2])
-    md_sda_dev = objects.Disk(dev_type="md_raid1", iv_name="sda",
+    md_sda_dev = objects.Disk(dev_type=constants.LD_MD_R1, iv_name="sda",
                               children = [drbd_sda_dev], size=disk_sz)
     drbd_sdb_dev = _GenerateMDDRBDBranch(cfg, primary_node, remote_node,
                                          swap_sz, names[2:4])
-    md_sdb_dev = objects.Disk(dev_type="md_raid1", iv_name="sdb",
+    md_sdb_dev = objects.Disk(dev_type=constants.LD_MD_R1, iv_name="sdb",
                               children = [drbd_sdb_dev], size=swap_sz)
     disks = [md_sda_dev, md_sdb_dev]
   else:
@@ -3256,7 +3256,8 @@ class LURemoveMDDRBDComponent(LogicalUnit):
       raise errors.OpPrereqError("Can't find this device ('%s') in the"
                                  " instance." % self.op.disk_name)
     for child in disk.children:
-      if child.dev_type == "drbd" and child.logical_id[2] == self.op.disk_id:
+      if (child.dev_type == constants.LD_DRBD7 and
+          child.logical_id[2] == self.op.disk_id):
         break
     else:
       raise errors.OpPrereqError("Can't find the device with this port.")
@@ -3479,7 +3480,7 @@ class LUQueryInstanceData(NoHooksLU):
     """
     self.cfg.SetDiskID(dev, instance.primary_node)
     dev_pstatus = rpc.call_blockdev_find(instance.primary_node, dev)
-    if dev.dev_type == "drbd":
+    if dev.dev_type == constants.LD_DRBD7:
       # we change the snode then (otherwise we use the one passed in)
       if dev.logical_id[0] == instance.primary_node:
         snode = dev.logical_id[1]
@@ -3741,7 +3742,7 @@ class LUExportInstance(LogicalUnit):
             logger.Error("could not snapshot block device %s on node %s" %
                          (disk.logical_id[1], src_node))
           else:
-            new_dev = objects.Disk(dev_type="lvm", size=disk.size,
+            new_dev = objects.Disk(dev_type=constants.LD_LV, size=disk.size,
                                       logical_id=(vgname, new_dev_name),
                                       physical_id=(vgname, new_dev_name),
                                       iv_name=disk.iv_name)
diff --git a/lib/config.py b/lib/config.py
index 81b41e7..e309316 100644
--- a/lib/config.py
+++ b/lib/config.py
@@ -198,7 +198,7 @@ class ConfigWriter:
 
     if disk.logical_id is None and disk.physical_id is not None:
       return
-    if disk.dev_type == "drbd":
+    if disk.dev_type == constants.LD_DRBD7:
       pnode, snode, port = disk.logical_id
       if node_name not in (pnode, snode):
         raise errors.ConfigurationError("DRBD device not knowing node %s" %
diff --git a/lib/constants.py b/lib/constants.py
index d1237de..cffe2bd 100644
--- a/lib/constants.py
+++ b/lib/constants.py
@@ -79,6 +79,11 @@ DT_PLAIN = "plain"
 DT_LOCAL_RAID1 = "local_raid1"
 DT_REMOTE_RAID1 = "remote_raid1"
 
+# logical disk types
+LD_LV = "lvm"
+LD_MD_R1 = "md_raid1"
+LD_DRBD7 = "drbd"
+
 # instance creation modem
 INSTANCE_CREATE = "create"
 INSTANCE_IMPORT = "import"
diff --git a/lib/objects.py b/lib/objects.py
index d404d6b..f5da82a 100644
--- a/lib/objects.py
+++ b/lib/objects.py
@@ -314,15 +314,15 @@ class Disk(ConfigObject):
 
   def CreateOnSecondary(self):
     """Test if this device needs to be created on a secondary node."""
-    return self.dev_type in ("drbd", "lvm")
+    return self.dev_type in (constants.LD_DRBD7, constants.LD_LV)
 
   def AssembleOnSecondary(self):
     """Test if this device needs to be assembled on a secondary node."""
-    return self.dev_type in ("drbd", "lvm")
+    return self.dev_type in (constants.LD_DRBD7, constants.LD_LV)
 
   def OpenOnSecondary(self):
     """Test if this device needs to be opened on a secondary node."""
-    return self.dev_type in ("lvm",)
+    return self.dev_type in (constants.LD_LV,)
 
   def GetNodes(self, node):
     """This function returns the nodes this device lives on.
@@ -333,9 +333,9 @@ class Disk(ConfigObject):
     devices needs to (or can) be assembled.
 
     """
-    if self.dev_type == "lvm" or self.dev_type == "md_raid1":
+    if self.dev_type == constants.LD_LV or self.dev_type == constants.LD_MD_R1:
       result = [node]
-    elif self.dev_type == "drbd":
+    elif self.dev_type == constants.LD_DRBD7:
       result = [self.logical_id[0], self.logical_id[1]]
       if node not in result:
         raise errors.ConfigurationError("DRBD device passed unknown node")
@@ -436,7 +436,7 @@ class Instance(TaggableObject):
     """
     def _Helper(primary, sec_nodes, device):
       """Recursively computes secondary nodes given a top device."""
-      if device.dev_type == 'drbd':
+      if device.dev_type == constants.LD_DRBD7:
         nodea, nodeb, dummy = device.logical_id
         if nodea == primary:
           candidate = nodeb
@@ -485,10 +485,10 @@ class Instance(TaggableObject):
       devs = self.disks
 
     for dev in devs:
-      if dev.dev_type == "lvm":
+      if dev.dev_type == constants.LD_LV:
         lvmap[node].append(dev.logical_id[1])
 
-      elif dev.dev_type == "drbd":
+      elif dev.dev_type == constants.LD_DRBD7:
         if dev.logical_id[0] not in lvmap:
           lvmap[dev.logical_id[0]] = []
 
diff --git a/scripts/gnt-instance b/scripts/gnt-instance
index fe5a953..9d78dff 100755
--- a/scripts/gnt-instance
+++ b/scripts/gnt-instance
@@ -503,7 +503,7 @@ def _FormatBlockDevInfo(buf, dev, indent_level):
     else:
       (path, major, minor, syncp, estt, degr) = status
       buf.write("%s (%d:%d)" % (path, major, minor))
-      if dtype in ("md_raid1", "drbd"):
+      if dtype in (constants.LD_MD_R1, constants.LD_DRBD7):
         if syncp is not None:
           sync_text = "*RECOVERING* %5.2f%%," % syncp
           if estt:
