Merge "Fix find for alphanumeic flavor id/name"
This commit is contained in:
commit
c946fd2b84
@ -192,6 +192,13 @@ def find_resource(manager, name_or_id):
|
|||||||
except (ValueError, exceptions.NotFound):
|
except (ValueError, exceptions.NotFound):
|
||||||
pass
|
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:
|
||||||
try:
|
try:
|
||||||
return manager.find(human_id=name_or_id)
|
return manager.find(human_id=name_or_id)
|
||||||
|
@ -74,6 +74,7 @@ class FlavorManager(base.ManagerWithFind):
|
|||||||
Manage :class:`Flavor` resources.
|
Manage :class:`Flavor` resources.
|
||||||
"""
|
"""
|
||||||
resource_class = Flavor
|
resource_class = Flavor
|
||||||
|
is_alphanum_id_allowed = True
|
||||||
|
|
||||||
def list(self, detailed=True):
|
def list(self, detailed=True):
|
||||||
"""
|
"""
|
||||||
|
@ -506,7 +506,8 @@ class FakeHTTPClient(base_client.HTTPClient):
|
|||||||
def get_flavors(self, **kw):
|
def get_flavors(self, **kw):
|
||||||
return (200, {'flavors': [
|
return (200, {'flavors': [
|
||||||
{'id': 1, 'name': '256 MB Server'},
|
{'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):
|
def get_flavors_detail(self, **kw):
|
||||||
@ -519,6 +520,10 @@ class FakeHTTPClient(base_client.HTTPClient):
|
|||||||
'OS-FLV-EXT-DATA:ephemeral': 20,
|
'OS-FLV-EXT-DATA:ephemeral': 20,
|
||||||
'os-flavor-access:is_public': False,
|
'os-flavor-access:is_public': False,
|
||||||
'links': {}},
|
'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):
|
def get_flavors_1(self, **kw):
|
||||||
@ -532,6 +537,10 @@ class FakeHTTPClient(base_client.HTTPClient):
|
|||||||
return (200, {'flavor': {'id': 3, 'name': '256 MB Server',
|
return (200, {'flavor': {'id': 3, 'name': '256 MB Server',
|
||||||
'ram': 256, 'disk': 10}})
|
'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):
|
def delete_flavors_flavordelete(self, **kw):
|
||||||
return (202, None)
|
return (202, None)
|
||||||
|
|
||||||
@ -546,6 +555,10 @@ class FakeHTTPClient(base_client.HTTPClient):
|
|||||||
return (200,
|
return (200,
|
||||||
{'extra_specs': {"k2": "v2"}})
|
{'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):
|
def post_flavors_1_os_extra_specs(self, body, **kw):
|
||||||
assert body.keys() == ['extra_specs']
|
assert body.keys() == ['extra_specs']
|
||||||
fakes.assert_has_keys(body['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.ephemeral, 10)
|
||||||
self.assertEqual(f.is_public, True)
|
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):
|
def test_get_flavor_details_diablo(self):
|
||||||
f = cs.flavors.get(3)
|
f = cs.flavors.get(3)
|
||||||
cs.assert_called('GET', '/flavors/3')
|
cs.assert_called('GET', '/flavors/3')
|
||||||
|
@ -226,13 +226,17 @@ class ShellTest(utils.TestCase):
|
|||||||
|
|
||||||
def test_flavor_list(self):
|
def test_flavor_list(self):
|
||||||
self.run_command('flavor-list')
|
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')
|
self.assert_called_anytime('GET', '/flavors/detail')
|
||||||
|
|
||||||
def test_flavor_show(self):
|
def test_flavor_show(self):
|
||||||
self.run_command('flavor-show 1')
|
self.run_command('flavor-show 1')
|
||||||
self.assert_called_anytime('GET', '/flavors/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):
|
def test_image_show(self):
|
||||||
self.run_command('image-show 1')
|
self.run_command('image-show 1')
|
||||||
self.assert_called('GET', '/images/1')
|
self.assert_called('GET', '/images/1')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user