Skip to content

Commit 7ecdee0

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "bdm: store empty object as connection_info by default"
2 parents 914ee91 + 9fa03d4 commit 7ecdee0

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

nova/tests/unit/virt/test_block_device.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,31 @@ class TestDriverBlockDevice(test.NoDBTestCase):
120120
'connection_info': {"fake": "connection_info"},
121121
'delete_on_termination': False}
122122

123+
volume_bdm_dict_without_conn_info = block_device.BlockDeviceDict(
124+
{'id': 3, 'instance_uuid': uuids.instance,
125+
'device_name': '/dev/sda1',
126+
'source_type': 'volume',
127+
'disk_bus': 'scsi',
128+
'device_type': 'disk',
129+
'volume_size': 8,
130+
'destination_type': 'volume',
131+
'volume_id': 'fake-volume-id-1',
132+
'guest_format': 'ext4',
133+
'connection_info': None,
134+
'delete_on_termination': False,
135+
'boot_index': 0})
136+
137+
volume_driver_bdm_without_conn_info = {
138+
'attachment_id': None,
139+
'mount_device': '/dev/sda1',
140+
'connection_info': {},
141+
'delete_on_termination': False,
142+
'disk_bus': 'scsi',
143+
'device_type': 'disk',
144+
'guest_format': 'ext4',
145+
'boot_index': 0,
146+
'volume_type': None}
147+
123148
volsnapshot_bdm_dict = block_device.BlockDeviceDict(
124149
{'id': 4, 'instance_uuid': uuids.instance,
125150
'device_name': '/dev/sda2',
@@ -222,6 +247,8 @@ def setUp(self):
222247
self.context, self.ephemeral_bdm_dict)
223248
self.volume_bdm = fake_block_device.fake_bdm_object(
224249
self.context, self.volume_bdm_dict)
250+
self.volume_bdm_without_conn_info = fake_block_device.fake_bdm_object(
251+
self.context, self.volume_bdm_dict_without_conn_info)
225252
self.volsnapshot_bdm = fake_block_device.fake_bdm_object(
226253
self.context, self.volsnapshot_bdm_dict)
227254
self.volimage_bdm = fake_block_device.fake_bdm_object(
@@ -1202,6 +1229,11 @@ def test_convert_volume(self):
12021229
driver_block_device.convert_volume(
12031230
self.volsnapshot_bdm))
12041231

1232+
def test_convert_volume_without_connection_info(self):
1233+
self.assertEqual(self.volume_driver_bdm_without_conn_info,
1234+
driver_block_device.convert_volume(
1235+
self.volume_bdm_without_conn_info))
1236+
12051237
def test_legacy_block_devices(self):
12061238
test_snapshot = self.driver_classes['volsnapshot'](
12071239
self.volsnapshot_bdm)

nova/virt/block_device.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,11 +289,13 @@ def _transform(self):
289289
if k in self._new_fields | set(['delete_on_termination'])}
290290
)
291291
self['mount_device'] = self._bdm_obj.device_name
292+
# connection_info might not be set so default to an empty dict so that
293+
# it can be serialized to an empty JSON object.
292294
try:
293295
self['connection_info'] = jsonutils.loads(
294296
self._bdm_obj.connection_info)
295297
except TypeError:
296-
self['connection_info'] = None
298+
self['connection_info'] = {}
297299
# volume_type might not be set on the internal bdm object so default
298300
# to None if not set
299301
self['volume_type'] = (

0 commit comments

Comments
 (0)