From d4e78cab6118db47da3ab0de5679e400654792a2 Mon Sep 17 00:00:00 2001 From: John Griffith Date: Thu, 7 Feb 2013 16:45:03 -0700 Subject: [PATCH] Fix missing key error in libvirt.driver The libvirt disk mapping refactor change introduced a bug in libvirt.driver.get_guest_config where we were attempting to perform instance_update using a non-existent key in the disk_mapping. Given that we already parsed out the root_device_name and stored it in a variable, and then verify that it's set in an if statement before this method we should be just using what we've already parsed. Fixes bug: 1118829 Change-Id: Ifd80e67740d6f257ee537b68e9afe028273484d2 --- nova/tests/test_libvirt.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py index cef9252c..e1a4ee29 100644 --- a/nova/tests/test_libvirt.py +++ b/nova/tests/test_libvirt.py @@ -433,6 +433,29 @@ class LibvirtConnTestCase(test.TestCase): self.assertEquals(type(cfg.devices[7]), vconfig.LibvirtConfigGuestGraphics) + def test_get_guest_config_bug_1118829(self): + self.flags(libvirt_type='uml') + conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) + instance_ref = db.instance_create(self.context, self.test_instance) + + disk_info = {'disk_bus': 'virtio', + 'cdrom_bus': 'ide', + 'mapping': {u'vda': {'bus': 'virtio', + 'type': 'disk', + 'dev': u'vda'}, + 'root': {'bus': 'virtio', + 'type': 'disk', + 'dev': 'vda'}}} + + # NOTE(jdg): For this specific test leave this blank + # This will exercise the failed code path still, + # and won't require fakes and stubs of the iscsi discovery + block_device_info = {} + cfg = conn.get_guest_config(instance_ref, [], None, disk_info, + None, block_device_info) + instance_ref = db.instance_get(self.context, instance_ref['id']) + self.assertEquals(instance_ref['root_device_name'], '/dev/vda') + def test_get_guest_config_with_root_device_name(self): self.flags(libvirt_type='uml') conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)