Fix instance creation
authorIustin Pop <iustin@google.com>
Thu, 27 Nov 2008 03:12:07 +0000 (03:12 +0000)
committerIustin Pop <iustin@google.com>
Thu, 27 Nov 2008 03:12:07 +0000 (03:12 +0000)
This patch fixes the diskless and drbd/file based instances. Sorry :(

Reviewed-by: ultrotter

lib/cmdlib.py
scripts/gnt-instance

index c09a7b7..52c08f4 100644 (file)
@@ -3171,6 +3171,7 @@ def _GenerateDiskTemplate(lu, template_name,
                                   for s in ("data", "meta")
                                   ])
     for idx, disk in enumerate(disk_info):
+      disk_index = idx + base_index
       disk_dev = _GenerateDRBD8Branch(lu, primary_node, remote_node,
                                       disk["size"], names[idx*2:idx*2+2],
                                       "disk/%d" % disk_index,
@@ -3181,7 +3182,7 @@ def _GenerateDiskTemplate(lu, template_name,
       raise errors.ProgrammerError("Wrong template configuration")
 
     for idx, disk in enumerate(disk_info):
-
+      disk_index = idx + base_index
       disk_dev = objects.Disk(dev_type=constants.LD_FILE, size=disk["size"],
                               iv_name="disk/%d" % disk_index,
                               logical_id=(file_driver,
index 4d1dffa..d502653 100755 (executable)
@@ -306,11 +306,14 @@ def AddInstance(opts, args):
     # default of one nic, all auto
     nics = [{}]
 
-  if not opts.disks and opts.disk_template != constants.DT_DISKLESS:
-    raise errors.OpPrereqError("No disk information specified")
-  elif opts.disks and opts.disk_template == constants.DT_DISKLESS:
-    raise errors.OpPrereqError("Diskless instance but disk information passeD")
+  if opts.disk_template == constants.DT_DISKLESS:
+    if opts.disks:
+      raise errors.OpPrereqError("Diskless instance but disk"
+                                 " information passed")
+    disks = []
   else:
+    if not opts.disks:
+      raise errors.OpPrereqError("No disk information specified")
     try:
       disk_max = max(int(didx[0])+1 for didx in opts.disks)
     except ValueError, err: