Resize a instance associated with a deleted flavor will get a error:
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/openstack/common/rpc/amqp.py", line 275, in _process_data
rval = self.proxy.dispatch(ctxt, version, method, **args)
File "/usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/openstack/common/rpc/dispatcher.py", line 145, in dispatch
return getattr(proxyobj, method)(ctxt, **kwargs)
File "/usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/exception.py", line 117, in wrapped
temp_level, payload)
File "/usr/lib64/python2.6/contextlib.py", line 23, in __exit__
self.gen.next()
File "/usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/exception.py", line 92, in wrapped
return f(*args, **kw)
File "/usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/compute/manager.py", line 181, in decorated_function
pass
File "/usr/lib64/python2.6/contextlib.py", line 23, in __exit__
self.gen.next()
File "/usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/compute/manager.py", line 167, in decorated_function
return function(self, context, *args, **kwargs)
File "/usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/compute/manager.py", line 202, in decorated_function
kwargs['instance']['uuid'], e, sys.exc_info())
File "/usr/lib64/python2.6/contextlib.py", line 23, in __exit__
self.gen.next()
File "/usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/compute/manager.py", line 196, in decorated_function
return function(self, context, *args, **kwargs)
File "/usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/compute/manager.py", line 1562, in prep_resize
old_instance_type_id)
File "/usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/compute/instance_types.py", line 139, in get_instance_type
return db.instance_type_get(ctxt, instance_type_id)
File "/usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/db/api.py", line 1443, in instance_type_get
return IMPL.instance_type_get(context, id)
File "/usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/db/sqlalchemy/api.py", line 129, in wrapper
return f(*args, **kwargs)
File "/usr/lib/python2.6/site-packages/nova-2012.2.1-py2.6.egg/nova/db/sqlalchemy/api.py", line 3979, in instance_type_get
raise exception.InstanceTypeNotFound(instance_type_id=id)
InstanceTypeNotFound: Instance type 19 could not be found.
Hi,
I reproduced this bug, and it is easy only to avoid this bug by the following change:
--- a/nova/ compute/ resource_ tracker. py compute/ resource_ tracker. py (object) :
old_instance_ type_id = instance[ 'instance_ type_id' ] types.get_ instance_ type( type_id)
+++ b/nova/
@@ -164,8 +164,6 @@ class ResourceTracker
# info that is needed via rpc so db access isn't required
# here.
- old_instance_type = instance_
- old_instance_
return db.migration_ create( context. elevated( ),
{'instance_ uuid': instance['uuid'], (object) :
'dest_ compute' : self.host,
'dest_ node': self.nodename,
'dest_ host': self.driver. get_host_ ip_addr( ), type_id' : old_instance_ type['id' ], type_id' : old_instance_ type_id,
'new_ instance_ type_id' : instance_ type['id' ],
'status' : 'pre-migrating'})
@@ -174,7 +172,7 @@ class ResourceTracker
- 'old_instance_
+ 'old_instance_
but the above change is not complete, because old_instance_type is
necessary when 'nova resize-revert' command runs.
So I feel the original problem is that we can delete a flavor in use by 'nova flavor-delete'.