From 2c7365c3b5d2a560d0709a7ad9dbf491000cdd9e Mon Sep 17 00:00:00 2001 From: Chuck Short Date: Wed, 4 Apr 2012 12:36:42 -0400 Subject: [PATCH] Fix traceback in image cache manager. When nova is running as a different user, the image cache manager can cause tracebacks because it is not able to access the file. This fixes bug: 973377 Change-Id: I7902b024e7d564fbda97ce8532c1de84ab1a4206 Signed-off-by: Chuck Short --- nova/tests/test_imagecache.py | 5 +++++ nova/virt/libvirt/imagecache.py | 1 + 2 files changed, 6 insertions(+) diff --git a/nova/tests/test_imagecache.py b/nova/tests/test_imagecache.py index 599d99ac9f15..9cf400320cd5 100644 --- a/nova/tests/test_imagecache.py +++ b/nova/tests/test_imagecache.py @@ -436,6 +436,7 @@ class ImageCacheManagerTestCase(test.TestCase): self.assertEquals(image_cache_manager.corrupt_base_files, []) def test_handle_base_image_used(self): + self.stubs.Set(virtutils, 'chown', lambda x, y: None) img = '123' with self._make_base_file() as fname: @@ -496,6 +497,8 @@ class ImageCacheManagerTestCase(test.TestCase): self.assertEquals(image_cache_manager.corrupt_base_files, []) def test_handle_base_image_checksum_fails(self): + self.stubs.Set(virtutils, 'chown', lambda x, y: None) + img = '123' with self._make_base_file() as fname: @@ -563,6 +566,8 @@ class ImageCacheManagerTestCase(test.TestCase): self.stubs.Set(os.path, 'exists', lambda x: exists(x)) + self.stubs.Set(virtutils, 'chown', lambda x, y: None) + # We need to stub utime as well orig_utime = os.utime self.stubs.Set(os, 'utime', lambda x, y: None) diff --git a/nova/virt/libvirt/imagecache.py b/nova/virt/libvirt/imagecache.py index d903c87fca00..f92376a17477 100644 --- a/nova/virt/libvirt/imagecache.py +++ b/nova/virt/libvirt/imagecache.py @@ -355,6 +355,7 @@ class ImageCacheManager(object): {'id': img_id, 'base_file': base_file}) if os.path.exists(base_file): + virtutils.chown(base_file, os.getuid()) os.utime(base_file, None) def verify_base_images(self, context):