summaryrefslogtreecommitdiff
path: root/openstackclient/tests
diff options
context:
space:
mode:
authormelanie witt <melwittt@gmail.com>2022-02-09 19:48:42 +0000
committermelanie witt <melwittt@gmail.com>2022-02-09 23:26:25 +0000
commit72a2477ec07851f13dbc05e6777f7f60573d75dd (patch)
treeb9045c454daa5a686e4a1387653e9ff8426a4ec0 /openstackclient/tests
parent27843fc232622a756d0c6a0e7d4ddecbddb2ae11 (diff)
downloadpython-openstackclient-72a2477ec07851f13dbc05e6777f7f60573d75dd.tar.gz
Fix 'server event list|show' for deleted servers
As of compute microversion >= 2.21, support for list and show of server events for deleted servers was added. This however wasn't working using the openstackclient because the compute GET /servers/{server_id} will not return a deleted server, so osc_lib.utils.find_resource() fails to find the server and the command bails early. This adds a check for a uuid-like <server> arg and uses it directly if the <server> cannot be found via find_resource(). A note is also added to the command help to indicate that list and show for deleted servers will only work if a server ID is passed (name will not work). Story: 2009841 Task: 44443 Change-Id: Icd33b3b9a3a1855d7893dd111bbb2aca059f45fd
Diffstat (limited to 'openstackclient/tests')
-rw-r--r--openstackclient/tests/functional/compute/v2/test_server_event.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/openstackclient/tests/functional/compute/v2/test_server_event.py b/openstackclient/tests/functional/compute/v2/test_server_event.py
index 953ade43..b4725fe6 100644
--- a/openstackclient/tests/functional/compute/v2/test_server_event.py
+++ b/openstackclient/tests/functional/compute/v2/test_server_event.py
@@ -82,3 +82,38 @@ class ServerEventTests(common.ComputeTestCase):
self.assertEqual('reboot', cmd_output.get('action'))
self.assertIsNotNone(cmd_output.get('events'))
self.assertIsInstance(cmd_output.get('events'), list)
+
+ def test_server_event_list_and_show_deleted_server(self):
+ # Need to create a new server that will not attempt cleanup because we
+ # are going to delete it during the test and cleanup would fail with
+ # 404.
+ cmd_output = self.server_create(cleanup=False)
+ server_id = cmd_output['id']
+ # Delete the server
+ self.openstack('server delete --wait ' + server_id)
+ # And verify we can get the event list after it's deleted
+ # Test 'server event list' for deleting
+ cmd_output = json.loads(self.openstack(
+ '--os-compute-api-version 2.21 '
+ 'server event list -f json ' + server_id
+ ))
+ request_id = None
+ for each_event in cmd_output:
+ self.assertNotIn('Message', each_event)
+ self.assertNotIn('Project ID', each_event)
+ self.assertNotIn('User ID', each_event)
+ if each_event.get('Action') == 'delete':
+ self.assertEqual(server_id, each_event.get('Server ID'))
+ request_id = each_event.get('Request ID')
+ break
+ self.assertIsNotNone(request_id)
+ # Test 'server event show' for deleting
+ cmd_output = json.loads(self.openstack(
+ '--os-compute-api-version 2.21 '
+ 'server event show -f json ' + server_id + ' ' + request_id
+ ))
+ self.assertEqual(server_id, cmd_output.get('instance_uuid'))
+ self.assertEqual(request_id, cmd_output.get('request_id'))
+ self.assertEqual('delete', cmd_output.get('action'))
+ self.assertIsNotNone(cmd_output.get('events'))
+ self.assertIsInstance(cmd_output.get('events'), list)