Merge "Look for all accessible flavors by default, not just public ones"
This commit is contained in:
commit
37f02bde12
novaclient
@ -750,6 +750,9 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
def get_flavors_512_MB_Server(self, **kw):
|
||||
raise exceptions.NotFound('404')
|
||||
|
||||
def get_flavors_128_MB_Server(self, **kw):
|
||||
raise exceptions.NotFound('404')
|
||||
|
||||
def get_flavors_aa1(self, **kw):
|
||||
# Alphanumeric flavor id are allowed.
|
||||
return (
|
||||
|
@ -661,6 +661,27 @@ class ShellTest(utils.TestCase):
|
||||
self.assertRaises(exceptions.InstanceInErrorState, self.run_command,
|
||||
'boot --flavor 1 --image 1 some-bad-server --poll')
|
||||
|
||||
def test_boot_named_flavor(self):
|
||||
self.run_command(["boot", "--image", "1",
|
||||
"--flavor", "512 MB Server",
|
||||
"--max-count", "3", "server"])
|
||||
self.assert_called('GET', '/images/1', pos=0)
|
||||
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=3)
|
||||
self.assert_called('GET', '/flavors/2', pos=4)
|
||||
self.assert_called(
|
||||
'POST', '/servers',
|
||||
{
|
||||
'server': {
|
||||
'flavorRef': '2',
|
||||
'name': 'server',
|
||||
'imageRef': '1',
|
||||
'min_count': 1,
|
||||
'max_count': 3,
|
||||
}
|
||||
}, pos=5)
|
||||
|
||||
def test_flavor_list(self):
|
||||
self.run_command('flavor-list')
|
||||
self.assert_called_anytime('GET', '/flavors/detail')
|
||||
@ -682,6 +703,22 @@ class ShellTest(utils.TestCase):
|
||||
self.run_command('flavor-show aa1')
|
||||
self.assert_called_anytime('GET', '/flavors/aa1')
|
||||
|
||||
def test_flavor_show_by_name(self):
|
||||
self.run_command(['flavor-show', '128 MB Server'])
|
||||
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=2)
|
||||
self.assert_called('GET', '/flavors/aa1', pos=3)
|
||||
self.assert_called('GET', '/flavors/aa1/os-extra_specs', pos=4)
|
||||
|
||||
def test_flavor_show_by_name_priv(self):
|
||||
self.run_command(['flavor-show', '512 MB Server'])
|
||||
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=2)
|
||||
self.assert_called('GET', '/flavors/2', pos=3)
|
||||
self.assert_called('GET', '/flavors/2/os-extra_specs', pos=4)
|
||||
|
||||
def test_flavor_key_set(self):
|
||||
self.run_command('flavor-key 1 set k1=v1')
|
||||
self.assert_called('POST', '/flavors/1/os-extra_specs',
|
||||
|
@ -120,6 +120,10 @@ class FakeHTTPClient(fakes_v1_1.FakeHTTPClient):
|
||||
#
|
||||
get_flavors_2_flavor_access = (
|
||||
fakes_v1_1.FakeHTTPClient.get_flavors_2_os_flavor_access)
|
||||
get_flavors_2_flavor_extra_specs = (
|
||||
fakes_v1_1.FakeHTTPClient.get_flavors_2_os_extra_specs)
|
||||
get_flavors_aa1_flavor_extra_specs = (
|
||||
fakes_v1_1.FakeHTTPClient.get_flavors_aa1_os_extra_specs)
|
||||
|
||||
#
|
||||
# Images
|
||||
|
@ -558,3 +558,39 @@ class ShellTest(utils.TestCase):
|
||||
def test_boot_with_poll_to_check_VM_state_error(self):
|
||||
self.assertRaises(exceptions.InstanceInErrorState, self.run_command,
|
||||
'boot --flavor 1 --image 1 some-bad-server --poll')
|
||||
|
||||
def test_boot_named_flavor(self):
|
||||
self.run_command(["boot", "--image", "1",
|
||||
"--flavor", "512 MB Server",
|
||||
"--max-count", "3", "server"])
|
||||
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=2)
|
||||
self.assert_called('GET', '/flavors/2', pos=3)
|
||||
self.assert_called(
|
||||
'POST', '/servers',
|
||||
{
|
||||
'server': {
|
||||
'flavor_ref': '2',
|
||||
'name': 'server',
|
||||
'image_ref': '1',
|
||||
'os-multiple-create:min_count': 1,
|
||||
'os-multiple-create:max_count': 3,
|
||||
}
|
||||
}, pos=4)
|
||||
|
||||
def test_flavor_show_by_name(self):
|
||||
self.run_command(['flavor-show', '128 MB Server'])
|
||||
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=2)
|
||||
self.assert_called('GET', '/flavors/aa1', pos=3)
|
||||
self.assert_called('GET', '/flavors/aa1/flavor-extra-specs', pos=4)
|
||||
|
||||
def test_flavor_show_by_name_priv(self):
|
||||
self.run_command(['flavor-show', '512 MB Server'])
|
||||
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=2)
|
||||
self.assert_called('GET', '/flavors/2', pos=3)
|
||||
self.assert_called('GET', '/flavors/2/flavor-extra-specs', pos=4)
|
||||
|
@ -733,7 +733,7 @@ def do_flavor_access_list(cs, args):
|
||||
help=_('Tenant ID to add flavor access for.'))
|
||||
def do_flavor_access_add(cs, args):
|
||||
"""Add flavor access for the given tenant."""
|
||||
flavor = _find_flavor_for_admin(cs, args.flavor)
|
||||
flavor = _find_flavor(cs, args.flavor)
|
||||
access_list = cs.flavor_access.add_tenant_access(flavor, args.tenant)
|
||||
columns = ['Flavor_ID', 'Tenant_ID']
|
||||
utils.print_list(access_list, columns)
|
||||
@ -746,7 +746,7 @@ def do_flavor_access_add(cs, args):
|
||||
help=_('Tenant ID to remove flavor access for.'))
|
||||
def do_flavor_access_remove(cs, args):
|
||||
"""Remove flavor access for the given tenant."""
|
||||
flavor = _find_flavor_for_admin(cs, args.flavor)
|
||||
flavor = _find_flavor(cs, args.flavor)
|
||||
access_list = cs.flavor_access.remove_tenant_access(flavor, args.tenant)
|
||||
columns = ['Flavor_ID', 'Tenant_ID']
|
||||
utils.print_list(access_list, columns)
|
||||
@ -1578,18 +1578,10 @@ def _find_image(cs, image):
|
||||
return utils.find_resource(cs.images, image)
|
||||
|
||||
|
||||
def _find_flavor_for_admin(cs, flavor):
|
||||
"""Get a flavor for administrator by name, ID, or RAM size."""
|
||||
try:
|
||||
return utils.find_resource(cs.flavors, flavor, is_public=None)
|
||||
except exceptions.NotFound:
|
||||
return cs.flavors.find(ram=flavor)
|
||||
|
||||
|
||||
def _find_flavor(cs, flavor):
|
||||
"""Get a flavor by name, ID, or RAM size."""
|
||||
try:
|
||||
return utils.find_resource(cs.flavors, flavor)
|
||||
return utils.find_resource(cs.flavors, flavor, is_public=None)
|
||||
except exceptions.NotFound:
|
||||
return cs.flavors.find(ram=flavor)
|
||||
|
||||
|
@ -1395,7 +1395,7 @@ def _find_image(cs, image):
|
||||
def _find_flavor(cs, flavor):
|
||||
"""Get a flavor by name, ID, or RAM size."""
|
||||
try:
|
||||
return utils.find_resource(cs.flavors, flavor)
|
||||
return utils.find_resource(cs.flavors, flavor, is_public=None)
|
||||
except exceptions.NotFound:
|
||||
return cs.flavors.find(ram=flavor)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user