Don't fail if volume has no name or description

Volume objects in the cinder client don't always provide the
display_name and display_description attributes. Don't fail in this
case.

Change-Id: I08448f002912c2382fcc6728ce3ecf75038faec2
This commit is contained in:
Gauvain Pocentek 2016-05-13 12:15:41 +02:00
parent 168d10bb1c
commit 7d2f8a5703
2 changed files with 38 additions and 7 deletions

View File

@ -525,13 +525,11 @@ class TemplateGenerator(object):
"Snapshot to create volume %s from" % resource_name)
resource.add_parameter(key, description,
default=volume.snapshot_id)
try:
if volume.display_name:
properties['name'] = volume.display_name
if volume.display_description:
properties['description'] = volume.display_description
except AttributeError:
pass
if hasattr(volume, 'display_name') and volume.display_name:
properties['name'] = volume.display_name
if (hasattr(volume, 'display_description') and
volume.display_description):
properties['description'] = volume.display_description
if volume.volume_type and volume.volume_type != 'None':
key = "%s_volume_type" % resource_name
description = (

View File

@ -48,6 +48,16 @@ class FakeVolume(FakeBase):
metadata = None
class FakeUnnamedVolume(FakeBase):
id = 1234
size = 1
source_volid = None
bootable = 'false'
snapshot_id = None
volume_type = 'fast'
metadata = None
class FakeServer(FakeBase):
id = '1234'
name = 'server1'
@ -1280,6 +1290,29 @@ class VolumeTests(BaseTestCase):
self.check_template(generator._extract_volumes(), expected_resources,
expected_parameters)
def test_basic_unnamed(self):
self.fake.volumes = [FakeUnnamedVolume(), ]
generator = self.get_generator(False, False, False, True)
expected_parameters = {
'volume_0_volume_type': {
'default': 'fast',
'description': 'Volume type for volume volume_0',
'type': 'string'}
}
expected_resources = {
'volume_0': {
'type': 'OS::Cinder::Volume',
'properties': {
'volume_type': {'get_param': 'volume_0_volume_type'},
'size': 1
}
}
}
self.check_template(generator._extract_volumes(), expected_resources,
expected_parameters)
def test_source_volid_external(self):
self.fake.volumes = [FakeVolume(source_volid=5678), ]
generator = self.get_generator(False, False, False, True)