Handle 404 and 409 response when deleting containers
Attempting to delete a stack with multiple SwiftSignalHandles will result in a 409 error from Swift due to a logic error in the SwiftSignalHandle resource. This change ensures that we properly handle 404 and 409 responses when deleting Swift containers. Change-Id: Iac04bf16bce949dd5019975fd07e795cd0685eba Closes-Bug: #1392867
This commit is contained in:
parent
f39600e28b
commit
0c284f7deb
|
@ -125,7 +125,8 @@ class SwiftSignalHandle(resource.Resource):
|
|||
except Exception as exc:
|
||||
if cplugin.is_not_found(exc) or cplugin.is_conflict(exc):
|
||||
pass
|
||||
raise
|
||||
else:
|
||||
raise
|
||||
|
||||
self.data_delete('endpoint')
|
||||
|
||||
|
|
|
@ -171,8 +171,12 @@ class SwiftSignalHandleTest(common.HeatTestCase):
|
|||
exc = swiftclient_exceptions.ClientException("Object DELETE failed",
|
||||
http_status=404)
|
||||
mock_swift_object.delete_object.side_effect = (None, None, None, exc)
|
||||
mock_swift_object.delete_container.return_value = None
|
||||
st.delete()
|
||||
exc = swiftclient_exceptions.ClientException("Container DELETE failed",
|
||||
http_status=404)
|
||||
mock_swift_object.delete_container.side_effect = exc
|
||||
rsrc = st.resources['test_wait_condition_handle']
|
||||
scheduler.TaskRunner(rsrc.delete)()
|
||||
self.assertEqual(('DELETE', 'COMPLETE'), rsrc.state)
|
||||
self.assertEqual(4, mock_swift_object.delete_object.call_count)
|
||||
|
||||
@mock.patch.object(swift.SwiftClientPlugin, '_create')
|
||||
|
@ -249,8 +253,10 @@ class SwiftSignalHandleTest(common.HeatTestCase):
|
|||
mock_swift_object.delete_object.side_effect = (None, None, None, exc)
|
||||
exc = swiftclient_exceptions.ClientException("Container DELETE failed",
|
||||
http_status=409)
|
||||
mock_swift_object.delete_container.return_value = exc
|
||||
st.delete()
|
||||
mock_swift_object.delete_container.side_effect = exc
|
||||
rsrc = st.resources['test_wait_condition_handle']
|
||||
scheduler.TaskRunner(rsrc.delete)()
|
||||
self.assertEqual(('DELETE', 'COMPLETE'), rsrc.state)
|
||||
self.assertEqual(4, mock_swift_object.delete_object.call_count)
|
||||
|
||||
@mock.patch.object(swift.SwiftClientPlugin, '_create')
|
||||
|
|
Loading…
Reference in New Issue