Skip to content

Commit 20e17e0

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Fix vmdk_allowed_types checking" into unmaintained/zed
2 parents f8fa96f + a2acb31 commit 20e17e0

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

nova/tests/unit/virt/libvirt/test_utils.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,11 @@ def _test_create_image(
117117
else:
118118
backing_info = {}
119119
backing_backing_file = backing_info.pop('backing_file', None)
120+
backing_fmt = backing_info.pop('backing_fmt',
121+
mock.sentinel.backing_fmt)
120122

121123
mock_info.return_value = mock.Mock(
122-
file_format=mock.sentinel.backing_fmt,
124+
file_format=backing_fmt,
123125
cluster_size=mock.sentinel.cluster_size,
124126
backing_file=backing_backing_file,
125127
format_specific=backing_info,
@@ -139,7 +141,7 @@ def _test_create_image(
139141
cow_opts = [
140142
'-o',
141143
f'backing_file={backing_file},'
142-
f'backing_fmt={mock.sentinel.backing_fmt},'
144+
f'backing_fmt={backing_fmt},'
143145
f'cluster_size={mock.sentinel.cluster_size}',
144146
]
145147

@@ -193,6 +195,25 @@ def test_create_image_size_none(self):
193195
backing_file=mock.sentinel.backing_file,
194196
)
195197

198+
def test_create_image_vmdk(self):
199+
self._test_create_image(
200+
'/some/vmdk', 'vmdk', '1234567891234',
201+
backing_file={'file': mock.sentinel.backing_file,
202+
'backing_fmt': 'vmdk',
203+
'backing_file': None,
204+
'data': {'create-type': 'monolithicSparse'}}
205+
)
206+
207+
def test_create_image_vmdk_invalid_type(self):
208+
self.assertRaises(exception.ImageUnacceptable,
209+
self._test_create_image,
210+
'/some/vmdk', 'vmdk', '1234567891234',
211+
backing_file={'file': mock.sentinel.backing_file,
212+
'backing_fmt': 'vmdk',
213+
'backing_file': None,
214+
'data': {'create-type': 'monolithicFlat'}}
215+
)
216+
196217
@ddt.unpack
197218
@ddt.data({'fs_type': 'some_fs_type',
198219
'default_eph_format': None,

nova/virt/libvirt/utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,8 @@ def create_image(
148148
reason=_('Base image failed safety check'))
149149

150150
base_details = images.qemu_img_info(backing_file)
151+
if base_details.file_format == 'vmdk':
152+
images.check_vmdk_image('base', base_details)
151153
if base_details.backing_file is not None:
152154
LOG.warning('Base image %s failed safety check', backing_file)
153155
raise exception.InvalidDiskInfo(

0 commit comments

Comments
 (0)