From 112050d9d5c16b7adfbeb18dd17e18934bb054b3 Mon Sep 17 00:00:00 2001
From: Iustin Pop <iustin@google.com>
Date: Thu, 27 Nov 2008 03:12:07 +0000
Subject: [PATCH] Fix instance creation

This patch fixes the diskless and drbd/file based instances. Sorry :(

Reviewed-by: ultrotter
---
 lib/cmdlib.py        |  3 ++-
 scripts/gnt-instance | 11 +++++++----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index c09a7b7e6..52c08f4a3 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -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,
diff --git a/scripts/gnt-instance b/scripts/gnt-instance
index 4d1dffa1f..d50265382 100755
--- a/scripts/gnt-instance
+++ b/scripts/gnt-instance
@@ -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:
-- 
GitLab