Fix find for alphanumeic flavor id/name
Fixes LP bug #1089299 Change-Id: Ia9cc756b85096532acfc9ecacd1330de8a765fba
This commit is contained in:
parent
8d3650048a
commit
9937419888
@ -192,6 +192,13 @@ def find_resource(manager, name_or_id):
|
||||
except (ValueError, exceptions.NotFound):
|
||||
pass
|
||||
|
||||
# for str id which is not uuid (for Flavor search currently)
|
||||
if getattr(manager, 'is_alphanum_id_allowed', False):
|
||||
try:
|
||||
return manager.get(name_or_id)
|
||||
except exceptions.NotFound:
|
||||
pass
|
||||
|
||||
try:
|
||||
try:
|
||||
return manager.find(human_id=name_or_id)
|
||||
|
@ -74,6 +74,7 @@ class FlavorManager(base.ManagerWithFind):
|
||||
Manage :class:`Flavor` resources.
|
||||
"""
|
||||
resource_class = Flavor
|
||||
is_alphanum_id_allowed = True
|
||||
|
||||
def list(self, detailed=True):
|
||||
"""
|
||||
|
@ -506,7 +506,8 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
def get_flavors(self, **kw):
|
||||
return (200, {'flavors': [
|
||||
{'id': 1, 'name': '256 MB Server'},
|
||||
{'id': 2, 'name': '512 MB Server'}
|
||||
{'id': 2, 'name': '512 MB Server'},
|
||||
{'id': 'aa1', 'name': '128 MB Server'}
|
||||
]})
|
||||
|
||||
def get_flavors_detail(self, **kw):
|
||||
@ -519,6 +520,10 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
'OS-FLV-EXT-DATA:ephemeral': 20,
|
||||
'os-flavor-access:is_public': False,
|
||||
'links': {}},
|
||||
{'id': 'aa1', 'name': '128 MB Server', 'ram': 128, 'disk': 0,
|
||||
'OS-FLV-EXT-DATA:ephemeral': 0,
|
||||
'os-flavor-access:is_public': True,
|
||||
'links': {}}
|
||||
]})
|
||||
|
||||
def get_flavors_1(self, **kw):
|
||||
@ -532,6 +537,10 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
return (200, {'flavor': {'id': 3, 'name': '256 MB Server',
|
||||
'ram': 256, 'disk': 10}})
|
||||
|
||||
def get_flavors_aa1(self, **kw):
|
||||
# Aplhanumeric flavor id are allowed.
|
||||
return (200, {'flavor': self.get_flavors_detail()[1]['flavors'][2]})
|
||||
|
||||
def delete_flavors_flavordelete(self, **kw):
|
||||
return (202, None)
|
||||
|
||||
@ -546,6 +555,10 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
return (200,
|
||||
{'extra_specs': {"k2": "v2"}})
|
||||
|
||||
def get_flavors_aa1_os_extra_specs(self, **kw):
|
||||
return (200,
|
||||
{'extra_specs': {"k3": "v3"}})
|
||||
|
||||
def post_flavors_1_os_extra_specs(self, body, **kw):
|
||||
assert body.keys() == ['extra_specs']
|
||||
fakes.assert_has_keys(body['extra_specs'],
|
||||
|
@ -28,6 +28,15 @@ class FlavorsTest(utils.TestCase):
|
||||
self.assertEqual(f.ephemeral, 10)
|
||||
self.assertEqual(f.is_public, True)
|
||||
|
||||
def test_get_flavor_details_alphanum_id(self):
|
||||
f = cs.flavors.get('aa1')
|
||||
cs.assert_called('GET', '/flavors/aa1')
|
||||
self.assertTrue(isinstance(f, flavors.Flavor))
|
||||
self.assertEqual(f.ram, 128)
|
||||
self.assertEqual(f.disk, 0)
|
||||
self.assertEqual(f.ephemeral, 0)
|
||||
self.assertEqual(f.is_public, True)
|
||||
|
||||
def test_get_flavor_details_diablo(self):
|
||||
f = cs.flavors.get(3)
|
||||
cs.assert_called('GET', '/flavors/3')
|
||||
|
@ -226,13 +226,17 @@ class ShellTest(utils.TestCase):
|
||||
|
||||
def test_flavor_list(self):
|
||||
self.run_command('flavor-list')
|
||||
self.assert_called('GET', '/flavors/2/os-extra_specs')
|
||||
self.assert_called('GET', '/flavors/aa1/os-extra_specs')
|
||||
self.assert_called_anytime('GET', '/flavors/detail')
|
||||
|
||||
def test_flavor_show(self):
|
||||
self.run_command('flavor-show 1')
|
||||
self.assert_called_anytime('GET', '/flavors/1')
|
||||
|
||||
def test_flavor_show_with_alphanum_id(self):
|
||||
self.run_command('flavor-show aa1')
|
||||
self.assert_called_anytime('GET', '/flavors/aa1')
|
||||
|
||||
def test_image_show(self):
|
||||
self.run_command('image-show 1')
|
||||
self.assert_called('GET', '/images/1')
|
||||
|
Loading…
x
Reference in New Issue
Block a user