Comment 1 for bug 1430984

Revision history for this message
Russell Bryant (russellb) wrote :

Regarding testing rolling upgrades, Nova has a job for this that's currently based on nova-network. Take a look at it and see about tweaking it to provide a version that uses Neutron.

Regarding the bug, I think it will require work in both oslo.messaging and neutron. Here's a proposal ... take a current example:

    class DhcpRpcCallback(object):

        target = oslo_messaging.Target(
            namespace=constants.RPC_NAMESPACE_DHCP_PLUGIN,
            version='1.1')

1) update the Target class to accept namespaces (a list of namespaces) as an alternative to specifying a single one. This would allow you to specify that this class should be considered for methods targeted at more than one namespace. In Neutron we would then set:

    class DhcpRpcCallback(object):

        target = oslo_messaging.Target(
            namespaces=[constants.RPC_NAMESPACE_DHCP_PLUGIN, None],
            version='1.1')

2) Neutron will need an option that gets set during a live upgrade... something like juno_compat=True ... whatever. When this is enabled, all of the rpc clients should not use the namespace. When it gets unset after the upgrade is complete, clients can start using the namespace. There is precedent for this sort of thing during an upgrade. There are version pinning options you have to set in nova so you'd just add this to that process.

I appreciate you taking a look at this. I can't commit to doing this work, but I'm happy to review. As a backup plan, setting all of the NAMESPACE constants in neutron/common/constants.py to None would let us punt the problem to be addressed during Liberty development.