Merge "Remove duplicate find request in find_resource"

This commit is contained in:
Jenkins
2015-04-24 18:19:43 +00:00
committed by Gerrit Code Review
2 changed files with 19 additions and 17 deletions

View File

@@ -14,6 +14,7 @@
import collections import collections
import sys import sys
import mock
from six import moves from six import moves
from cinderclient import exceptions from cinderclient import exceptions
@@ -66,10 +67,12 @@ class FindResourceTestCase(test_utils.TestCase):
self.manager = FakeManager(None) self.manager = FakeManager(None)
def test_find_none(self): def test_find_none(self):
self.manager.find = mock.Mock(side_effect=self.manager.find)
self.assertRaises(exceptions.CommandError, self.assertRaises(exceptions.CommandError,
utils.find_resource, utils.find_resource,
self.manager, self.manager,
'asdf') 'asdf')
self.assertEqual(3, self.manager.find.call_count)
def test_find_by_integer_id(self): def test_find_by_integer_id(self):
output = utils.find_resource(self.manager, 1234) output = utils.find_resource(self.manager, 1234)

View File

@@ -166,17 +166,17 @@ def find_resource(manager, name_or_id):
return manager.get(int(name_or_id)) return manager.get(int(name_or_id))
except exceptions.NotFound: except exceptions.NotFound:
pass pass
else:
# now try to get entity as uuid
try:
uuid.UUID(name_or_id)
return manager.get(name_or_id)
except (ValueError, exceptions.NotFound):
pass
if sys.version_info <= (3, 0): if sys.version_info <= (3, 0):
name_or_id = strutils.safe_decode(name_or_id) name_or_id = strutils.safe_decode(name_or_id)
# now try to get entity as uuid
try:
uuid.UUID(name_or_id)
return manager.get(name_or_id)
except (ValueError, exceptions.NotFound):
pass
try: try:
try: try:
return manager.find(human_id=name_or_id) return manager.find(human_id=name_or_id)
@@ -187,16 +187,15 @@ def find_resource(manager, name_or_id):
try: try:
return manager.find(name=name_or_id) return manager.find(name=name_or_id)
except exceptions.NotFound: except exceptions.NotFound:
try: pass
return manager.find(display_name=name_or_id)
except (UnicodeDecodeError, exceptions.NotFound): # Volumes don't have name, but display_name
try: try:
# Volumes does not have name, but display_name return manager.find(display_name=name_or_id)
return manager.find(display_name=name_or_id) except (UnicodeDecodeError, exceptions.NotFound):
except exceptions.NotFound: msg = "No %s with a name or ID of '%s' exists." % \
msg = "No %s with a name or ID of '%s' exists." % \ (manager.resource_class.__name__.lower(), name_or_id)
(manager.resource_class.__name__.lower(), name_or_id) raise exceptions.CommandError(msg)
raise exceptions.CommandError(msg)
except exceptions.NoUniqueMatch: except exceptions.NoUniqueMatch:
msg = ("Multiple %s matches found for '%s', use an ID to be more" msg = ("Multiple %s matches found for '%s', use an ID to be more"
" specific." % (manager.resource_class.__name__.lower(), " specific." % (manager.resource_class.__name__.lower(),