attempt to find resource by listing

add a last-ditch effort to find the resource in question by
listing all the resources and doing a simply match for name and
id. if no match is found then raise an error, if the list call
is unsuccessful, raise the same error. we have failed this city.

Closes-Bug: #1501362

Change-Id: I0d3d7002e9ac47b17b1ef1a5534406c85b1fc753
This commit is contained in:
Steve Martinelli 2015-09-24 23:39:37 -04:00 committed by Dean Troyer
parent 05f5e043d8
commit 83282bc5e1
1 changed files with 18 additions and 2 deletions

View File

@ -121,8 +121,24 @@ def find_resource(manager, name_or_id, **kwargs):
(manager.resource_class.__name__.lower(), name_or_id)
raise exceptions.CommandError(msg)
else:
msg = "Could not find resource %s" % name_or_id
raise exceptions.CommandError(msg)
pass
try:
for resource in manager.list():
# short circuit and return the first match
if (resource.get('id') == name_or_id or
resource.get('name') == name_or_id):
return resource
else:
# we found no match, keep going to bomb out
pass
except Exception:
# in case the list fails for some reason
pass
# if we hit here, we've failed, report back this error:
msg = "Could not find resource %s" % name_or_id
raise exceptions.CommandError(msg)
def format_dict(data):