Do not pass rich objects in server's suspend
Unit tests for "immediate suspend" were removed as they no longer differ in principle from "wait suspend" tests due to an extra API call introduced. Change-Id: I2f42c664742b208f68364dca8040990c0aa01b19 Partial-Bug: #1393268
This commit is contained in:
parent
220004a528
commit
674569675a
|
@ -797,29 +797,28 @@ class Instance(resource.Resource):
|
|||
if self.client_plugin().is_not_found(e):
|
||||
raise exception.NotFound(_('Failed to find instance %s') %
|
||||
self.resource_id)
|
||||
else:
|
||||
raise
|
||||
else:
|
||||
LOG.debug("suspending instance %s" % self.resource_id)
|
||||
server.suspend()
|
||||
return server
|
||||
|
||||
def check_suspend_complete(self, server):
|
||||
|
||||
if server.status == 'SUSPENDED':
|
||||
return True
|
||||
return server.id
|
||||
|
||||
def check_suspend_complete(self, server_id):
|
||||
cp = self.client_plugin()
|
||||
cp.refresh_server(server)
|
||||
LOG.debug("%(name)s check_suspend_complete "
|
||||
"status = %(status)s",
|
||||
{'name': self.name, 'status': server.status})
|
||||
if server.status in list(cp.deferred_server_statuses + ['ACTIVE']):
|
||||
return server.status == 'SUSPENDED'
|
||||
server = cp.fetch_server(server_id)
|
||||
if not server:
|
||||
return False
|
||||
status = cp.get_status(server)
|
||||
LOG.debug('%(name)s check_suspend_complete status = %(status)s'
|
||||
% {'name': self.name, 'status': status})
|
||||
if status in list(cp.deferred_server_statuses + ['ACTIVE']):
|
||||
return status == 'SUSPENDED'
|
||||
else:
|
||||
raise exception.Error(_(' nova reported unexpected '
|
||||
'instance[%(instance)s] '
|
||||
'status[%(status)s]') %
|
||||
{'instance': self.name,
|
||||
'status': server.status})
|
||||
exc = resource.ResourceUnknownStatus(
|
||||
result=_('Suspend of instance %s failed') % server.name,
|
||||
resource_status=status)
|
||||
raise exc
|
||||
|
||||
def handle_resume(self):
|
||||
'''
|
||||
|
|
|
@ -1375,34 +1375,24 @@ class Server(stack_user.StackUser):
|
|||
raise
|
||||
else:
|
||||
LOG.debug('suspending server %s' % self.resource_id)
|
||||
# We want the server.suspend to happen after the volume
|
||||
# detachement has finished, so pass both tasks and the server
|
||||
suspend_runner = scheduler.TaskRunner(server.suspend)
|
||||
return server, suspend_runner
|
||||
server.suspend()
|
||||
return server.id
|
||||
|
||||
def check_suspend_complete(self, cookie):
|
||||
server, suspend_runner = cookie
|
||||
|
||||
if not suspend_runner.started():
|
||||
suspend_runner.start()
|
||||
|
||||
if suspend_runner.done():
|
||||
if server.status == 'SUSPENDED':
|
||||
return True
|
||||
|
||||
cp = self.client_plugin()
|
||||
cp.refresh_server(server)
|
||||
LOG.debug('%(name)s check_suspend_complete status = %(status)s'
|
||||
% {'name': self.name, 'status': server.status})
|
||||
if server.status in list(cp.deferred_server_statuses +
|
||||
['ACTIVE']):
|
||||
return server.status == 'SUSPENDED'
|
||||
else:
|
||||
exc = exception.Error(_('Suspend of server %(server)s failed '
|
||||
'with unknown status: %(status)s') %
|
||||
dict(server=server.name,
|
||||
status=server.status))
|
||||
raise exc
|
||||
def check_suspend_complete(self, server_id):
|
||||
cp = self.client_plugin()
|
||||
server = cp.fetch_server(server_id)
|
||||
if not server:
|
||||
return False
|
||||
status = cp.get_status(server)
|
||||
LOG.debug('%(name)s check_suspend_complete status = %(status)s'
|
||||
% {'name': self.name, 'status': status})
|
||||
if status in list(cp.deferred_server_statuses + ['ACTIVE']):
|
||||
return status == 'SUSPENDED'
|
||||
else:
|
||||
exc = resource.ResourceUnknownStatus(
|
||||
result=_('Suspend of server %s failed') % server.name,
|
||||
resource_status=status)
|
||||
raise exc
|
||||
|
||||
def handle_resume(self):
|
||||
'''
|
||||
|
|
|
@ -999,28 +999,7 @@ class InstancesTest(common.HeatTestCase):
|
|||
scheduler.TaskRunner(instance.create)()
|
||||
self.assertEqual((instance.CREATE, instance.COMPLETE), instance.state)
|
||||
|
||||
def test_instance_status_suspend_immediate(self):
|
||||
return_server = self.fc.servers.list()[1]
|
||||
instance = self._create_test_instance(return_server,
|
||||
'in_suspend')
|
||||
|
||||
instance.resource_id = '1234'
|
||||
self.m.ReplayAll()
|
||||
|
||||
# Override the get_servers_1234 handler status to SUSPENDED
|
||||
d = {'server': self.fc.client.get_servers_detail()[1]['servers'][0]}
|
||||
d['server']['status'] = 'SUSPENDED'
|
||||
self.m.StubOutWithMock(self.fc.client, 'get_servers_1234')
|
||||
get = self.fc.client.get_servers_1234
|
||||
get().AndReturn((200, d))
|
||||
mox.Replay(get)
|
||||
|
||||
scheduler.TaskRunner(instance.suspend)()
|
||||
self.assertEqual((instance.SUSPEND, instance.COMPLETE), instance.state)
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_instance_status_suspend_wait(self):
|
||||
def test_instance_status_suspend(self):
|
||||
return_server = self.fc.servers.list()[1]
|
||||
instance = self._create_test_instance(return_server,
|
||||
'in_suspend_wait')
|
||||
|
|
|
@ -1757,28 +1757,7 @@ class ServersTest(common.HeatTestCase):
|
|||
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_server_status_suspend_immediate(self):
|
||||
return_server = self.fc.servers.list()[1]
|
||||
server = self._create_test_server(return_server,
|
||||
'srv_suspend3')
|
||||
|
||||
server.resource_id = '1234'
|
||||
self.m.ReplayAll()
|
||||
|
||||
# Override the get_servers_1234 handler status to SUSPENDED
|
||||
d = {'server': self.fc.client.get_servers_detail()[1]['servers'][0]}
|
||||
d['server']['status'] = 'SUSPENDED'
|
||||
self.m.StubOutWithMock(self.fc.client, 'get_servers_1234')
|
||||
get = self.fc.client.get_servers_1234
|
||||
get().AndReturn((200, d))
|
||||
mox.Replay(get)
|
||||
|
||||
scheduler.TaskRunner(server.suspend)()
|
||||
self.assertEqual((server.SUSPEND, server.COMPLETE), server.state)
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_server_status_suspend_wait(self):
|
||||
def test_server_status_suspend(self):
|
||||
return_server = self.fc.servers.list()[1]
|
||||
server = self._create_test_server(return_server,
|
||||
'srv_susp_w')
|
||||
|
@ -1827,9 +1806,10 @@ class ServersTest(common.HeatTestCase):
|
|||
|
||||
ex = self.assertRaises(exception.ResourceFailure,
|
||||
scheduler.TaskRunner(server.suspend))
|
||||
self.assertEqual('Error: Suspend of server sample-server failed '
|
||||
'with unknown status: TRANSMOGRIFIED',
|
||||
six.text_type(ex))
|
||||
self.assertIsInstance(ex.exc, resource.ResourceUnknownStatus)
|
||||
self.assertEqual('Suspend of server sample-server failed - '
|
||||
'Unknown status TRANSMOGRIFIED due to "Unknown"',
|
||||
six.text_type(ex.exc.message))
|
||||
self.assertEqual((server.SUSPEND, server.FAILED), server.state)
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
|
Loading…
Reference in New Issue