← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1308805] [NEW] object backport doesn't work

 

Public bug reported:

The code to backport an object doesn't work at all. This code is only
called in one place.

In nova/objects/base.py in _process_object

If the version is incompatible it tries to backport it:

    def _process_object(self, context, objprim):
        try:
            objinst = NovaObject.obj_from_primitive(objprim, context=context)
        except exception.IncompatibleObjectVersion as e:
            objinst = self.conductor.object_backport(context, objprim,
                                                     e.kwargs['supported'])
        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_backport(self, context, objinst, target_version):
        return objinst.obj_to_primitive(target_version=target_version)


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?

** Affects: nova
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1308805

Title:
  object backport doesn't work

Status in OpenStack Compute (Nova):
  New

Bug description:
  The code to backport an object doesn't work at all. This code is only
  called in one place.

  In nova/objects/base.py in _process_object

  If the version is incompatible it tries to backport it:

      def _process_object(self, context, objprim):
          try:
              objinst = NovaObject.obj_from_primitive(objprim, context=context)
          except exception.IncompatibleObjectVersion as e:
              objinst = self.conductor.object_backport(context, objprim,
                                                       e.kwargs['supported'])
          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_backport(self, context, objinst, target_version):
          return objinst.obj_to_primitive(target_version=target_version)

  
  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?

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1308805/+subscriptions


Follow ups

References