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:
@@ -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)
|
||||
|
@@ -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(),
|
||||
|
Reference in New Issue
Block a user