Remove duplicate find request in find_resource

Removed duplicate manager.find method call using search argument
display_name that affected any command that searches for a volume by
display_name or any command that searches for non existent volumes.

Change-Id: I86c99b41dd231b058ed3f6d5d78eafe35a111dec
Closes-Bug: #1429102
This commit is contained in:
Gorka Eguileor
2015-03-06 13:13:05 +01:00
parent e5a1304791
commit 6ebe6e98d7
2 changed files with 19 additions and 17 deletions

View File

@@ -14,6 +14,7 @@
import collections
import sys
import mock
from six import moves
from cinderclient import exceptions
@@ -66,10 +67,12 @@ class FindResourceTestCase(test_utils.TestCase):
self.manager = FakeManager(None)
def test_find_none(self):
self.manager.find = mock.Mock(side_effect=self.manager.find)
self.assertRaises(exceptions.CommandError,
utils.find_resource,
self.manager,
'asdf')
self.assertEqual(3, self.manager.find.call_count)
def test_find_by_integer_id(self):
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))
except exceptions.NotFound:
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):
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:
return manager.find(human_id=name_or_id)
@@ -187,16 +187,15 @@ def find_resource(manager, name_or_id):
try:
return manager.find(name=name_or_id)
except exceptions.NotFound:
try:
return manager.find(display_name=name_or_id)
except (UnicodeDecodeError, exceptions.NotFound):
try:
# Volumes does not have name, but display_name
return manager.find(display_name=name_or_id)
except exceptions.NotFound:
msg = "No %s with a name or ID of '%s' exists." % \
(manager.resource_class.__name__.lower(), name_or_id)
raise exceptions.CommandError(msg)
pass
# Volumes don't have name, but display_name
try:
return manager.find(display_name=name_or_id)
except (UnicodeDecodeError, exceptions.NotFound):
msg = "No %s with a name or ID of '%s' exists." % \
(manager.resource_class.__name__.lower(), name_or_id)
raise exceptions.CommandError(msg)
except exceptions.NoUniqueMatch:
msg = ("Multiple %s matches found for '%s', use an ID to be more"
" specific." % (manager.resource_class.__name__.lower(),