Add nova client functions to shutdown and activate Nova server
Change-Id: I5cd46dd56d7ace7258d9f334320368977ab3a861changes/34/704334/1
parent
e91356faeb
commit
1f0611f058
|
@ -31,6 +31,8 @@ nova_client = _client.nova_client
|
|||
NovaClientFixture = _client.NovaClientFixture
|
||||
wait_for_server_status = _client.wait_for_server_status
|
||||
ServerStatusTimeout = _client.ServerStatusTimeout
|
||||
shutoff_server = _client.shutoff_server
|
||||
activate_server = _client.activate_server
|
||||
|
||||
skip_if_missing_hypervisors = _hypervisor.skip_if_missing_hypervisors
|
||||
get_same_host_hypervisors = _hypervisor.get_same_host_hypervisors
|
||||
|
|
|
@ -150,20 +150,52 @@ class ServerStatusTimeout(tobiko.TobikoException):
|
|||
"status after {timeout} seconds")
|
||||
|
||||
|
||||
def wait_for_server_status(server_id, status, client=None, timeout=30.,
|
||||
sleep_time=5.):
|
||||
def wait_for_server_status(server, status, client=None, timeout=None,
|
||||
sleep_time=None):
|
||||
if timeout is None:
|
||||
timeout = 300.
|
||||
if sleep_time is None:
|
||||
sleep_time = 5.
|
||||
start_time = time.time()
|
||||
while True:
|
||||
server = get_server(server_id, client)
|
||||
server = get_server(server=server, client=client)
|
||||
if server.status == status:
|
||||
break
|
||||
|
||||
if time.time() - start_time >= timeout:
|
||||
raise ServerStatusTimeout(server_id=server_id,
|
||||
raise ServerStatusTimeout(server_id=server.id,
|
||||
status=status,
|
||||
timeout=timeout)
|
||||
|
||||
LOG.debug('Waiting for server %r status to get from %r to %r',
|
||||
server_id, server.status, status)
|
||||
server.id, server.status, status)
|
||||
time.sleep(sleep_time)
|
||||
return server
|
||||
|
||||
|
||||
def shutoff_server(server, client=None, timeout=None, sleep_time=None):
|
||||
client = nova_client(client)
|
||||
server = get_server(server=server, client=client)
|
||||
if server.status == 'SHUTOFF':
|
||||
return server
|
||||
|
||||
client.servers.stop(server.id)
|
||||
return wait_for_server_status(server=server.id, status='SHUTOFF',
|
||||
client=client, timeout=timeout,
|
||||
sleep_time=sleep_time)
|
||||
|
||||
|
||||
def activate_server(server, client=None, timeout=None, sleep_time=None):
|
||||
client = nova_client(client)
|
||||
server = get_server(server=server, client=client)
|
||||
if server.status == 'ACTIVE':
|
||||
return server
|
||||
|
||||
if server.status == 'SHUTOFF':
|
||||
client.servers.start(server.id)
|
||||
else:
|
||||
client.servers.reboot(server.id, reboot_type='HARD')
|
||||
|
||||
return wait_for_server_status(server=server.id, status='ACTIVE',
|
||||
client=client, timeout=timeout,
|
||||
sleep_time=sleep_time)
|
||||
|
|
|
@ -96,7 +96,23 @@ class ClientTest(testtools.TestCase):
|
|||
|
||||
def test_wait_for_server_status(self):
|
||||
server_id = self.stack.server_id
|
||||
server = nova.wait_for_server_status(server_id, 'ACTIVE')
|
||||
server = nova.wait_for_server_status(server=server_id, status='ACTIVE')
|
||||
self.assertEqual(server_id, server.id)
|
||||
self.assertEqual('ACTIVE', server.status)
|
||||
|
||||
def test_shutof_and_activate_server(self):
|
||||
server_id = self.useFixture(stacks.CirrosServerStackFixture(
|
||||
stack_name=self.id())).server_id
|
||||
|
||||
server = nova.wait_for_server_status(server=server_id, status='ACTIVE')
|
||||
self.assertEqual(server_id, server.id)
|
||||
self.assertEqual('ACTIVE', server.status)
|
||||
|
||||
server = nova.shutoff_server(server=server_id)
|
||||
self.assertEqual(server_id, server.id)
|
||||
self.assertEqual('SHUTOFF', server.status)
|
||||
|
||||
server = nova.activate_server(server=server_id)
|
||||
self.assertEqual(server_id, server.id)
|
||||
self.assertEqual('ACTIVE', server.status)
|
||||
|
||||
|
|
Loading…
Reference in New Issue