[openstack-dev] [Neutron][LBaaS] Thoughts on current process

Eugene Nikanorov enikanorov at mirantis.com
Thu May 1 20:10:06 UTC 2014


Hi,


On Thu, May 1, 2014 at 10:46 PM, Jorge Miramontes <
jorge.miramontes at rackspace.com> wrote:

>   Hey Eugene,
>
>  I think there is a misunderstanding on what iterative development means
> to you and me and I want to make sure we are on the same page. First of
> all, I'll try not to use the term "duct-taping" even though it's a widely
> used term in the industry.
>
I'm not against the term itself.
It was applied several times to existing code base, apparently without ANY
real code analysis.
That's especially clearly seen because all API proposals so far are
focusing on managing the same set of lb primitives.
Yes, the proposals introduce some new primitives; yes some attributes and
relationships differ from what is in the code.
But nothing was proposed so far that would require to completely throw away
existing code, not a single requirement.

I understand that writing something from scratch can be more convenient for
developers than studying existing code, but that's something we all have to
do when working on opensource project.

My main concern is that implementing code on top of the current codebase to
> meet the smorgasbord of new requirements without thinking about overall
> design (since we know we will eventually want all the requirements
> satisfied at some point per your words)
>
Overall design was thought out long before we started having all these
discussions.
And things are not quick in neutron project, that's regardless of amount of
dev resources lbaas subteam may have.

is that some requirement implemented 6 months from now may change code
> architecture. Since we know we want to meet all requirements eventually,
> its makes logical sense to design for what we know we need and then figure
> out how to iteratively implement code over time.
>
That was initially done on Icehouse summit, and we just had to reiterate
the discussion for new subteam members who has joined recently.
I agree that "to design for what we know we need", but the primary option
should be to continue existing work and analyse it to find gaps, that what
Samuel and me were focusing on. Stephen's proposal also goes along this
idea because everything in his doc can be implemented gradually starting
from existing code.

That being said, if it makes sense to use existing code first then fine. In
> fact, I am a fan of trying manipulate as little code as possible unless we
> absolutely have to. I just want to be a smart developer and design knowing
> I will eventually have to implement something. Not keeping things in mind
> can be dangerous.
>
I fully agree and that's well understood.


>  In short, I want to avoid having to perform multiple code refactors if
> possible and design upfront with the list of requirements the community has
> spent time fleshing out.
>
>  Also, it seems like you have some implicit developer requirements that
> I'd like written somewhere. This may ease confusion as well. For example,
> you stated "Consistency is important". A clear definition in the form of a
> developer requirement would be nice so that the community understands your
> expectations.
>
It might be a bit difficult to formalize. So you know, we're not the only
ones who will make decisions on the implementation.
There is a core team, who mostly out of lbaas discussions right now (and
that fact will not change), who have their own views on how neutron API
should look like, what is allowed and what is not. To get a sense of it,
one really needs to contribute to neutron: push the code through 10-20-50
review iterations, see what other developers are concerned about.
Obviously we can't get everyone to our discussions, but other core dev may
(or may not, i don't know for sure) just -1 your implementation because you
to /object1/id/object2/id/object3/id instead of flat rest API that neutron
has, or something like that.
Then you'll probably spend another month or two trying to discuss these
issues again with other group of folks.
We don't have rigid guidelines on how the code should be written;
understanding of that comes with experience and with discussions on gerrit.


 Lastly, in relation to operator requirements I didn't see you comment on
> whether you are fan of working on an open-source driver together. Just so
> you know, operator requirements are very important for us and I honestly
> don't see how we can use any current driver without major modifications.
> This leads me to want to create a new driver with operator requirements
> being central to the design.
>
The driver itself, IMO, is the most flexible part of the system. If you
think it needs to be improved or even rewritten (once it does what user
asks it to do via API) - I'd be glad to discuss that. I think rm_work (is
that Adam Harwell?) was going to start a thread on this in ML.

Btw, am my understanding is correct that you (as cloud operator) are mostly
interested in haproxy as a backend?

Thanks,
Eugene.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20140502/0aaea7c6/attachment.html>


More information about the OpenStack-dev mailing list