From d94f8032b31934076c64153cf37fed095a7c8177 Mon Sep 17 00:00:00 2001 From: Eric Harney Date: Thu, 14 Jan 2021 15:22:55 +0000 Subject: [PATCH] Label temporary files created by image_utils These files can be rather large at times, prefix them with identifiers so that when troubleshooting Cinder, it is possible to identify what is consuming disk space. Closes-Bug: #1911766 Change-Id: I660ed16a36ad9415a5de757b32a6770e27b1294c (cherry picked from commit 3ce9d773aa233829d1dcbae2f9e1aebecd248305) --- cinder/image/image_utils.py | 7 +++--- cinder/tests/unit/test_image_utils.py | 36 ++++++++++++++++++--------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/cinder/image/image_utils.py b/cinder/image/image_utils.py index 237c4dcbbb1..732e1271653 100644 --- a/cinder/image/image_utils.py +++ b/cinder/image/image_utils.py @@ -645,7 +645,7 @@ def fetch_to_volume_format(context, image_service, # large and cause disk full errors which would confuse users. # Unfortunately it seems that you can't pipe to 'qemu-img convert' because # it seeks. Maybe we can think of something for a future version. - with temporary_file() as tmp: + with temporary_file(prefix='image_download_%s_' % image_id) as tmp: has_meta = False if not image_meta else True try: format_raw = True if image_meta['disk_format'] == 'raw' else False @@ -763,7 +763,7 @@ def upload_volume(context, image_service, image_meta, volume_path, base_image_ref=base_image_ref) return - with temporary_file() as tmp: + with temporary_file(prefix='vol_upload_') as tmp: LOG.debug("%s was %s, converting to %s", image_id, volume_format, image_meta['disk_format']) @@ -997,7 +997,8 @@ class TemporaryImages(object): @contextlib.contextmanager def fetch(cls, image_service, context, image_id, suffix=''): tmp_images = cls.for_image_service(image_service).temporary_images - with temporary_file(suffix=suffix) as tmp: + with temporary_file(prefix='image_fetch_%s_' % image_id, + suffix=suffix) as tmp: fetch_verify_image(context, image_service, image_id, tmp) user = context.user_id if not tmp_images.get(user): diff --git a/cinder/tests/unit/test_image_utils.py b/cinder/tests/unit/test_image_utils.py index cce25232d2c..929ae9ac2e9 100644 --- a/cinder/tests/unit/test_image_utils.py +++ b/cinder/tests/unit/test_image_utils.py @@ -1142,7 +1142,8 @@ class TestFetchToVolumeFormat(test.TestCase): volume_format, blocksize) self.assertIsNone(output) - mock_temp.assert_called_once_with() + mock_temp.assert_called_once_with(prefix='image_download_%s_' % + image_id) mock_info.assert_has_calls([ mock.call(tmp, force_share=False, run_as_root=True), mock.call(tmp, run_as_root=True)]) @@ -1194,7 +1195,8 @@ class TestFetchToVolumeFormat(test.TestCase): run_as_root=run_as_root) self.assertIsNone(output) - mock_temp.assert_called_once_with() + mock_temp.assert_called_once_with(prefix='image_download_%s_' % + image_id) mock_info.assert_has_calls([ mock.call(tmp, force_share=False, run_as_root=run_as_root), mock.call(tmp, run_as_root=run_as_root)]) @@ -1250,7 +1252,8 @@ class TestFetchToVolumeFormat(test.TestCase): run_as_root=run_as_root) self.assertIsNone(output) - mock_temp.assert_called_once_with() + mock_temp.assert_called_once_with(prefix='image_download_%s_' % + image_id) mock_info.assert_has_calls([ mock.call(tmp, force_share=False, run_as_root=run_as_root), mock.call(tmp, run_as_root=run_as_root)]) @@ -1302,7 +1305,8 @@ class TestFetchToVolumeFormat(test.TestCase): run_as_root=run_as_root) self.assertIsNone(output) - mock_temp.assert_called_once_with() + mock_temp.assert_called_once_with(prefix='image_download_%s_' % + image_id) mock_info.assert_has_calls([ mock.call(tmp, force_share=False, run_as_root=run_as_root), mock.call(tmp, run_as_root=run_as_root)]) @@ -1406,7 +1410,8 @@ class TestFetchToVolumeFormat(test.TestCase): self.assertIsNone(output) image_service.show.assert_called_once_with(ctxt, image_id) - mock_temp.assert_called_once_with() + mock_temp.assert_called_once_with(prefix='image_download_%s_' % + image_id) mock_info.assert_called_once_with(tmp, force_share=False, run_as_root=run_as_root) @@ -1453,7 +1458,8 @@ class TestFetchToVolumeFormat(test.TestCase): run_as_root=run_as_root) image_service.show.assert_called_once_with(ctxt, image_id) - mock_temp.assert_called_once_with() + mock_temp.assert_called_once_with(prefix='image_download_%s_' % + image_id) mock_info.assert_called_once_with(tmp, force_share=False, run_as_root=run_as_root) @@ -1498,7 +1504,8 @@ class TestFetchToVolumeFormat(test.TestCase): run_as_root=run_as_root) image_service.show.assert_called_once_with(ctxt, image_id) - mock_temp.assert_called_once_with() + mock_temp.assert_called_once_with(prefix='image_download_%s_' % + image_id) mock_info.assert_called_once_with(tmp, force_share=False, run_as_root=run_as_root) @@ -1549,7 +1556,8 @@ class TestFetchToVolumeFormat(test.TestCase): run_as_root=run_as_root) image_service.show.assert_called_once_with(ctxt, image_id) - mock_temp.assert_called_once_with() + mock_temp.assert_called_once_with(prefix='image_download_%s_' % + image_id) mock_info.assert_has_calls([ mock.call(tmp, force_share=False, run_as_root=run_as_root), mock.call(tmp, run_as_root=run_as_root)]) @@ -1597,7 +1605,8 @@ class TestFetchToVolumeFormat(test.TestCase): run_as_root=run_as_root) image_service.show.assert_called_once_with(ctxt, image_id) - mock_temp.assert_called_once_with() + mock_temp.assert_called_once_with(prefix='image_download_%s_' % + image_id) mock_info.assert_has_calls([ mock.call(tmp, force_share=False, run_as_root=run_as_root), mock.call(tmp, run_as_root=run_as_root)]) @@ -1645,7 +1654,8 @@ class TestFetchToVolumeFormat(test.TestCase): run_as_root=run_as_root) image_service.show.assert_called_once_with(ctxt, image_id) - mock_temp.assert_called_once_with() + mock_temp.assert_called_once_with(prefix='image_download_%s_' % + image_id) mock_info.assert_has_calls([ mock.call(tmp, force_share=False, run_as_root=run_as_root), mock.call(tmp, run_as_root=run_as_root)]) @@ -1694,7 +1704,8 @@ class TestFetchToVolumeFormat(test.TestCase): run_as_root=run_as_root) self.assertIsNone(output) - mock_temp.assert_called_once_with() + mock_temp.assert_called_once_with(prefix='image_download_%s_' % + image_id) mock_info.assert_has_calls([ mock.call(tmp, force_share=False, run_as_root=run_as_root), mock.call(tmp, run_as_root=run_as_root)]) @@ -1852,7 +1863,8 @@ class TestFetchToVolumeFormat(test.TestCase): volume_format, blocksize) self.assertIsNone(output) - mock_temp.assert_called_once_with() + mock_temp.assert_called_once_with(prefix='image_download_%s_' % + image_id) mock_info.assert_has_calls([ mock.call(tmp, force_share=False, run_as_root=True), mock.call(tmp, run_as_root=True)])