Merge "Fix heat deletion failed if floating ip is not found" into milestone-proposed

This commit is contained in:
Jenkins 2013-10-12 09:32:54 +00:00 committed by Gerrit Code Review
commit fa85221f9e
2 changed files with 24 additions and 1 deletions

View File

@ -118,7 +118,10 @@ class ElasticIp(resource.Resource):
if e.status_code != 404:
raise e
else:
self.nova().floating_ips.delete(self.resource_id)
try:
self.nova().floating_ips.delete(self.resource_id)
except clients.novaclient.exceptions.NotFound:
pass
def FnGetRefId(self):
return unicode(self._ipaddress())

View File

@ -12,6 +12,8 @@
# License for the specific language governing permissions and limitations
# under the License.
import mox
from testtools import skipIf
from heat.common import exception
@ -223,6 +225,24 @@ class EIPTest(HeatTestCase):
rsrc.handle_create)
self.m.VerifyAll()
def test_delete_eip_with_exception(self):
self.m.StubOutWithMock(self.fc.floating_ips, 'delete')
eip.ElasticIp.nova().MultipleTimes().AndReturn(self.fc)
self.fc.floating_ips.delete(mox.IsA(object)).AndRaise(
clients.novaclient.exceptions.NotFound('fake_falure'))
self.fc.servers.get(mox.IsA(object)).AndReturn(False)
self.m.ReplayAll()
t = template_format.parse(eip_template)
stack = utils.parse_stack(t)
resource_name = 'IPAddress'
rsrc = eip.ElasticIp(resource_name,
t['Resources'][resource_name],
stack)
rsrc.resource_id = 'fake_id'
rsrc.handle_delete()
self.m.VerifyAll()
class AllocTest(HeatTestCase):