Yeah I’m not sure what’s going on, I removed my hacks and tried it using the conductor rpcapi service and got what I think is a recursive call in nova-conductor.
Added more details to https://bugs.launchpad.net/nova/+bug/1308805 I’m thinking there maybe something missing in the stable/havana branch or else cells is doing something different when it comes to objects. I don’t think it is a cells issue though as debugging it, it seems like it just can’t back port a 1.13 object to 1.9. Cheers, Sam On 23 Apr 2014, at 1:01 am, Chris Behrens <cbehr...@codestud.com> wrote: > > On Apr 19, 2014, at 11:08 PM, Sam Morrison <sorri...@gmail.com> wrote: > >> Thanks for the info Chris, I’ve actually managed to get things working. >> Haven’t tested everything fully but seems to be working pretty good. >> >> On 19 Apr 2014, at 7:26 am, Chris Behrens <cbehr...@codestud.com> wrote: >> >>> The problem here is that Havana is not going to know how to backport the >>> Icehouse object, even if had the conductor methods to do so… unless you’re >>> running the Icehouse conductor. But yes, your nova-computes would also need >>> the code to understand to hit conductor to do the backport, which we must >>> not have in Havana? >> >> OK this conductor api method was actually back ported to Havana, it kept >> it’s 1.62 version for the method but in Havana conductor manager it is set >> to 1.58. >> That is easily fixed but then it gets worse. I may be missing something but >> the object_backport method doesn’t work at all and looking at the signature >> never worked? >> I’ve raised a bug: https://bugs.launchpad.net/nova/+bug/1308805 > > (CCing openstack-dev and Dan Smith) > > That looked wrong to me as well, and then I talked with Dan Smith and he > reminded me the RPC deserializer would turn that primitive into a an object > on the conductor side. The primitive there is the full primitive we use to > wrap the object with the versioning information, etc. > > Does your backport happen to not pass the full object primitive? Or maybe > missing the object RPC deserializer on conductor? (I would think that would > have to be set in Havana) nova/service.py would have: > > 194 serializer = objects_base.NovaObjectSerializer() > 195 > 196 self.rpcserver = rpc.get_server(target, endpoints, serializer) > 197 self.rpcserver.start() > > I’m guessing that’s there… so I would think maybe the object_backport call > you have is not passing the full primitive. > > I don’t have the time to peak at your code on github right this second, but > maybe later. :) > > - Chris > > >> >>> This also means that if you don’t want your computes on Icehouse yet, you >>> must actually be using nova-conductor and not use_local=True for it. (I saw >>> the patch go up to fix the objects use of conductor API… so I’m guessing >>> you must be using local right now?) >> >> Yeah we still haven’t moved to use conductor so if you also don’t use >> conductor you’ll need the simple fix at bug: >> https://bugs.launchpad.net/nova/+bug/1308811 >> >>> So, I think an upgrade process could be: >>> >>> 1) Backport the ‘object backport’ code into Havana. >>> 2) Set up *Icehouse* nova-conductor in your child cells and use_local=False >>> on your nova-computes >>> 3) Restart your nova-computes. >>> 4) Update *all* nova-cells processes (in all cells) to Icehouse. You can >>> keep use_local=False on these, but you’ll need that object conductor API >>> patch. >>> >>> At this point you’d have all nova-cells and all nova-conductors on Icehouse >>> and everything else on Havana. If the Havana computes are able to talk to >>> the Icehouse conductors, they should be able to backport any newer object >>> versions. Same with nova-cells receiving older objects from nova-api. It >>> should be able to backport them. >>> >>> After this, you should be able to upgrade nova-api… and then probably >>> upgrade your nova-computes on a cell-by-cell basis. >>> >>> I don’t *think* nova-scheduler is getting objects yet, especially if you’re >>> somehow magically able to get builds to work in what you tested so far. :) >>> But if it is, you may find that you need to insert an upgrade of your >>> nova-schedulers to Icehouse between steps 3 and 4 above…or maybe just after >>> #4… so that it can backport objects, also. >>> >>> I still doubt this will work 100%… but I dunno. :) And I could be missing >>> something… but… I wonder if that makes sense? >> >> What I have is an Icehouse API cell and a Havana compute cell and havana >> compute nodes with the following changes: >> >> Change the method signature of attach_volume to match icehouse, the >> additional arguments are optional and don’t seem to break things if you >> ignore them. >> https://bugs.launchpad.net/nova/+bug/1308846 >> >> Needed a small fix for unlocking, there is a race condition that I have a >> fix for but haven’t pushed up. >> >> Then I hacked up a fix for object back porting. >> The code is at >> https://github.com/NeCTAR-RC/nova/commits/nectar/havana-icehouse-compat >> The last three commits are the fixes needed. >> I still need to push up the unlocking one and also a minor fix for metadata >> syncing with deleting and notifications. >> >> Would love to get the object back porting stuff fixed properly from someone >> who knows how all the object stuff works. >> >> Cheers, >> Sam >
_______________________________________________ Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack Post to : openstack@lists.openstack.org Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack