From 726d7d6850f146afdb6d4373744a45ad9d9c4ae8 Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Thu, 27 Nov 2008 03:13:17 +0000 Subject: [PATCH] Fix gnt-backup export This patch fixes a bug in disk calculation for gnt-backup export, which completely broke one-disk instance export. The patch also corrects some error messages and style issues. Reviewed-by: ultrotter --- lib/backend.py | 18 ++++++++---------- lib/cmdlib.py | 8 ++++---- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/lib/backend.py b/lib/backend.py index 95cbf7d76..5d79743b0 100644 --- a/lib/backend.py +++ b/lib/backend.py @@ -1606,24 +1606,21 @@ def FinalizeExport(instance, snap_disks): # TODO: redundant: on load can read nics until it doesn't exist config.set(constants.INISECT_INS, 'nic_count' , '%d' % nic_count) - disk_count = 0 + disk_total = 0 for disk_count, disk in enumerate(snap_disks): if disk: + disk_total += 1 config.set(constants.INISECT_INS, 'disk%d_ivname' % disk_count, ('%s' % disk.iv_name)) config.set(constants.INISECT_INS, 'disk%d_dump' % disk_count, ('%s' % disk.physical_id[1])) config.set(constants.INISECT_INS, 'disk%d_size' % disk_count, ('%d' % disk.size)) - config.set(constants.INISECT_INS, 'disk_count' , '%d' % disk_count) - cff = os.path.join(destdir, constants.EXPORT_CONF_FILE) - cfo = open(cff, 'w') - try: - config.write(cfo) - finally: - cfo.close() + config.set(constants.INISECT_INS, 'disk_count' , '%d' % disk_total) + utils.WriteFile(os.path.join(destdir, constants.EXPORT_CONF_FILE), + data=config.Dumps()) shutil.rmtree(finaldestdir, True) shutil.move(destdir, finaldestdir) @@ -1691,8 +1688,9 @@ def ImportOSIntoInstance(instance, src_node, src_images, cluster_name): import_env['IMPORT_INDEX'] = str(idx) result = utils.RunCmd(command, env=import_env) if result.failed: - logging.error("disk import command '%s' returned error: %s" - " output: %s", command, result.fail_reason, result.output) + logging.error("Disk import command '%s' returned error: %s" + " output: %s", command, result.fail_reason, + result.output) final_result.append(False) else: final_result.append(True) diff --git a/lib/cmdlib.py b/lib/cmdlib.py index ad1d27667..52fa77aef 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -3606,7 +3606,7 @@ class LUCreateInstance(LogicalUnit): if instance_disks < export_disks: raise errors.OpPrereqError("Not enough disks to import." " (instance: %d, export: %d)" % - (2, export_disks)) + (instance_disks, export_disks)) self.op.os_type = export_info.get(constants.INISECT_EXP, 'os') disk_images = [] @@ -3824,9 +3824,9 @@ class LUCreateInstance(LogicalUnit): cluster_name) for idx, result in enumerate(import_result): if not result: - self.LogWarning("Could not image %s for on instance %s, disk %d," - " on node %s" % (src_images[idx], instance, idx, - pnode_name)) + self.LogWarning("Could not import the image %s for instance" + " %s, disk %d, on node %s" % + (src_images[idx], instance, idx, pnode_name)) else: # also checked in the prereq part raise errors.ProgrammerError("Unknown OS initialization mode '%s'" -- GitLab