]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Fix deletion of security groups
authorZane Bitter <zbitter@redhat.com>
Wed, 23 May 2012 17:14:39 +0000 (19:14 +0200)
committerZane Bitter <zbitter@redhat.com>
Wed, 23 May 2012 19:11:19 +0000 (21:11 +0200)
First off, don't set the instance_id to an empty string as soon as we
retrieve the object from the database.

Also, don't fail if we try to delete a security group that no longer
exists.

Signed-off-by: Zane Bitter <zbitter@redhat.com>
heat/engine/security_group.py

index 2b3f0f77dd92cec2073e273c1d18a2ba2c3a25d1..6f4ccd5323b2ea7d9dcf86afc85e13befa1f7aa4 100644 (file)
@@ -17,6 +17,7 @@ import eventlet
 import logging
 import os
 from novaclient.exceptions import BadRequest
+from novaclient.exceptions import NotFound
 from heat.common import exception
 from heat.engine.resources import Resource
 
@@ -27,7 +28,6 @@ class SecurityGroup(Resource):
 
     def __init__(self, name, json_snippet, stack):
         super(SecurityGroup, self).__init__(name, json_snippet, stack)
-        self.instance_id = ''
 
         if 'GroupDescription' in self.t['Properties']:
             self.description = self.t['Properties']['GroupDescription']
@@ -86,12 +86,18 @@ class SecurityGroup(Resource):
         Resource.delete(self)
 
         if self.instance_id != None:
-            sec = self.nova().security_groups.get(self.instance_id)
-
-            for rule in sec.rules:
-                self.nova().security_group_rules.delete(rule['id'])
+            try:
+                sec = self.nova().security_groups.get(self.instance_id)
+            except NotFound:
+                pass
+            else:
+                for rule in sec.rules:
+                    try:
+                        self.nova().security_group_rules.delete(rule['id'])
+                    except NotFound:
+                        pass
 
-            self.nova().security_groups.delete(sec)
+                self.nova().security_groups.delete(sec)
             self.instance_id = None
 
         self.state_set(self.DELETE_COMPLETE)