diff --git a/heat/engine/checkeddict.py b/heat/engine/checkeddict.py index a2b6d55750..0a0cdb0488 100644 --- a/heat/engine/checkeddict.py +++ b/heat/engine/checkeddict.py @@ -135,9 +135,11 @@ class Properties(CheckedDict): def validate(self): for key in self.data: # are there missing required Properties - if 'Required' in self.data[key] and not 'Value' in self.data[key]: - return {'Error': \ - '%s Property must be provided' % key} + if 'Required' in self.data[key]: + if self.data[key]['Required'] \ + and not 'Value' in self.data[key]: + return {'Error': \ + '%s Property must be provided' % key} # are there unimplemented Properties if not self.data[key]['Implemented'] and 'Value' in self.data[key]: diff --git a/heat/engine/security_group.py b/heat/engine/security_group.py index 43083facbe..82a463ecdb 100644 --- a/heat/engine/security_group.py +++ b/heat/engine/security_group.py @@ -29,9 +29,9 @@ class SecurityGroup(Resource): 'Required': True}, 'VpcId': {'Type': 'String', 'Implemented': False}, - 'SecurityGroupIngress': {'Type': 'CommaDelimitedList', + 'SecurityGroupIngress': {'Type': 'TuplesList', 'Implemented': False}, - 'SecurityGroupEgress': {'Type': 'CommaDelimitedList'}} + 'SecurityGroupEgress': {'Type': 'TuplesList'}} def __init__(self, name, json_snippet, stack): super(SecurityGroup, self).__init__(name, json_snippet, stack) diff --git a/heat/engine/volume.py b/heat/engine/volume.py index b506ce218c..df49b20edd 100644 --- a/heat/engine/volume.py +++ b/heat/engine/volume.py @@ -28,7 +28,8 @@ class Volume(Resource): properties_schema = {'AvailabilityZone': {'Type': 'String', 'Required': True}, 'Size': {'Type': 'Number'}, - 'SnapshotId': {'Type': 'String'}} + 'SnapshotId': {'Type': 'String'}, + 'Tags': {'Type': 'TuplesList'}} def __init__(self, name, json_snippet, stack): super(Volume, self).__init__(name, json_snippet, stack)