From 2eadedf5fde33886ad46f5c8ae958ddb40eaefdd Mon Sep 17 00:00:00 2001 From: Angus Salkeld Date: Fri, 22 Jun 2012 12:01:55 +1000 Subject: [PATCH] Fix EIP template. Some of the implemented flags were wrong. Allow the eip to be deleted when no eip was created. Change-Id: Id1d3aaff9adf0988a5c58f8bf0f7b2fb9c7bde44 Signed-off-by: Angus Salkeld --- heat/engine/eip.py | 9 +++++++-- heat/engine/instance.py | 3 +-- heat/engine/security_group.py | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/heat/engine/eip.py b/heat/engine/eip.py index cc9b32ff65..5aa032faba 100644 --- a/heat/engine/eip.py +++ b/heat/engine/eip.py @@ -17,6 +17,7 @@ import logging from heat.common import exception from heat.engine.resources import Resource +from novaclient.exceptions import NotFound logger = logging.getLogger('heat.engine.eip') @@ -104,5 +105,9 @@ class ElasticIpAssociation(Resource): def handle_delete(self): """Remove a floating IP address from a server.""" - server = self.nova().servers.get(self.properties['InstanceId']) - server.remove_floating_ip(self.properties['EIP']) + try: + server = self.nova().servers.get(self.properties['InstanceId']) + if server: + server.remove_floating_ip(self.properties['EIP']) + except NotFound as ex: + pass diff --git a/heat/engine/instance.py b/heat/engine/instance.py index 57928c344c..cae673b992 100644 --- a/heat/engine/instance.py +++ b/heat/engine/instance.py @@ -91,8 +91,7 @@ class Instance(Resource): 'Implemented': False}, 'RamDiskId': {'Type': 'String', 'Implemented': False}, - 'SecurityGroups': {'Type': 'List', - 'Implemented': False}, + 'SecurityGroups': {'Type': 'List'}, 'SecurityGroupIds': {'Type': 'List', 'Implemented': False}, 'SourceDestCheck': {'Type': 'Boolean', diff --git a/heat/engine/security_group.py b/heat/engine/security_group.py index 7e4214b452..edc913ed3e 100644 --- a/heat/engine/security_group.py +++ b/heat/engine/security_group.py @@ -27,9 +27,9 @@ class SecurityGroup(Resource): 'Required': True}, 'VpcId': {'Type': 'String', 'Implemented': False}, - 'SecurityGroupIngress': {'Type': 'List', - 'Implemented': False}, - 'SecurityGroupEgress': {'Type': 'List'}} + 'SecurityGroupIngress': {'Type': 'List'}, + 'SecurityGroupEgress': {'Type': 'List', + 'Implemented': False}} def __init__(self, name, json_snippet, stack): super(SecurityGroup, self).__init__(name, json_snippet, stack)