diff options
author | Jenkins <jenkins@review.openstack.org> | 2013-01-26 16:59:29 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2013-01-26 16:59:29 +0000 |
commit | c9af3eed35eb56e154235119fa130e8ba9e8d8fd (patch) | |
tree | 6bacbaf8bc532b1874600c8c44748eec57829862 | |
parent | fb52eb384d7984a63e9d9b90f4d2aa46058a8784 (diff) | |
parent | e306beac9297f4311aa3989e93b0bd19eb4d7c77 (diff) | |
download | nova-c9af3eed35eb56e154235119fa130e8ba9e8d8fd.tar.gz nova-c9af3eed35eb56e154235119fa130e8ba9e8d8fd.tar.xz nova-c9af3eed35eb56e154235119fa130e8ba9e8d8fd.zip |
Merge "PXE driver should rmtree directories it created"
-rw-r--r-- | nova/tests/baremetal/test_pxe.py | 13 | ||||
-rw-r--r-- | nova/virt/baremetal/pxe.py | 5 | ||||
-rw-r--r-- | nova/virt/baremetal/utils.py | 9 |
3 files changed, 19 insertions, 8 deletions
diff --git a/nova/tests/baremetal/test_pxe.py b/nova/tests/baremetal/test_pxe.py index 7e44581e8..dafa9bab7 100644 --- a/nova/tests/baremetal/test_pxe.py +++ b/nova/tests/baremetal/test_pxe.py @@ -411,10 +411,11 @@ class PXEPublicMethodsTestCase(BareMetalPXETestCase): def test_destroy_images(self): self._create_node() - self.mox.StubOutWithMock(os, 'unlink') + self.mox.StubOutWithMock(bm_utils, 'unlink_without_raise') + self.mox.StubOutWithMock(bm_utils, 'rmtree_without_raise') - os.unlink(pxe.get_image_file_path(self.instance)) - os.unlink(pxe.get_image_dir_path(self.instance)) + bm_utils.unlink_without_raise(pxe.get_image_file_path(self.instance)) + bm_utils.rmtree_without_raise(pxe.get_image_dir_path(self.instance)) self.mox.ReplayAll() self.driver.destroy_images(self.context, self.node, self.instance) @@ -479,6 +480,7 @@ class PXEPublicMethodsTestCase(BareMetalPXETestCase): pxe_path = pxe.get_pxe_config_file_path(self.instance) self.mox.StubOutWithMock(bm_utils, 'unlink_without_raise') + self.mox.StubOutWithMock(bm_utils, 'rmtree_without_raise') self.mox.StubOutWithMock(pxe, 'get_tftp_image_info') self.mox.StubOutWithMock(self.driver, '_collect_mac_addresses') @@ -490,7 +492,7 @@ class PXEPublicMethodsTestCase(BareMetalPXETestCase): AndReturn(macs) for mac in macs: bm_utils.unlink_without_raise(pxe.get_pxe_mac_path(mac)) - bm_utils.unlink_without_raise( + bm_utils.rmtree_without_raise( os.path.join(CONF.baremetal.tftp_root, 'fake-uuid')) self.mox.ReplayAll() @@ -513,6 +515,7 @@ class PXEPublicMethodsTestCase(BareMetalPXETestCase): pxe_path = pxe.get_pxe_config_file_path(self.instance) self.mox.StubOutWithMock(bm_utils, 'unlink_without_raise') + self.mox.StubOutWithMock(bm_utils, 'rmtree_without_raise') self.mox.StubOutWithMock(pxe, 'get_tftp_image_info') self.mox.StubOutWithMock(self.driver, '_collect_mac_addresses') @@ -521,7 +524,7 @@ class PXEPublicMethodsTestCase(BareMetalPXETestCase): bm_utils.unlink_without_raise(pxe_path) self.driver._collect_mac_addresses(self.context, self.node).\ AndRaise(exception.DBError) - bm_utils.unlink_without_raise( + bm_utils.rmtree_without_raise( os.path.join(CONF.baremetal.tftp_root, 'fake-uuid')) self.mox.ReplayAll() diff --git a/nova/virt/baremetal/pxe.py b/nova/virt/baremetal/pxe.py index 91de43dd1..11af99d41 100644 --- a/nova/virt/baremetal/pxe.py +++ b/nova/virt/baremetal/pxe.py @@ -21,7 +21,6 @@ Class for PXE bare-metal nodes. """ import os -import shutil from nova.compute import instance_types from nova import exception @@ -345,7 +344,7 @@ class PXE(base.NodeDriver): def destroy_images(self, context, node, instance): """Delete instance's image file.""" bm_utils.unlink_without_raise(get_image_file_path(instance)) - bm_utils.unlink_without_raise(get_image_dir_path(instance)) + bm_utils.rmtree_without_raise(get_image_dir_path(instance)) def activate_bootloader(self, context, node, instance): """Configure PXE boot loader for an instance @@ -420,7 +419,7 @@ class PXE(base.NodeDriver): for mac in macs: bm_utils.unlink_without_raise(get_pxe_mac_path(mac)) - bm_utils.unlink_without_raise( + bm_utils.rmtree_without_raise( os.path.join(CONF.baremetal.tftp_root, instance['uuid'])) def activate_node(self, context, node, instance): diff --git a/nova/virt/baremetal/utils.py b/nova/virt/baremetal/utils.py index 0842ae201..efc5199db 100644 --- a/nova/virt/baremetal/utils.py +++ b/nova/virt/baremetal/utils.py @@ -16,6 +16,7 @@ # under the License. import os +import shutil from nova.openstack.common import log as logging from nova.virt.disk import api as disk_api @@ -47,6 +48,14 @@ def unlink_without_raise(path): LOG.exception(_("Failed to unlink %s") % path) +def rmtree_without_raise(path): + try: + if os.path.isdir(path): + shutil.rmtree(path) + except OSError, e: + LOG.warn(_("Failed to remove dir %(path)s, error: %(e)s") % locals()) + + def write_to_file(path, contents): with open(path, 'w') as f: f.write(contents) |