Add api for instance action details

There is the List Actions For Server API already provide in [1],
but the Show Server Action Details API [2] is often used too, so
add the show instance action details api, and replace it into the
used use case.

[1]https://docs.openstack.org/api-ref/compute/?expanded=#list-actions-for-server
   https://github.com/openstack/nova/blob/stable/train/nova/tests/functional/api/client.py#L428
[2]https://docs.openstack.org/api-ref/compute/?expanded=#show-server-action-details

Change-Id: I4d02f9ab3b87d741642cbc9ac263b0dd7617ad97
This commit is contained in:
zhangbailin 2019-12-20 16:40:17 +08:00
parent bbda16f634
commit 7ef623e6ec
3 changed files with 10 additions and 12 deletions

View File

@ -403,6 +403,10 @@ class TestOpenStackClient(object):
return self.api_get('/servers/%s/os-instance-actions' %
(server_id)).body['instanceActions']
def get_instance_action_details(self, server_id, request_id):
return self.api_get('/servers/%s/os-instance-actions/%s' %
(server_id, request_id)).body['instanceAction']
def post_aggregate(self, aggregate):
return self.api_post('/os-aggregates', aggregate).body['aggregate']

View File

@ -168,10 +168,8 @@ class InstanceHelperMixin(object):
if action['action'] != action_name:
continue
events = api.api_get(
'/servers/%s/os-instance-actions/%s' % (
server['id'], action['request_id'])
).body['instanceAction']['events']
events = api.get_instance_action_details(server['id'],
action['request_id'])['events']
# Look for the action event being in error state.
for event in events:

View File

@ -59,10 +59,8 @@ class ServerExternalEventsTestV276(
acts = {action['action']: action for action in actions}
self.assertEqual(['create', 'stop'], sorted(acts))
stop_action = acts[instance_actions.STOP]
detail = self.api.api_get(
'/servers/%s/os-instance-actions/%s' % (
server['id'], stop_action['request_id'])
).body['instanceAction']
detail = self.api.get_instance_action_details(server['id'],
stop_action['request_id'])
events_by_name = {event['event']: event for event in detail['events']}
self.assertEqual(1, len(detail['events']), detail)
self.assertIn('compute_power_update', events_by_name)
@ -87,10 +85,8 @@ class ServerExternalEventsTestV276(
acts = {action['action']: action for action in actions}
self.assertEqual(['create', 'start', 'stop'], sorted(acts))
start_action = acts[instance_actions.START]
detail = self.api.api_get(
'/servers/%s/os-instance-actions/%s' % (
server['id'], start_action['request_id'])
).body['instanceAction']
detail = self.api.get_instance_action_details(server['id'],
start_action['request_id'])
events_by_name = {event['event']: event for event in detail['events']}
self.assertEqual(1, len(detail['events']), detail)
self.assertIn('compute_power_update', events_by_name)