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
This commit is contained in:
Julia Kreger 2024-10-03 06:53:30 -07:00
parent 99c786d730
commit cdae95e460
2 changed files with 4 additions and 4 deletions
ironic
common
tests/unit/common

@ -487,7 +487,7 @@ def converted_size(path, estimate=False):
if not estimate: if not estimate:
return data.virtual_size return data.virtual_size
growth_factor = CONF.raw_image_growth_factor 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"): def get_image_properties(context, image_href, properties="all"):

@ -278,7 +278,7 @@ class IronicImagesTestCase(base.TestCase):
autospec=True) autospec=True)
def test_converted_size_estimate_default(self, image_info_mock): def test_converted_size_estimate_default(self, image_info_mock):
info = self.FakeImgInfo() info = self.FakeImgInfo()
info.disk_size = 2 info.actual_size = 2
info.virtual_size = 10 ** 10 info.virtual_size = 10 ** 10
image_info_mock.return_value = info image_info_mock.return_value = info
size = images.converted_size('path', estimate=True) 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): def test_converted_size_estimate_custom(self, image_info_mock):
CONF.set_override('raw_image_growth_factor', 3) CONF.set_override('raw_image_growth_factor', 3)
info = self.FakeImgInfo() info = self.FakeImgInfo()
info.disk_size = 2 info.actual_size = 2
info.virtual_size = 10 ** 10 info.virtual_size = 10 ** 10
image_info_mock.return_value = info image_info_mock.return_value = info
size = images.converted_size('path', estimate=True) 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): def test_converted_size_estimate_raw_smaller(self, image_info_mock):
CONF.set_override('raw_image_growth_factor', 3) CONF.set_override('raw_image_growth_factor', 3)
info = self.FakeImgInfo() info = self.FakeImgInfo()
info.disk_size = 2 info.actual_size = 2
info.virtual_size = 5 info.virtual_size = 5
image_info_mock.return_value = info image_info_mock.return_value = info
size = images.converted_size('path', estimate=True) size = images.converted_size('path', estimate=True)