Merge "Catch CannotResizeDisk exception when resize to zero disk"
This commit is contained in:
@@ -702,6 +702,8 @@ class ServersController(wsgi.Controller):
|
||||
except exception.CannotResizeToSameFlavor:
|
||||
msg = _("Resize requires a flavor change.")
|
||||
raise exc.HTTPBadRequest(explanation=msg)
|
||||
except exception.CannotResizeDisk as e:
|
||||
raise exc.HTTPBadRequest(explanation=e.format_message())
|
||||
except exception.InstanceIsLocked as e:
|
||||
raise exc.HTTPConflict(explanation=e.format_message())
|
||||
except exception.InstanceInvalidState as state_error:
|
||||
|
||||
@@ -1174,6 +1174,8 @@ class Controller(wsgi.Controller):
|
||||
except exception.CannotResizeToSameFlavor:
|
||||
msg = _("Resize requires a flavor change.")
|
||||
raise exc.HTTPBadRequest(explanation=msg)
|
||||
except exception.CannotResizeDisk as e:
|
||||
raise exc.HTTPBadRequest(explanation=e.format_message())
|
||||
except exception.InstanceIsLocked as e:
|
||||
raise exc.HTTPConflict(explanation=e.format_message())
|
||||
except exception.InstanceInvalidState as state_error:
|
||||
|
||||
@@ -2394,6 +2394,9 @@ class API(base.Base):
|
||||
reason = _('Resize to zero disk flavor is not allowed.')
|
||||
raise exception.CannotResizeDisk(reason=reason)
|
||||
|
||||
if not new_instance_type:
|
||||
raise exception.FlavorNotFound(flavor_id=flavor_id)
|
||||
|
||||
current_instance_type_name = current_instance_type['name']
|
||||
new_instance_type_name = new_instance_type['name']
|
||||
LOG.debug("Old instance type %(current_instance_type_name)s, "
|
||||
@@ -2402,9 +2405,6 @@ class API(base.Base):
|
||||
'new_instance_type_name': new_instance_type_name},
|
||||
instance=instance)
|
||||
|
||||
if not new_instance_type:
|
||||
raise exception.FlavorNotFound(flavor_id=flavor_id)
|
||||
|
||||
same_instance_type = (current_instance_type['id'] ==
|
||||
new_instance_type['id'])
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
import mox
|
||||
from oslo.config import cfg
|
||||
import webob
|
||||
@@ -679,6 +680,24 @@ class ServerActionsControllerTest(test.TestCase):
|
||||
self.controller._action_resize,
|
||||
req, FAKE_UUID, body)
|
||||
|
||||
@mock.patch('nova.compute.api.API.resize',
|
||||
side_effect=exception.CannotResizeDisk(reason=''))
|
||||
def test_resize_raises_cannot_resize_disk(self, mock_resize):
|
||||
body = dict(resize=dict(flavor_ref="http://localhost/3"))
|
||||
req = fakes.HTTPRequestV3.blank(self.url)
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_resize,
|
||||
req, FAKE_UUID, body)
|
||||
|
||||
@mock.patch('nova.compute.api.API.resize',
|
||||
side_effect=exception.FlavorNotFound(reason=''))
|
||||
def test_resize_raises_flavor_not_found(self, mock_resize):
|
||||
body = dict(resize=dict(flavor_ref="http://localhost/3"))
|
||||
req = fakes.HTTPRequestV3.blank(self.url)
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_resize,
|
||||
req, FAKE_UUID, body)
|
||||
|
||||
def test_resize_raises_conflict_on_invalid_state(self):
|
||||
body = dict(resize=dict(flavor_ref="http://localhost/3"))
|
||||
|
||||
|
||||
@@ -833,6 +833,24 @@ class ServerActionsControllerTest(test.TestCase):
|
||||
req, FAKE_UUID, body)
|
||||
self.assertEqual(self.resize_called, call_no + 1)
|
||||
|
||||
@mock.patch('nova.compute.api.API.resize',
|
||||
side_effect=exception.CannotResizeDisk(reason=''))
|
||||
def test_resize_raises_cannot_resize_disk(self, mock_resize):
|
||||
body = dict(resize=dict(flavorRef="http://localhost/3"))
|
||||
req = fakes.HTTPRequest.blank(self.url)
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_resize,
|
||||
req, FAKE_UUID, body)
|
||||
|
||||
@mock.patch('nova.compute.api.API.resize',
|
||||
side_effect=exception.FlavorNotFound(reason=''))
|
||||
def test_resize_raises_flavor_not_found(self, mock_resize):
|
||||
body = dict(resize=dict(flavorRef="http://localhost/3"))
|
||||
req = fakes.HTTPRequest.blank(self.url)
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_resize,
|
||||
req, FAKE_UUID, body)
|
||||
|
||||
def test_resize_with_too_many_instances(self):
|
||||
body = dict(resize=dict(flavorRef="http://localhost/3"))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user