diff options
| author | Brian Lamar <brian.lamar@rackspace.com> | 2012-06-08 15:18:13 -0400 |
|---|---|---|
| committer | Brian Lamar <brian.lamar@rackspace.com> | 2012-06-08 15:43:12 -0400 |
| commit | 5157401f20158b2b99d01796f73a8ba5368c80a2 (patch) | |
| tree | f23161fa52fbefa742e6cae6a7cc11578df642ba | |
| parent | e3911801f6814ebc8aeed1e6b4284fbfb2e74192 (diff) | |
Do not always query deleted instance_types.
When converting from flavorid to instance_type_id in the OSAPI,
it isn't always desired to return deleted instance_types. In the case
of OSAPI create(), we explicitly do not want to query deleted flavors.
Fixes bug 1010638
Change-Id: I9c26c7130f8c3d6680143e36b4aaa1f662c682a7
| -rw-r--r-- | nova/api/openstack/compute/servers.py | 2 | ||||
| -rw-r--r-- | nova/compute/instance_types.py | 4 | ||||
| -rw-r--r-- | nova/tests/test_instance_types.py | 17 |
3 files changed, 19 insertions, 4 deletions
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index 64af7222f..a92d9b6bb 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -676,7 +676,7 @@ class Controller(wsgi.Controller): try: _get_inst_type = instance_types.get_instance_type_by_flavor_id - inst_type = _get_inst_type(flavor_id) + inst_type = _get_inst_type(flavor_id, read_deleted="no") (instances, resv_id) = self.compute_api.create(context, inst_type, diff --git a/nova/compute/instance_types.py b/nova/compute/instance_types.py index 69eef7f83..d06252a6b 100644 --- a/nova/compute/instance_types.py +++ b/nova/compute/instance_types.py @@ -140,10 +140,10 @@ def get_instance_type_by_name(name): # TODO(termie): flavor-specific code should probably be in the API that uses # flavors. -def get_instance_type_by_flavor_id(flavorid): +def get_instance_type_by_flavor_id(flavorid, read_deleted="yes"): """Retrieve instance type by flavorid. :raises: FlavorNotFound """ - ctxt = context.get_admin_context(read_deleted="yes") + ctxt = context.get_admin_context(read_deleted=read_deleted) return db.instance_type_get_by_flavor_id(ctxt, flavorid) diff --git a/nova/tests/test_instance_types.py b/nova/tests/test_instance_types.py index ab4af3bc1..0d0417d0f 100644 --- a/nova/tests/test_instance_types.py +++ b/nova/tests/test_instance_types.py @@ -211,12 +211,27 @@ class InstanceTypeTestCase(test.TestCase): self.assertEqual(inst_type_name, inst_type["name"]) # NOTE(jk0): The deleted flavor will show up here because the context - # in get_instance_type_by_flavor_id() is set to use read_deleted. + # in get_instance_type_by_flavor_id() is set to use read_deleted by + # default. instance_types.destroy(inst_type["name"]) deleted_inst_type = instance_types.get_instance_type_by_flavor_id( inst_type_flavor_id) self.assertEqual(inst_type_name, deleted_inst_type["name"]) + def test_read_deleted_false_converting_flavorid(self): + """ + Ensure deleted instance types are not returned when not needed (for + example when creating a server and attempting to translate from + flavorid to instance_type_id. + """ + instance_types.create("instance_type1", 256, 1, 120, 100, "test1") + instance_types.destroy("instance_type1") + instance_types.create("instance_type1_redo", 256, 1, 120, 100, "test1") + + instance_type = instance_types.get_instance_type_by_flavor_id( + "test1", read_deleted="no") + self.assertEqual("instance_type1_redo", instance_type["name"]) + def test_will_list_deleted_type_for_active_instance(self): """Ensure deleted instance types with active instances can be read""" ctxt = context.get_admin_context() |
