Merge "Change logic in find_resource() to identify upper-case/lower-case name."

This commit is contained in:
Jenkins 2015-02-05 17:12:05 +00:00 committed by Gerrit Code Review
commit ab6065b562
3 changed files with 33 additions and 16 deletions

View File

@ -41,6 +41,10 @@ class FakeManager(base.ManagerWithFind):
resources = [ resources = [
FakeResource('1234', {'name': 'entity_one'}), FakeResource('1234', {'name': 'entity_one'}),
FakeResource('12345', {'name': 'UPPER'}),
FakeResource('123456', {'name': 'lower'}),
FakeResource('1234567', {'name': 'Mixed'}),
FakeResource('12345678', {'name': 'mixed'}),
FakeResource(UUID, {'name': 'entity_two'}), FakeResource(UUID, {'name': 'entity_two'}),
FakeResource('5678', {'name': '9876'}), FakeResource('5678', {'name': '9876'}),
FakeResource('01234', {'name': 'entity_three'}) FakeResource('01234', {'name': 'entity_three'})
@ -118,6 +122,22 @@ class FindResourceTestCase(test_utils.TestCase):
output = utils.find_resource(self.manager, 'entity_one') output = utils.find_resource(self.manager, 'entity_one')
self.assertEqual(output, self.manager.get('1234')) self.assertEqual(output, self.manager.get('1234'))
def test_find_by_str_upper_name(self):
output = utils.find_resource(self.manager, 'UPPER')
self.assertEqual(output, self.manager.get('12345'))
def test_find_by_str_name(self):
output = utils.find_resource(self.manager, 'lower')
self.assertEqual(output, self.manager.get('123456'))
def test_find_by_str_mix_name(self):
output = utils.find_resource(self.manager, 'Mixed')
self.assertEqual(output, self.manager.get('1234567'))
def test_find_by_str_lower_name(self):
output = utils.find_resource(self.manager, 'mixed')
self.assertEqual(output, self.manager.get('12345678'))
def test_find_by_str_displayname(self): def test_find_by_str_displayname(self):
display_manager = FakeDisplayManager(None) display_manager = FakeDisplayManager(None)
output = utils.find_resource(display_manager, 'entity_three') output = utils.find_resource(display_manager, 'entity_three')

View File

@ -673,8 +673,7 @@ class ShellTest(utils.TestCase):
self.assert_called('GET', '/images/1', pos=0) self.assert_called('GET', '/images/1', pos=0)
self.assert_called('GET', '/flavors/512 MB Server', pos=1) self.assert_called('GET', '/flavors/512 MB Server', pos=1)
self.assert_called('GET', '/flavors?is_public=None', pos=2) self.assert_called('GET', '/flavors?is_public=None', pos=2)
self.assert_called('GET', '/flavors?is_public=None', pos=3) self.assert_called('GET', '/flavors/2', pos=3)
self.assert_called('GET', '/flavors/2', pos=4)
self.assert_called( self.assert_called(
'POST', '/servers', 'POST', '/servers',
{ {
@ -685,7 +684,7 @@ class ShellTest(utils.TestCase):
'min_count': 1, 'min_count': 1,
'max_count': 3, 'max_count': 3,
} }
}, pos=5) }, pos=4)
def test_flavor_list(self): def test_flavor_list(self):
self.run_command('flavor-list') self.run_command('flavor-list')
@ -712,17 +711,15 @@ class ShellTest(utils.TestCase):
self.run_command(['flavor-show', '128 MB Server']) self.run_command(['flavor-show', '128 MB Server'])
self.assert_called('GET', '/flavors/128 MB Server', pos=0) self.assert_called('GET', '/flavors/128 MB Server', pos=0)
self.assert_called('GET', '/flavors?is_public=None', pos=1) self.assert_called('GET', '/flavors?is_public=None', pos=1)
self.assert_called('GET', '/flavors?is_public=None', pos=2) self.assert_called('GET', '/flavors/aa1', pos=2)
self.assert_called('GET', '/flavors/aa1', pos=3) self.assert_called('GET', '/flavors/aa1/os-extra_specs', pos=3)
self.assert_called('GET', '/flavors/aa1/os-extra_specs', pos=4)
def test_flavor_show_by_name_priv(self): def test_flavor_show_by_name_priv(self):
self.run_command(['flavor-show', '512 MB Server']) self.run_command(['flavor-show', '512 MB Server'])
self.assert_called('GET', '/flavors/512 MB Server', pos=0) self.assert_called('GET', '/flavors/512 MB Server', pos=0)
self.assert_called('GET', '/flavors?is_public=None', pos=1) self.assert_called('GET', '/flavors?is_public=None', pos=1)
self.assert_called('GET', '/flavors?is_public=None', pos=2) self.assert_called('GET', '/flavors/2', pos=2)
self.assert_called('GET', '/flavors/2', pos=3) self.assert_called('GET', '/flavors/2/os-extra_specs', pos=3)
self.assert_called('GET', '/flavors/2/os-extra_specs', pos=4)
def test_flavor_key_set(self): def test_flavor_key_set(self):
self.run_command('flavor-key 1 set k1=v1') self.run_command('flavor-key 1 set k1=v1')
@ -2163,7 +2160,7 @@ class ShellTest(utils.TestCase):
self.run_command('volume-delete Work Work2') self.run_command('volume-delete Work Work2')
self.assert_called('DELETE', self.assert_called('DELETE',
'/volumes/15e59938-07d5-11e1-90e3-e3dffe0c5983', '/volumes/15e59938-07d5-11e1-90e3-e3dffe0c5983',
pos=-5) pos=-4)
self.assert_called('DELETE', self.assert_called('DELETE',
'/volumes/15e59938-07d5-11e1-90e3-ee32ba30feaa', '/volumes/15e59938-07d5-11e1-90e3-ee32ba30feaa',
pos=-1) pos=-1)

View File

@ -208,18 +208,18 @@ def find_resource(manager, name_or_id, **find_args):
pass pass
try: try:
try:
return manager.find(human_id=name_or_id, **find_args)
except exceptions.NotFound:
pass
# finally try to find entity by name
try: try:
resource = getattr(manager, 'resource_class', None) resource = getattr(manager, 'resource_class', None)
name_attr = resource.NAME_ATTR if resource else 'name' name_attr = resource.NAME_ATTR if resource else 'name'
kwargs = {name_attr: name_or_id} kwargs = {name_attr: name_or_id}
kwargs.update(find_args) kwargs.update(find_args)
return manager.find(**kwargs) return manager.find(**kwargs)
except exceptions.NotFound:
pass
# finally try to find entity by human_id
try:
return manager.find(human_id=name_or_id, **find_args)
except exceptions.NotFound: except exceptions.NotFound:
msg = (_("No %(class)s with a name or ID of '%(name)s' exists.") % msg = (_("No %(class)s with a name or ID of '%(name)s' exists.") %
{'class': manager.resource_class.__name__.lower(), {'class': manager.resource_class.__name__.lower(),