Implement bay deletion on api

Heat stack was not deleted when bay deleted. This fixes it.

Change-Id: I52e82c3b50854f80c86b6553e99d256962a38497
Closes-bug: #1410507
This commit is contained in:
OTSUKA, Yuanying 2015-01-14 13:34:27 +09:00
parent 1cf1678177
commit f8ae58f2a2
3 changed files with 10 additions and 3 deletions

View File

@ -313,6 +313,4 @@ class BaysController(rest.RestController):
if self.from_bays:
raise exception.OperationNotPermitted
rpc_bay = objects.Bay.get_by_uuid(pecan.request.context,
bay_uuid)
rpc_bay.destroy()
pecan.request.rpcapi.bay_delete(bay_uuid)

View File

@ -149,7 +149,9 @@ class Handler(object):
osc = clients.OpenStackClients(ctxt)
bay = objects.Bay.get_by_uuid(ctxt, uuid)
stack_id = bay.stack_id
# TODO(yuanying): handle stack status DELETE_IN_PROGRESS
osc.heat().stacks.delete(stack_id)
# TODO(yuanying): bay.destroy will be triggered by stack status change.
bay.destroy()
return None

View File

@ -10,6 +10,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from magnum.conductor import api
from magnum import objects
from magnum.tests.db import base as db_base
from mock import patch
@ -20,6 +21,10 @@ class TestBayController(db_base.DbTestCase):
bay.create()
return bay
def mock_bay_destroy(self, bay_uuid):
bay = objects.Bay.get_by_uuid({}, bay_uuid)
bay.destroy()
def test_bay_api(self):
with patch.object(api.API, 'bay_create') as mock_method:
# Create a bay
@ -52,6 +57,8 @@ class TestBayController(db_base.DbTestCase):
params=params)
self.assertEqual(response.status_int, 200)
with patch.object(api.API, 'bay_delete') as mock_method:
mock_method.side_effect = self.mock_bay_destroy
# Delete the bay we created
response = self.app.delete('/v1/bays/%s' % c.get('uuid'))
self.assertEqual(response.status_int, 204)