<div dir="ltr">Salvatore,<div><br></div><div><span style="font-family:arial,sans-serif;font-size:13px">> Also - since it seems to me that there is also consensus regarding having load balancing move away into a separate project</span><br>
</div><div><span style="font-family:arial,sans-serif;font-size:13px">To me it seems that there was no such a consensus; core team members were advocating </span><span style="font-family:arial,sans-serif;font-size:13px">keeping lbaas within neutron.</span></div>
<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">Thanks,</span></div><div><span style="font-family:arial,sans-serif;font-size:13px">Eugene.</span></div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 16, 2014 at 2:23 AM, Brandon Logan <span dir="ltr"><<a href="mailto:brandon.logan@rackspace.com" target="_blank">brandon.logan@rackspace.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thank you Salvatore for your feedback.<br>
<br>
Comments in-line.<br>
<div class=""><br>
On Sun, 2014-06-15 at 23:26 +0200, Salvatore Orlando wrote:<br>
> Regarding the two approaches outlines in the top post, I found out<br>
> that the bullet "This is API versioning done the wrong way" appears in<br>
> both approaches.<br>
> Is this a mistake or intentional?<br>
<br>
</div>No it was intentional. In my opinion they are both the wrong way. It<br>
would be best to be able to do a version at the resource layer but we<br>
can't since lbaas is a part of Neutron and its versions is directly tied<br>
to Neutron's. Another possibility is to have the resource look like:<br>
<br>
http(s)://neutron.endpoint/v2/lbaas/v2<br>
<br>
This looks very odd to me though and sets a bad precedent. That is just<br>
my opinion though. So I wouldn't call this the right way either. Thus,<br>
I do not know of a "right" way to do this other than choosing the right<br>
"alternative" way.<br>
<div class=""><br>
><br>
><br>
> From what I gather, the most reasonable approach appears to be<br>
> starting with a clean slate, which means having a new API living side<br>
> by side with the old one.<br>
> I think the naming collision issues should probably be solved using<br>
> distinct namespaces for the two API (the old one has /v2/lbaas as a<br>
> URI prefix I think, I have hardly any idea about what namespace the<br>
> new one should have)<br>
><br>
<br>
</div>I'm in agreement with you as well. The old one has /v2/lb as the prefix.<br>
I figured the new one could be /v2/lbaas which I think works out well.<br>
<br>
Another thing to consider that I did not think about in my original<br>
message is that a whole new load balancing agent will have to be created<br>
as well since its code is written with the pool being the root object.<br>
So that should be taken into consideration. So to be perfectly clear,<br>
starting with a clean slate would involve the following:<br>
<br>
1. New loadbalancer extension<br>
2. New loadbalancer plugin<br>
3. New lbaas_agentscheduler extension<br>
4. New agent_scheduler plugin.<br>
<br>
Also, I don't believe doing this would allow the two to be deployed at<br>
the same time. I believe the setup.cfg file would have to be modified<br>
to point to the new plugins. I could be wrong about that though.<br>
<div class=""><br>
><br>
> Finally, about deprecation - I see it's been agreed to deprecate the<br>
> current API in Juno.<br>
> I think this is not the right way of doing things. The limits of the<br>
> current API are pretty much universally agreed; on the other hand, it<br>
> is generally not advisable to deprecate an old API in favour of the<br>
> new one at the first iteration such API is published. My preferred<br>
> strategy would be to introduce the new API as experimental in the Juno<br>
> release, so that in can be evaluated, apply any feedback and consider<br>
> for promoting in K - and contextually deprecate the old API.<br>
><br>
><br>
> As there is quite a radical change between the old and the new model,<br>
> keeping the old API indefinitely is a maintenance burden we probably<br>
> can't afford, and I would therefore propose complete removal one<br>
> release cycle after deprecation. Also - since it seems to me that<br>
> there is also consensus regarding having load balancing move away into<br>
> a separate project so that it would not be tied anymore to the<br>
> networking program, the old API is pretty much just dead weight.<br>
><br>
> Salvatore<br>
<br>
</div>Good idea on that. I'll bring this up with everyone at the hackathon<br>
this week if it is not already on the table.<br>
<br>
Thanks again for your feedback.<br>
<span class="HOEnZb"><font color="#888888"><br>
Brandon<br>
</font></span><div class="HOEnZb"><div class="h5">><br>
><br>
> On 11 June 2014 18:01, Kyle Mestery <<a href="mailto:mestery@noironetworks.com">mestery@noironetworks.com</a>> wrote:<br>
> I spoke to Mark McClain about this yesterday, I'll see if I<br>
> can get<br>
> him to join the LBaaS team meeting tomorrow so between he and<br>
> I we can<br>
> close on this with the LBaaS team.<br>
><br>
> On Wed, Jun 11, 2014 at 10:57 AM, Susanne Balle<br>
> <<a href="mailto:sleipnir012@gmail.com">sleipnir012@gmail.com</a>> wrote:<br>
> > Do we know who has an opinion? If so maybe we can reach out<br>
> to them directly<br>
> > and ask them to comment.<br>
> ><br>
> ><br>
> > On Tue, Jun 10, 2014 at 6:44 PM, Brandon Logan<br>
> <<a href="mailto:brandon.logan@rackspace.com">brandon.logan@rackspace.com</a>><br>
> > wrote:<br>
> >><br>
> >> Well we got a few opinions, but not enough understanding of<br>
> the two<br>
> >> options to make an informed decision. It was requested<br>
> that the core<br>
> >> reviewers respond to this thread with their opinions.<br>
> >><br>
> >> Thanks,<br>
> >> Brandon<br>
> >><br>
> >> On Tue, 2014-06-10 at 13:22 -0700, Stephen Balukoff wrote:<br>
> >> > Yep, I'd like to know here, too-- as knowing the answer<br>
> to this<br>
> >> > unblocks implementation work for us.<br>
> >> ><br>
> >> ><br>
> >> > On Tue, Jun 10, 2014 at 12:38 PM, Brandon Logan<br>
> >> > <<a href="mailto:brandon.logan@rackspace.com">brandon.logan@rackspace.com</a>> wrote:<br>
> >> > Any core neutron people have a chance to give<br>
> their opinions<br>
> >> > on this<br>
> >> > yet?<br>
> >> ><br>
> >> > Thanks,<br>
> >> > Brandon<br>
> >> ><br>
> >> > On Thu, 2014-06-05 at 15:28 +0000, Buraschi,<br>
> Andres wrote:<br>
> >> > > Thanks, Kyle. Great.<br>
> >> > ><br>
> >> > > -----Original Message-----<br>
> >> > > From: Kyle Mestery<br>
> [mailto:<a href="mailto:mestery@noironetworks.com">mestery@noironetworks.com</a>]<br>
> >> > > Sent: Thursday, June 05, 2014 11:27 AM<br>
> >> > > To: OpenStack Development Mailing List (not for<br>
> usage<br>
> >> > questions)<br>
> >> > > Subject: Re: [openstack-dev] [Neutron]<br>
> Implementing new<br>
> >> > LBaaS API<br>
> >> > ><br>
> >> > > On Wed, Jun 4, 2014 at 4:27 PM, Brandon Logan<br>
> >> > <<a href="mailto:brandon.logan@rackspace.com">brandon.logan@rackspace.com</a>> wrote:<br>
> >> > > > Hi Andres,<br>
> >> > > > I've assumed (and we know how assumptions<br>
> work) that the<br>
> >> > deprecation<br>
> >> > > > would take place in Juno and after a cyle or<br>
> two it would<br>
> >> > totally be<br>
> >> > > > removed from the code. Even if #1 is the way<br>
> to go, the<br>
> >> > old /vips<br>
> >> > > > resource would be deprecated in favor<br>
> of /loadbalancers<br>
> >> > and /listeners.<br>
> >> > > ><br>
> >> > > > I agree #2 is cleaner, but I don't want to<br>
> start on an<br>
> >> > implementation<br>
> >> > > > (though I kind of already have) that will<br>
> fail to be<br>
> >> > merged in because<br>
> >> > > > of the strategy. The strategies are pretty<br>
> different so<br>
> >> > one needs to<br>
> >> > > > be decided on.<br>
> >> > > ><br>
> >> > > > As for where LBaaS is intended to end up, I<br>
> don't want to<br>
> >> > speak for<br>
> >> > > > Kyle, so this is my understanding; It will<br>
> end up outside<br>
> >> > of the<br>
> >> > > > Neutron code base but Neutron and LBaaS and<br>
> other services<br>
> >> > will all<br>
> >> > > > fall under a Networking (or Network)<br>
> program. That is my<br>
> >> > > > understanding and I could be totally wrong.<br>
> >> > > ><br>
> >> > > That's my understanding as well, I think<br>
> Brandon worded it<br>
> >> > perfectly.<br>
> >> > ><br>
> >> > > > Thanks,<br>
> >> > > > Brandon<br>
> >> > > ><br>
> >> > > > On Wed, 2014-06-04 at 20:30 +0000, Buraschi,<br>
> Andres wrote:<br>
> >> > > >> Hi Brandon, hi Kyle!<br>
> >> > > >> I'm a bit confused about the deprecation<br>
> (btw, thanks for<br>
> >> > sending this Brandon!), as I (wrongly) assumed #1<br>
> would be the<br>
> >> > chosen path for the new API implementation. I<br>
> understand the<br>
> >> > proposal and #2 sounds actually cleaner.<br>
> >> > > >><br>
> >> > > >> Just out of curiosity, Kyle, where is LBaaS<br>
> functionality<br>
> >> > intended to end up, if long-term plans are to<br>
> remove it from<br>
> >> > Neutron?<br>
> >> > > >><br>
> >> > > >> (Nit question, I must clarify)<br>
> >> > > >><br>
> >> > > >> Thank you!<br>
> >> > > >> Andres<br>
> >> > > >><br>
> >> > > >> -----Original Message-----<br>
> >> > > >> From: Brandon Logan<br>
> [mailto:<a href="mailto:brandon.logan@RACKSPACE.COM">brandon.logan@RACKSPACE.COM</a>]<br>
> >> > > >> Sent: Wednesday, June 04, 2014 2:18 PM<br>
> >> > > >> To: <a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a><br>
> >> > > >> Subject: Re: [openstack-dev] [Neutron]<br>
> Implementing new<br>
> >> > LBaaS API<br>
> >> > > >><br>
> >> > > >> Thanks for your feedback Kyle. I will be at<br>
> that meeting<br>
> >> > on Monday.<br>
> >> > > >><br>
> >> > > >> Thanks,<br>
> >> > > >> Brandon<br>
> >> > > >><br>
> >> > > >> On Wed, 2014-06-04 at 11:54 -0500, Kyle<br>
> Mestery wrote:<br>
> >> > > >> > On Tue, Jun 3, 2014 at 3:01 PM, Brandon<br>
> Logan<br>
> >> > > >> > <<a href="mailto:brandon.logan@rackspace.com">brandon.logan@rackspace.com</a>> wrote:<br>
> >> > > >> > > This is an LBaaS topic bud I'd like to<br>
> get some<br>
> >> > Neutron Core<br>
> >> > > >> > > members to give their opinions on this<br>
> matter so I've<br>
> >> > just<br>
> >> > > >> > > directed this to Neutron proper.<br>
> >> > > >> > ><br>
> >> > > >> > > The design for the new API and object<br>
> model for LBaaS<br>
> >> > needs to be<br>
> >> > > >> > > locked down before the hackathon in a<br>
> couple of weeks<br>
> >> > and there<br>
> >> > > >> > > are some questions that need answered.<br>
> This is<br>
> >> > pretty urgent to<br>
> >> > > >> > > come on to a decision on and to get a<br>
> clear strategy<br>
> >> > defined so<br>
> >> > > >> > > we can actually do real code during the<br>
> hackathon<br>
> >> > instead of<br>
> >> > > >> > > wasting some of that valuable time<br>
> discussing this.<br>
> >> > > >> > ><br>
> >> > > >> > ><br>
> >> > > >> > > Implementation must be backwards<br>
> compatible<br>
> >> > > >> > ><br>
> >> > > >> > > There are 2 ways that have come up on<br>
> how to do this:<br>
> >> > > >> > ><br>
> >> > > >> > > 1) New API and object model are created<br>
> in the same<br>
> >> > extension and<br>
> >> > > >> > > plugin as the old. Any API requests<br>
> structured for<br>
> >> > the old API<br>
> >> > > >> > > will be translated/adapted to the into<br>
> the new object<br>
> >> > model.<br>
> >> > > >> > > PROS:<br>
> >> > > >> > > -Only one extension and plugin<br>
> >> > > >> > > -Mostly true backwards compatibility -Do<br>
> not have to<br>
> >> > rename<br>
> >> > > >> > > unchanged resources and models<br>
> >> > > >> > > CONS:<br>
> >> > > >> > > -May end up being confusing to an<br>
> end-user.<br>
> >> > > >> > > -Separation of old api and new api is<br>
> less clear<br>
> >> > -Deprecating and<br>
> >> > > >> > > removing old api and object model will<br>
> take a bit<br>
> >> > more work -This<br>
> >> > > >> > > is basically API versioning the wrong<br>
> way<br>
> >> > > >> > ><br>
> >> > > >> > > 2) A new extension and plugin are<br>
> created for the new<br>
> >> > API and<br>
> >> > > >> > > object model. Each API would live side<br>
> by side. New<br>
> >> > API would<br>
> >> > > >> > > need to have different names for<br>
> resources and object<br>
> >> > models from<br>
> >> > > >> > > Old API resources and object models.<br>
> >> > > >> > > PROS:<br>
> >> > > >> > > -Clean demarcation point between old and<br>
> new -No<br>
> >> > translation<br>
> >> > > >> > > layer needed -Do not need to modify<br>
> existing API and<br>
> >> > object<br>
> >> > > >> > > model, no new bugs -Drivers do not need<br>
> to be<br>
> >> > immediately<br>
> >> > > >> > > modified -Easy to deprecate and remove<br>
> old API and<br>
> >> > object model<br>
> >> > > >> > > later<br>
> >> > > >> > > CONS:<br>
> >> > > >> > > -Separate extensions and object model<br>
> will be<br>
> >> > confusing to<br>
> >> > > >> > > end-users -Code reuse by copy paste<br>
> since old<br>
> >> > extension and<br>
> >> > > >> > > plugin will be deprecated and removed.<br>
> >> > > >> > > -This is basically API versioning the<br>
> wrong way<br>
> >> > > >> > ><br>
> >> > > >> > > Now if #2 is chosen to be feasible and<br>
> acceptable<br>
> >> > then there are<br>
> >> > > >> > > a number of ways to actually do that. I<br>
> won't bring<br>
> >> > those up<br>
> >> > > >> > > until a clear decision is made on which<br>
> strategy<br>
> >> > above is the most acceptable.<br>
> >> > > >> > ><br>
> >> > > >> > Thanks for sending this out Brandon. I'm<br>
> in favor of<br>
> >> > option #2<br>
> >> > > >> > above, especially considering the<br>
> long-term plans to<br>
> >> > remove LBaaS<br>
> >> > > >> > from Neutron. That approach will help the<br>
> eventual end<br>
> >> > goal there.<br>
> >> > > >> > I am also curious on what others think,<br>
> and to this<br>
> >> > end, I've added<br>
> >> > > >> > this as an agenda item for the team<br>
> meeting next<br>
> >> > Monday. Brandon,<br>
> >> > > >> > it would be great to get you there for the<br>
> part of the<br>
> >> > meeting<br>
> >> > > >> > where we'll discuss this.<br>
> >> > > >> ><br>
> >> > > >> > Thanks!<br>
> >> > > >> > Kyle<br>
> >> > > >> ><br>
> >> > > >> > > Thanks,<br>
> >> > > >> > > Brandon<br>
> >> > > >> > ><br>
> >> > > >> > ><br>
> >> > > >> > ><br>
> >> > > >> > ><br>
> >> > > >> > ><br>
> >> > > >> > ><br>
> >> > > >> > ><br>
> _______________________________________________<br>
> >> > > >> > > OpenStack-dev mailing list<br>
> >> > > >> > > <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> >> > > >> > ><br>
> >> ><br>
> >> ><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
> >> > > >> ><br>
> >> > > >> ><br>
> _______________________________________________<br>
> >> > > >> > OpenStack-dev mailing list<br>
> >> > > >> > <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> >> > > >> ><br>
> >> ><br>
> >> ><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
> >> > > >><br>
> >> > > >><br>
> _______________________________________________<br>
> >> > > >> OpenStack-dev mailing list<br>
> >> > > >> <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> >> > > >><br>
> >> ><br>
> >> ><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
> >> > > >><br>
> >> > > >><br>
> _______________________________________________<br>
> >> > > >> OpenStack-dev mailing list<br>
> >> > > >> <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> >> > > >><br>
> >> ><br>
> >> ><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
> >> > > ><br>
> >> > > ><br>
> _______________________________________________<br>
> >> > > > OpenStack-dev mailing list<br>
> >> > > > <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> >> > > ><br>
> >> ><br>
> >> ><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
> >> > ><br>
> >> > > _______________________________________________<br>
> >> > > OpenStack-dev mailing list<br>
> >> > > <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> >> > ><br>
> >> ><br>
> >> ><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
> >> > ><br>
> >> > > _______________________________________________<br>
> >> > > OpenStack-dev mailing list<br>
> >> > > <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> >> > ><br>
> >> ><br>
> >> ><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
> >> ><br>
> >> > _______________________________________________<br>
> >> > OpenStack-dev mailing list<br>
> >> > <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> >> ><br>
> >> ><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
> >> ><br>
> >> ><br>
> >> ><br>
> >> ><br>
> >> ><br>
> >> > --<br>
> >> > Stephen Balukoff<br>
> >> > Blue Box Group, LLC<br>
> >> > (800)613-4305 x807<br>
> >> > _______________________________________________<br>
> >> > OpenStack-dev mailing list<br>
> >> > <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> >> ><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
> >><br>
> >> _______________________________________________<br>
> >> OpenStack-dev mailing list<br>
> >> <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> >><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
> ><br>
> ><br>
> ><br>
> > _______________________________________________<br>
> > OpenStack-dev mailing list<br>
> > <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> ><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
> ><br>
><br>
> _______________________________________________<br>
> OpenStack-dev mailing list<br>
> <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
><br>
><br>
><br>
> _______________________________________________<br>
> OpenStack-dev mailing list<br>
> <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</div></div></blockquote></div><br></div>