1919
2020import iso8601
2121from novaclient import api_versions
22+ import openstack .cloud ._utils
2223from osc_lib .command import command
2324from osc_lib import exceptions
2425from osc_lib import utils
@@ -33,7 +34,7 @@ class ListServerEvent(command.Lister):
3334 """List recent events of a server.
3435
3536 Specify ``--os-compute-api-version 2.21`` or higher to show events for a
36- deleted server.
37+ deleted server, specified by ID only .
3738 """
3839
3940 def get_parser (self , prog_name ):
@@ -143,9 +144,18 @@ def take_action(self, parsed_args):
143144
144145 kwargs ['changes_before' ] = parsed_args .changes_before
145146
146- server_id = utils .find_resource (
147- compute_client .servers , parsed_args .server ,
148- ).id
147+ try :
148+ server_id = utils .find_resource (
149+ compute_client .servers , parsed_args .server ,
150+ ).id
151+ except exceptions .CommandError :
152+ # If we fail to find the resource, it is possible the server is
153+ # deleted. Try once more using the <server> arg directly if it is a
154+ # UUID.
155+ if openstack .cloud ._utils ._is_uuid_like (parsed_args .server ):
156+ server_id = parsed_args .server
157+ else :
158+ raise
149159
150160 data = compute_client .instance_action .list (server_id , ** kwargs )
151161
@@ -184,8 +194,9 @@ class ShowServerEvent(command.ShowOne):
184194 """Show server event details.
185195
186196 Specify ``--os-compute-api-version 2.21`` or higher to show event details
187- for a deleted server. Specify ``--os-compute-api-version 2.51`` or higher
188- to show event details for non-admin users.
197+ for a deleted server, specified by ID only. Specify
198+ ``--os-compute-api-version 2.51`` or higher to show event details for
199+ non-admin users.
189200 """
190201
191202 def get_parser (self , prog_name ):
@@ -205,9 +216,18 @@ def get_parser(self, prog_name):
205216 def take_action (self , parsed_args ):
206217 compute_client = self .app .client_manager .compute
207218
208- server_id = utils .find_resource (
209- compute_client .servers , parsed_args .server ,
210- ).id
219+ try :
220+ server_id = utils .find_resource (
221+ compute_client .servers , parsed_args .server ,
222+ ).id
223+ except exceptions .CommandError :
224+ # If we fail to find the resource, it is possible the server is
225+ # deleted. Try once more using the <server> arg directly if it is a
226+ # UUID.
227+ if openstack .cloud ._utils ._is_uuid_like (parsed_args .server ):
228+ server_id = parsed_args .server
229+ else :
230+ raise
211231
212232 action_detail = compute_client .instance_action .get (
213233 server_id , parsed_args .request_id
0 commit comments