From d89605026e0e76d3ac5bb498fbc9cca42bb12a03 Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Wed, 13 Jun 2012 12:35:35 +0200 Subject: [PATCH] Fix creation of plain instances with --no-wait-for-sync As reported on the devel mailing list by Christos Stavrakakis, creation of plain instances is broken when the --no-wait-for-sync flag is passed, because in that case WaitForSync is not called, hence SetDiskID is not called at all, resulting in a None physical_id being passed to backend. We fix that by explicitly calling SetDiskID, which will cover the pause/resume and os_add RPC calls. Signed-off-by: Iustin Pop <iustin@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- lib/cmdlib.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 34902d127..ba6661c38 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -10138,6 +10138,11 @@ class LUInstanceCreate(LogicalUnit): _ReleaseLocks(self, locking.LEVEL_NODE_RES) if iobj.disk_template != constants.DT_DISKLESS and not self.adopt_disks: + # we need to set the disks ID to the primary node, since the + # preceding code might or might have not done it, depending on + # disk template and other options + for disk in iobj.disks: + self.cfg.SetDiskID(disk, pnode_name) if self.op.mode == constants.INSTANCE_CREATE: if not self.op.no_install: pause_sync = (iobj.disk_template in constants.DTS_INT_MIRROR and -- GitLab