diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index c8a2f4c8bf2f..044c8fb013d5 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -9251,12 +9251,13 @@ class LibvirtConnTestCase(test.NoDBTestCase, image_meta) cfg = drvr._get_guest_config(instance_ref, [], image_meta, disk_info) - no_exist = True + mem_balloon = None for device in cfg.devices: if device.root_name == 'memballoon': - no_exist = False + mem_balloon = device break - self.assertTrue(no_exist) + self.assertIsNotNone(mem_balloon) + self.assertEqual('none', mem_balloon.model) def test_get_guest_memory_balloon_config_period_value(self): self.flags(mem_stats_period_seconds=21, group='libvirt') diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index 0aa135d6fb24..c06142f9ba01 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -7761,14 +7761,16 @@ class LibvirtDriver(driver.ComputeDriver): @staticmethod def _guest_add_memory_balloon(guest): # Memory balloon device only support 'qemu/kvm' hypervisor - if ( - CONF.libvirt.virt_type in ('qemu', 'kvm') and - CONF.libvirt.mem_stats_period_seconds > 0 - ): - balloon = vconfig.LibvirtConfigMemoryBalloon() - balloon.model = 'virtio' - balloon.period = CONF.libvirt.mem_stats_period_seconds - guest.add_device(balloon) + if CONF.libvirt.virt_type in ('qemu', 'kvm'): + if CONF.libvirt.mem_stats_period_seconds > 0: + balloon = vconfig.LibvirtConfigMemoryBalloon() + balloon.model = 'virtio' + balloon.period = CONF.libvirt.mem_stats_period_seconds + guest.add_device(balloon) + else: + balloon = vconfig.LibvirtConfigMemoryBalloon() + balloon.model = 'none' + guest.add_device(balloon) @staticmethod def _guest_add_watchdog_action(guest, flavor, image_meta):