Add nova client functions to shutdown and activate Nova server
Change-Id: I5cd46dd56d7ace7258d9f334320368977ab3a861
This commit is contained in:
parent
e91356faeb
commit
1f0611f058
@ -31,6 +31,8 @@ nova_client = _client.nova_client
|
|||||||
NovaClientFixture = _client.NovaClientFixture
|
NovaClientFixture = _client.NovaClientFixture
|
||||||
wait_for_server_status = _client.wait_for_server_status
|
wait_for_server_status = _client.wait_for_server_status
|
||||||
ServerStatusTimeout = _client.ServerStatusTimeout
|
ServerStatusTimeout = _client.ServerStatusTimeout
|
||||||
|
shutoff_server = _client.shutoff_server
|
||||||
|
activate_server = _client.activate_server
|
||||||
|
|
||||||
skip_if_missing_hypervisors = _hypervisor.skip_if_missing_hypervisors
|
skip_if_missing_hypervisors = _hypervisor.skip_if_missing_hypervisors
|
||||||
get_same_host_hypervisors = _hypervisor.get_same_host_hypervisors
|
get_same_host_hypervisors = _hypervisor.get_same_host_hypervisors
|
||||||
|
@ -150,20 +150,52 @@ class ServerStatusTimeout(tobiko.TobikoException):
|
|||||||
"status after {timeout} seconds")
|
"status after {timeout} seconds")
|
||||||
|
|
||||||
|
|
||||||
def wait_for_server_status(server_id, status, client=None, timeout=30.,
|
def wait_for_server_status(server, status, client=None, timeout=None,
|
||||||
sleep_time=5.):
|
sleep_time=None):
|
||||||
|
if timeout is None:
|
||||||
|
timeout = 300.
|
||||||
|
if sleep_time is None:
|
||||||
|
sleep_time = 5.
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
while True:
|
while True:
|
||||||
server = get_server(server_id, client)
|
server = get_server(server=server, client=client)
|
||||||
if server.status == status:
|
if server.status == status:
|
||||||
break
|
break
|
||||||
|
|
||||||
if time.time() - start_time >= timeout:
|
if time.time() - start_time >= timeout:
|
||||||
raise ServerStatusTimeout(server_id=server_id,
|
raise ServerStatusTimeout(server_id=server.id,
|
||||||
status=status,
|
status=status,
|
||||||
timeout=timeout)
|
timeout=timeout)
|
||||||
|
|
||||||
LOG.debug('Waiting for server %r status to get from %r to %r',
|
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)
|
time.sleep(sleep_time)
|
||||||
return server
|
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):
|
def test_wait_for_server_status(self):
|
||||||
server_id = self.stack.server_id
|
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(server_id, server.id)
|
||||||
self.assertEqual('ACTIVE', server.status)
|
self.assertEqual('ACTIVE', server.status)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user