object backport doesn't work
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
The code to backport an object doesn't work at all. This code is only called in one place.
In nova/objects/
If the version is incompatible it tries to backport it:
def _process_
try:
objinst = NovaObject.
except exception.
objinst = self.conductor.
return objinst
You'll note here the object_backport is being passed in a primitive and a supported version and expecting back an object.
However the object_backport method does:
def object_
return objinst.
You'll see here it is expecting to be passed in an object and will return a primitive. Exactly the opposite of the only code in nova that calls this code.
This is meaning we can't have Icehouse and Havana working together when trying to upgrade.
Any ideas?
tags: | added: conductor |
Here's a stacktrace
2014-04-17 11:17:22.932 4434 TRACE nova.openstack. common. rpc.amqp File "/opt/nova/ nova/openstack/ common/ rpc/amqp. py", line 461, in _process_data common. rpc.amqp **args) common. rpc.amqp File "/opt/nova/ nova/openstack/ common/ rpc/dispatcher. py", line 172, in dispatch common. rpc.amqp result = getattr(proxyobj, method)(ctxt, **kwargs) common. rpc.amqp File "/opt/nova/ nova/cells/ rpc_driver. py", line 184, in process_message common. rpc.amqp message = self.msg_ runner. message_ from_json( message) common. rpc.amqp File "/opt/nova/ nova/cells/ messaging. py", line 1553, in message_from_json common. rpc.amqp message_ dict['ctxt' ], v) common. rpc.amqp File "/opt/nova/ nova/objects/ base.py" , line 566, in deserialize_entity common. rpc.amqp entity = self._process_ object( context, entity) common. rpc.amqp File "/opt/nova/ nova/objects/ base.py" , line 536, in _process_object common. rpc.amqp e.kwargs[ 'supported' ]) common. rpc.amqp File "/opt/nova/ nova/conductor/ api.py" , line 331, in object_backport common. rpc.amqp return self._manager. object_ backport( context, objinst, target_version) common. rpc.amqp File "/opt/nova/ nova/utils. py", line 1108, in wrapper common. rpc.amqp return func(*args, **kwargs) common. rpc.amqp File "/opt/nova/ nova/conductor/ manager. py", line 604, in object_backport common. rpc.amqp return objinst. obj_to_ primitive( target_ version= target_ version) common. rpc.amqp AttributeError: 'dict' object has no attribute 'obj_to_primitive'
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.
2014-04-17 11:17:22.932 4434 TRACE nova.openstack.