[openstack-dev] [neutron] [ipam] Migration to pluggable IPAM

Armando M. armamig at gmail.com
Fri Feb 5 03:12:31 UTC 2016

On 4 February 2016 at 08:22, John Belamaric <jbelamaric at infoblox.com> wrote:

> > On Feb 4, 2016, at 11:09 AM, Carl Baldwin <carl at ecbaldwin.net> wrote:
> >
> > On Thu, Feb 4, 2016 at 7:23 AM, Pavel Bondar <pbondar at infoblox.com>
> wrote:
> >> I am trying to bring more attention to [1] to make final decision on
> >> approach to use.
> >> There are a few point that are not 100% clear for me at this point.
> >>
> >> 1) Do we plan to switch all current clouds to pluggable ipam
> >> implementation in Mitaka?
> >
> > I think our plan originally was only to deprecate the non-pluggable
> > implementation in Mitaka and remove it in Newton.  However, this is
> > worth some more consideration.  The pluggable version of the reference
> > implementation should, in theory, be at parity with the current
> > non-pluggable implementation.  We've tested it before and shown
> > parity.  What we're missing is regular testing in the gate to ensure
> > it continues this way.
> >
> Yes, it certainly should be at parity, and gate testing to ensure it would
> be best.
> >> yes -->
> >> Then data migration can be done as alembic_migration and it is what
> >> currently implemented in [2] PS54.
> >> In this case during upgrade from Liberty to Mitaka all users are
> >> unconditionally switched to reference ipam driver
> >> from built-in ipam implementation.
> >> If operator wants to continue using build-in ipam implementation it can
> >> manually turn off ipam_driver in neutron.conf
> >> immediately after upgrade (data is not deleted from old tables).
> >
> > This has a certain appeal to it.  I think the migration will be
> > straight-forward since the table structure doesn't really change much.
> > Doing this as an alembic migration would be the easiest from an
> > upgrade point of view because it fits seamlessly in to our current
> > upgrade strategy.
> >
> > If we go this way, we should get this in soon so that we can get the
> > gate and others running with this code for the remainder of the cycle.
> >
> If we do this, and the operator reverts back to the non-pluggable version,
> then we will leave stale records in the new IPAM tables. At the very least,
> we would need a way to clean those up and to migrate at a later time.
> >> no -->
> >> Operator is free to choose whether it will switch to pluggable ipam
> >> implementation
> >> and when. And it leads to no automatic data migration.
> >> In this case operator is supplied with script for migration to pluggable
> >> ipam (and probably from pluggable ipam),
> >> which can be executed by operator during upgrade or at any point after
> >> upgrade is done.
> >> I was testing this approach in [2] PS53 (have unresolved issues in it
> >> for now).
> >
> > If there is some risk in changing over then this should still be
> > considered.  But, the more I think about it, the more I think that we
> > should just make the switch seamlessly for the operator and be done
> > with it.  This approach puts a certain burden on the operator to
> > choose when to do the migration and go through the steps manually to
> > do it.  And, since our intention is to deprecate and remove the
> > non-pluggable implementation, it is inevitable that they will have to
> > eventually switch anyway.
> >
> > This also makes testing much more difficult.  If we go this route, we
> > really should be testing both equally.  Does this mean that we need to
> > set up a whole new job to run the pluggable implementation along side
> > the old implementation?  This kind of feels like a nightmare to me.
> > What do you think?
> >
> Originally (as I mentioned in the meeting), I was thinking that we should
> not automatically migrate. However, I see the appeal of your arguments.
> Seamless is best, of course. But if we offer going back to non-pluggable,
> (which I think we need to at this point in the Mitaka cycle), we probably
> need to provide a script as mentioned above. Seems feasible, though.
We're tackling more than one issue in this thread and I am having a hard
time wrapping my head around it. Let me try to sum it all up.

a) switching from non-pluggable to pluggable it's a matter of running a
data migration + a config change
b) We can either switch automatically on restart (option b1) or manually on
operator command (b2)
c) Do we make pluggable ipam default and when
d) Testing the migration
e) Deprecating the non-pluggable one.

I hope we are all in agreement on bullet point a), because knowing the
complexity of your problem is halfway to our solution.

as for b) I think that manual migration is best for two reasons: 1) In HA
scenarios, seamless upgrade (ie. on server restart) can be a challenge; 2)
the operator must 'manually' change the driver, so he/she is very conscious
of what he/she is doing and can take enough precautions should something go
astray. Technically we can make this as sophisticated and seamless as we
want, but this is a one-off, once it's done the pain goes away, and we
won't be doing another migration like this ever again. So I wouldn't over
engineer it.

as for c) I think it's a little late to make pluggable ipam default in
Mitaka; I'd rather switch defaults early in the cycle (depending on the
entity of the config) and this one seems serious enough that I'd rather
have enough exercising in the gate to prove it solid. In a nutshell: let's
defer the driver switch to N. When we do, we'll have to worry about
grenade, but Grenade can run scripts and we can 'emulate' the operator hand.

as for d), and in preparation for the default switch, I think we can come
up with an experimental (or periodic) grenade 'side-way' job where we
validate only the ipam driver switch. It's best to do this on a recurring
basis rather than on a continuous basis.

as for e) I think we cannot afford to deprecate the non-pluggable one in
back-to-back cycles, but probably we'll have to stretch a little longer
once we have enough field feedback (via user survey) that the switch is
well under way. Rather than forcing the upgrade to the operators, let's
hear from them that they have embraced the new IPAM module. If things go
slow we can nudge them via evangelism :) I believe this is the only way to
provide the smoothest and least painful experience. We can afford to keep
some debt around, we freed ourselves of lots of code in the last cycle or


> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20160204/7e73cc94/attachment.html>

More information about the OpenStack-dev mailing list