From 6ce70203dd94debf7800f27f700e7d8a459482cc Mon Sep 17 00:00:00 2001 From: Sahid Orentino Ferdjaoui Date: Tue, 24 Nov 2015 05:52:52 -0500 Subject: [PATCH] libvirt: introduce freeze filesystems Adds method to freeze in Guest's object which replace direct call to libvirt. Implements: blueprint libvirt-clean-driver Change-Id: Ia530b1072c5af21dc114be627af90a39e38fa01b --- nova/tests/unit/virt/libvirt/fakelibvirt.py | 3 +++ nova/tests/unit/virt/libvirt/test_guest.py | 4 ++++ nova/virt/libvirt/driver.py | 2 +- nova/virt/libvirt/guest.py | 4 ++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/nova/tests/unit/virt/libvirt/fakelibvirt.py b/nova/tests/unit/virt/libvirt/fakelibvirt.py index f40e3d11a9cd..313b2ebf6f2d 100644 --- a/nova/tests/unit/virt/libvirt/fakelibvirt.py +++ b/nova/tests/unit/virt/libvirt/fakelibvirt.py @@ -773,6 +773,9 @@ class Domain(object): def abortJob(self): pass + def fsFreeze(self): + pass + class DomainSnapshot(object): def __init__(self, name, domain): diff --git a/nova/tests/unit/virt/libvirt/test_guest.py b/nova/tests/unit/virt/libvirt/test_guest.py index ed8309e466fd..007c785e6742 100644 --- a/nova/tests/unit/virt/libvirt/test_guest.py +++ b/nova/tests/unit/virt/libvirt/test_guest.py @@ -369,6 +369,10 @@ class GuestTestCase(test.NoDBTestCase): with mock.patch.object(self.domain, "isActive", return_value=False): self.assertFalse(self.guest.is_active()) + def test_freeze_filesystems(self): + self.guest.freeze_filesystems() + self.domain.fsFreeze.assert_called_once_with() + class GuestBlockTestCase(test.NoDBTestCase): diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index 9e3b1015fda6..79cc41094446 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -1520,7 +1520,7 @@ class LibvirtDriver(driver.ComputeDriver): # We should be able to remove domain at the end. domain = guest._domain if quiesced: - domain.fsFreeze() + guest.freeze_filesystems() else: domain.fsThaw() except libvirt.libvirtError as ex: diff --git a/nova/virt/libvirt/guest.py b/nova/virt/libvirt/guest.py index 263f873f0c4e..2210db0d89d1 100644 --- a/nova/virt/libvirt/guest.py +++ b/nova/virt/libvirt/guest.py @@ -369,6 +369,10 @@ class Guest(object): "Determines whether guest is currently running." return self._domain.isActive() + def freeze_filesystems(self): + """Freeze filesystems within guest.""" + self._domain.fsFreeze() + class BlockDevice(object): """Wrapper around block device API"""