From cdae95e460eb7e7963f34e6c2b21c772fb5c84c9 Mon Sep 17 00:00:00 2001 From: Julia Kreger <juliaashleykreger@gmail.com> Date: Thu, 3 Oct 2024 06:53:30 -0700 Subject: [PATCH] Fix actual size calculation for storage fallback logic When we were fixing the qemu-img related CVE, in our rush we didn't realize that the logic for storage sizing, which only falls back to actual size didn't match the prior interface exactly. Instead of disk_size, we have actual_size on the format inspector. This was not discovered because all of the code handling that side of the unit tests were mocked. Anyhow, easy fix. Closes-Bug: 2083520 Change-Id: Ic4390d578f564f245d7fb4013f2ba5531aee9ea9 --- ironic/common/images.py | 2 +- ironic/tests/unit/common/test_images.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ironic/common/images.py b/ironic/common/images.py index 0f070684b5..4863d6a765 100644 --- a/ironic/common/images.py +++ b/ironic/common/images.py @@ -487,7 +487,7 @@ def converted_size(path, estimate=False): if not estimate: return data.virtual_size growth_factor = CONF.raw_image_growth_factor - return int(min(data.disk_size * growth_factor, data.virtual_size)) + return int(min(data.actual_size * growth_factor, data.virtual_size)) def get_image_properties(context, image_href, properties="all"): diff --git a/ironic/tests/unit/common/test_images.py b/ironic/tests/unit/common/test_images.py index 5b6ba2d3e8..ae722387e7 100644 --- a/ironic/tests/unit/common/test_images.py +++ b/ironic/tests/unit/common/test_images.py @@ -278,7 +278,7 @@ class IronicImagesTestCase(base.TestCase): autospec=True) def test_converted_size_estimate_default(self, image_info_mock): info = self.FakeImgInfo() - info.disk_size = 2 + info.actual_size = 2 info.virtual_size = 10 ** 10 image_info_mock.return_value = info size = images.converted_size('path', estimate=True) @@ -290,7 +290,7 @@ class IronicImagesTestCase(base.TestCase): def test_converted_size_estimate_custom(self, image_info_mock): CONF.set_override('raw_image_growth_factor', 3) info = self.FakeImgInfo() - info.disk_size = 2 + info.actual_size = 2 info.virtual_size = 10 ** 10 image_info_mock.return_value = info size = images.converted_size('path', estimate=True) @@ -302,7 +302,7 @@ class IronicImagesTestCase(base.TestCase): def test_converted_size_estimate_raw_smaller(self, image_info_mock): CONF.set_override('raw_image_growth_factor', 3) info = self.FakeImgInfo() - info.disk_size = 2 + info.actual_size = 2 info.virtual_size = 5 image_info_mock.return_value = info size = images.converted_size('path', estimate=True)