summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2012-09-10 12:15:02 -0700
committerVishvananda Ishaya <vishvananda@gmail.com>2012-09-10 12:17:57 -0700
commitd741328543ad6059bef56adb59f4c94781eaedcd (patch)
tree8d26b55cd4f1a3108bffdd4f5ffdb0b843c73d82
parent641223db012211b353658dabaec27942e89ee5c6 (diff)
Fix flavor deletion when there is a deleted flavor
If there is a deleted flavor with the same ID as an undeleted flavor, the flavormanage delete code attempts to delete it again, which fails. This patch makes sure to pass read_deleted='no' when the flavor is retrieved for deletion so we get the undeleted flavor. Includes a failing test to make sure the value is passed properly. Fixes bug 1048678 Change-Id: If6a20de2526b7ba90ada4a40317a98f79b2141dc
-rw-r--r--nova/api/openstack/compute/contrib/flavormanage.py3
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_flavor_manage.py7
2 files changed, 7 insertions, 3 deletions
diff --git a/nova/api/openstack/compute/contrib/flavormanage.py b/nova/api/openstack/compute/contrib/flavormanage.py
index a7e313c9c..69d5d6ed9 100644
--- a/nova/api/openstack/compute/contrib/flavormanage.py
+++ b/nova/api/openstack/compute/contrib/flavormanage.py
@@ -42,7 +42,8 @@ class FlavorManageController(wsgi.Controller):
authorize(context)
try:
- flavor = instance_types.get_instance_type_by_flavor_id(id)
+ flavor = instance_types.get_instance_type_by_flavor_id(
+ id, read_deleted="no")
except exception.NotFound, e:
raise webob.exc.HTTPNotFound(explanation=str(e))
diff --git a/nova/tests/api/openstack/compute/contrib/test_flavor_manage.py b/nova/tests/api/openstack/compute/contrib/test_flavor_manage.py
index feae4c47f..70fd5e4a7 100644
--- a/nova/tests/api/openstack/compute/contrib/test_flavor_manage.py
+++ b/nova/tests/api/openstack/compute/contrib/test_flavor_manage.py
@@ -25,11 +25,13 @@ from nova import test
from nova.tests.api.openstack import fakes
-def fake_get_instance_type_by_flavor_id(flavorid):
+def fake_get_instance_type_by_flavor_id(flavorid, read_deleted='yes'):
if flavorid == 'failtest':
raise exception.NotFound("Not found sucka!")
elif not str(flavorid) == '1234':
raise Exception("This test expects flavorid 1234, not %s" % flavorid)
+ if read_deleted != 'no':
+ raise test.TestingException("Should not be reading deleted")
return {
'root_gb': 1,
@@ -60,7 +62,8 @@ def fake_create(name, memory_mb, vcpus, root_gb, ephemeral_gb,
flavorid, swap, rxtx_factor, is_public):
if flavorid is None:
flavorid = 1234
- newflavor = fake_get_instance_type_by_flavor_id(flavorid)
+ newflavor = fake_get_instance_type_by_flavor_id(flavorid,
+ read_deleted="no")
newflavor["name"] = name
newflavor["memory_mb"] = int(memory_mb)