Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-25 Thread Jay Pipes

On 05/23/2014 03:31 PM, Robert Kukura wrote:

The core refactoring effort may eventually provide a nice solution, but
we can't wait for this. It seems we'll need to either use
python-neutronclient or get access to the Controller classes in the
meantime.


Using python-neutronclient will be the cleanest and most reliable 
implementation, rather than getting access to the Controller classes -- 
which may change substantially more often than the public API.


Best,
-jay

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-23 Thread Armando M.
On 23 May 2014 12:31, Robert Kukura  wrote:
>
> On 5/23/14, 12:46 AM, Mandeep Dhami wrote:
>
> Hi Armando:
>
> Those are good points. I will let Bob Kukura chime in on the specifics of
> how we intend to do that integration. But if what you see in the
> prototype/PoC was our final design for integration with Neutron core, I
> would be worried about that too. That specific part of the code
> (events/notifications for DHCP) was done in that way just for the prototype
> - to allow us to experiment with the part that was new and needed
> experimentation, the APIs and the model.
>
> That is the exact reason that we did not initially check the code to gerrit
> - so that we do not confuse the review process with the prototype process.
> But we were requested by other cores to check in even the prototype code as
> WIP patches to allow for review of the API parts. That can unfortunately
> create this very misunderstanding. For the review, I would recommend not the
> WIP patches, as they contain the prototype parts as well, but just the final
> patches that are not marked WIP. If you such issues in that part of the
> code, please DO raise that as that would be code that we intend to upstream.
>
> I believe Bob did discuss the specifics of this integration issue with you
> at the summit, but like I said it is best if he represents that side
> himself.
>
> Armando and Mandeep,
>
> Right, we do need a workable solution for the GBP driver to invoke neutron
> API operations, and this came up at the summit.
>
> We started out in the PoC directly calling the plugin, as is currently done
> when creating ports for agents. But this is not sufficient because the DHCP
> notifications, and I think the nova notifications, are needed for VM ports.
> We also really should be generating the other notifications, enforcing
> quotas, etc. for the neutron resources.

I am at loss here: if you say that you couldn't fit at the plugin
level, that is because it is the wrong level!! Sitting above it and
redo all the glue code around it to add DHCP notifications etc
continues the bad practice within the Neutron codebase where there is
not a good separation of concerns: for instance everything is cobbled
together like the DB and plugin logic. I appreciate that some design
decisions have been made in the past, but there's no good reason for a
nice new feature like GP to continue this bad practice; this is why I
feel strongly about the current approach being taken.

>
> We could just use python-neutronclient, but I think we'd prefer to avoid the
> overhead. The neutron project already depends on python-neutronclient for
> some tests, the debug facility, and the metaplugin, so in retrospect, we
> could have easily used it in the PoC.

I am not sure I understand what overhead you mean here. Could you
clarify? Actually looking at the code, I see a mind boggling set of
interactions going back and forth between the GP plugin, the policy
driver manager, the mapping driver and the core plugin: they are all
entangled together. For instance, when creating an endpoint the GP
plugin ends up calling the mapping driver that in turns ends up calls
the GP plugin itself! If this is not overhead I don't know what is!
The way the code has been structured makes it very difficult to read,
let alone maintain and extend with other policy mappers. The ML2-like
nature of the approach taken might work well in the context of core
plugin, mechanisms drivers etc, but I would argue that it poorly
applies to the context of GP.

>
> With the existing REST code, if we could find the
> neutron.api.v2.base.Controller class instance for each resource, we could
> simply call create(), update(), delete(), and show() on these. I didn't see
> an easy way to find these Controller instances, so I threw together some
> code similar to these Controller methods for the PoC. It probably wouldn't
> take too much work to have neutron.manager.NeutronManager provide access to
> the Controller classes if we want to go this route.
>
> The core refactoring effort may eventually provide a nice solution, but we
> can't wait for this. It seems we'll need to either use python-neutronclient
> or get access to the Controller classes in the meantime.
>
> Any thoughts on these? Any other ideas?

I am still not sure why do you even need to go all the way down to the
Controller class. After all it's almost like GP could be a service in
its own right that makes use of Neutron to map the application centric
abstractions on top of the networking constructs; this can happen via
the REST interface. I don't think there is a dependency on the core
refactoring here: the two can progress separately, so long as we break
the tie, from an implementation perspective, that GP and Core plugins
need to leave in the same address space. Am I missing something?
Because I still cannot justify why things have been coded the way they
have.

Thanks,
Armando

>
> Thanks,
>
> -Bob
>
>
> Regards,
> Mandeep
>
>
>
>
> ___

Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-23 Thread Sumit Naiksatam
Hi Bob, The approach towards having the neutron.manager.NeutronManager
provide access to the Controller classes seems like something worth
exploring for the shorter term.

Thanks,
~Sumit.

On Fri, May 23, 2014 at 12:31 PM, Robert Kukura
 wrote:
>
> On 5/23/14, 12:46 AM, Mandeep Dhami wrote:
>
> Hi Armando:
>
> Those are good points. I will let Bob Kukura chime in on the specifics of
> how we intend to do that integration. But if what you see in the
> prototype/PoC was our final design for integration with Neutron core, I
> would be worried about that too. That specific part of the code
> (events/notifications for DHCP) was done in that way just for the prototype
> - to allow us to experiment with the part that was new and needed
> experimentation, the APIs and the model.
>
> That is the exact reason that we did not initially check the code to gerrit
> - so that we do not confuse the review process with the prototype process.
> But we were requested by other cores to check in even the prototype code as
> WIP patches to allow for review of the API parts. That can unfortunately
> create this very misunderstanding. For the review, I would recommend not the
> WIP patches, as they contain the prototype parts as well, but just the final
> patches that are not marked WIP. If you such issues in that part of the
> code, please DO raise that as that would be code that we intend to upstream.
>
> I believe Bob did discuss the specifics of this integration issue with you
> at the summit, but like I said it is best if he represents that side
> himself.
>
> Armando and Mandeep,
>
> Right, we do need a workable solution for the GBP driver to invoke neutron
> API operations, and this came up at the summit.
>
> We started out in the PoC directly calling the plugin, as is currently done
> when creating ports for agents. But this is not sufficient because the DHCP
> notifications, and I think the nova notifications, are needed for VM ports.
> We also really should be generating the other notifications, enforcing
> quotas, etc. for the neutron resources.
>
> We could just use python-neutronclient, but I think we'd prefer to avoid the
> overhead. The neutron project already depends on python-neutronclient for
> some tests, the debug facility, and the metaplugin, so in retrospect, we
> could have easily used it in the PoC.
>
> With the existing REST code, if we could find the
> neutron.api.v2.base.Controller class instance for each resource, we could
> simply call create(), update(), delete(), and show() on these. I didn't see
> an easy way to find these Controller instances, so I threw together some
> code similar to these Controller methods for the PoC. It probably wouldn't
> take too much work to have neutron.manager.NeutronManager provide access to
> the Controller classes if we want to go this route.
>
> The core refactoring effort may eventually provide a nice solution, but we
> can't wait for this. It seems we'll need to either use python-neutronclient
> or get access to the Controller classes in the meantime.
>
> Any thoughts on these? Any other ideas?
>
> Thanks,
>
> -Bob
>
>
> Regards,
> Mandeep
>
>
>
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-23 Thread Robert Kukura


On 5/23/14, 12:46 AM, Mandeep Dhami wrote:

Hi Armando:

Those are good points. I will let Bob Kukura chime in on the specifics 
of how we intend to do that integration. But if what you see in the 
prototype/PoC was our final design for integration with Neutron core, 
I would be worried about that too. That specific part of the code 
(events/notifications for DHCP) was done in that way just for the 
prototype - to allow us to experiment with the part that was new and 
needed experimentation, the APIs and the model.


That is the exact reason that we did not initially check the code to 
gerrit - so that we do not confuse the review process with the 
prototype process. But we were requested by other cores to check in 
even the prototype code as WIP patches to allow for review of the API 
parts. That can unfortunately create this very misunderstanding. For 
the review, I would recommend not the WIP patches, as they contain the 
prototype parts as well, but just the final patches that are not 
marked WIP. If you such issues in that part of the code, please DO 
raise that as that would be code that we intend to upstream.


I believe Bob did discuss the specifics of this integration issue with 
you at the summit, but like I said it is best if he represents that 
side himself.

Armando and Mandeep,

Right, we do need a workable solution for the GBP driver to invoke 
neutron API operations, and this came up at the summit.


We started out in the PoC directly calling the plugin, as is currently 
done when creating ports for agents. But this is not sufficient because 
the DHCP notifications, and I think the nova notifications, are needed 
for VM ports. We also really should be generating the other 
notifications, enforcing quotas, etc. for the neutron resources.


We could just use python-neutronclient, but I think we'd prefer to avoid 
the overhead. The neutron project already depends on 
python-neutronclient for some tests, the debug facility, and the 
metaplugin, so in retrospect, we could have easily used it in the PoC.


With the existing REST code, if we could find the 
neutron.api.v2.base.Controller class instance for each resource, we 
could simply call create(), update(), delete(), and show() on these. I 
didn't see an easy way to find these Controller instances, so I threw 
together some code similar to these Controller methods for the PoC. It 
probably wouldn't take too much work to have 
neutron.manager.NeutronManager provide access to the Controller classes 
if we want to go this route.


The core refactoring effort may eventually provide a nice solution, but 
we can't wait for this. It seems we'll need to either use 
python-neutronclient or get access to the Controller classes in the 
meantime.


Any thoughts on these? Any other ideas?

Thanks,

-Bob


Regards,
Mandeep




___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-23 Thread Stephen Wong
progress.
>>
>> I think we had a really good feedback from the larger OpenStack community
>> and I would say a wide support for addition of policy abstractions to
>> Neutron. If the feedback we received at the summit in Hong Kong was mostly
>> positive, in Atlanta the support was overwhelmingly positive in my opinion.
>> I just wanted to make sure this does not get lost in our discussions.
>>
>> Needless to say, we will work on a path to have the Group Policy work
>> included in Neutron in a way that keeps the quality of code in Neutron
>> preserved. To rephrase what Armando said in the IRC meeting earlier today,
>> we all share a common goal and that is to do what's right. I think it
>> may be beneficial that for the moment and for the next few days as we try
>> to find the best path forward, we forget about any particular
>> cycle/milestone/priority and look for the best path forward and see where
>> that leads us. To this end, the group policy team will be setting up a
>> meeting with Armando (and others who are interested) to in particular
>> discuss the possibility of making the code less tightly coupled with
>> Neutron core. We will also consider how we can address Marun's and Mark's
>> concerns by trying to have a simpler but functional set of patches that can
>> be reviewed more effectively such that we can build on them in an iterative
>> manner.
>>
>> Meanwhile, please do continue the discussion on the mailing list.
>>
>> Best,
>>
>> Mohammad
>>
>> [1] https://wiki.openstack.org/wiki/Meetings/Neutron_Group_Policy
>>
>> [image: Inactive hide details for "Armando M." ---05/22/2014 11:24:35
>> PM---On 22 May 2014 13:59, Mandeep Dhami > M." ---05/22/2014 11:24:35 PM---On 22 May 2014 13:59, Mandeep Dhami <
>> dh...@noironetworks.com> wrote: >
>>
>> From: "Armando M." 
>> To: "OpenStack Development Mailing List (not for usage questions)" <
>> openstack-dev@lists.openstack.org>,
>> Date: 05/22/2014 11:24 PM
>> Subject: Re: [openstack-dev] [neutron][group-based-policy] Should we
>> revisit the priority of group-based policy?
>> --
>>
>>
>>
>> On 22 May 2014 13:59, Mandeep Dhami  wrote:
>> >
>> > Maru's concerns are that:
>> > 1. It is large
>> > 2. It is complex
>> >
>> > And Armando's related concerns are:
>> > 3. Could dev/review cycles be better spent on refactoring
>> > 4. If refactored neutron was available, would a simpler option become
>> more
>> > viable
>>
>> This is not what I meant to say, and if this was the message that came
>> across I apologize for the confusion; let me rephrase:
>>
>> After looking (and relooking) at the initial patches proposed I
>> started to question why the GP plugin functionality was so tightly
>> integrated with the Neutron core functionality; even though I might
>> guess the thinking process, I wonder if such tight coupling was the
>> result of design decisions made without thoroughly considering
>> alternative approaches. Without going too much into details during
>> this email, I can see in the above mentioned patches that lots of
>> plumbing code (like Nova and dhcp notifiers handling code) is put in
>> place to make direct calls to core plugin methods: this spills
>> implementation details across multiple parts of the project; it's
>> fragile because it's prone to ripple effects due to lack of proper
>> encapsulation: if a change is made in the plugin API or its
>> implementation, the whole thing needs to be looked at, end-to-end:
>> this does not scale from a human perspective (probably only a handful
>> of people can really say that they know the Neutron codebase
>> inside-out), it is difficult to maintain, it is difficult to test, it
>> is difficult to extend. etc etc.
>>
>> Instead, I was advocating for an approach where GP and Neutron Core
>> integrate via (a well defined and stable) REST API, or similar (more
>> abstracted) mechanisms; this has obvious benefits because the two
>> become suddenly loosely coupled: a change done in the way Neutron
>> deals with DHCP messages is not going to have any effect to how the GP
>> plugin create resources. Also, any potential refactoring of the
>> Neutron Core will not cause the GP team to take the burden of bringing
>> the current implementation forward.
>>
>> This is why I was proposing that we talk about the introduction of
>> integration hooks, should 

Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-23 Thread Sumit Naiksatam
Paul good points, and I am very happy to read that your expectations
are very closely aligned with the direction we have taken (in terms of
decoupling of the group policy layer from the underlying building
blocks).

Thanks also Kyle for your earlier email. I believe the team has always
been aligned on the work items you describe. So onward to Juno! ;-)

On Fri, May 23, 2014 at 9:41 AM, Mandeep Dhami  wrote:
>
> Thanks Paul. Feedback like this, from actual users of neutron in large
> deployments, is the very reason why I feel so strongly that we need to keep
> this a high priority work item.
>
> Regards,
> Mandeep
>
>
> On Fri, May 23, 2014 at 9:28 AM, CARVER, PAUL  wrote:
>>
>> Mohammad Banikazemi wrote:
>>
>> >in Atlanta the support was overwhelmingly positive in my opinion. I just
>> > wanted to make sure this does not get >lost in our discussions.
>>
>> Absolutely. I hadn’t been following the group policy discussions prior to
>> the summit but I was very impressed with what I saw and heard.
>>
>>
>> >to in particular discuss the possibility of making the code less tightly
>> > coupled with Neutron core.
>>
>> +1 to making it less tightly coupled (although I haven’t been inside the
>> code to have an opinion on how tightly coupled it is now)
>>
>> Let’s keep in mind OSI-like layers and well defined interfaces between
>> them. Coming from a hardware networking background I find it very convenient
>> to think in terms of ports, networks, subnets and routers. Those concepts
>> should continue to be basic building blocks of software defined networks.
>> The layer 4+ stuff should be added on top with clean interfaces that don’t
>> entangle functionality up and down the stack.
>>
>> Strict OSI layer compliance has never been a great success, but the
>> general concept has been very useful for a long time All the most painful
>> protocols for a network person to deal with are the ones like SIP where
>> clean separation of layers was indiscriminately  violated.
>>
>>
>> ___
>> OpenStack-dev mailing list
>> OpenStack-dev@lists.openstack.org
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-23 Thread Mandeep Dhami
Thanks Paul. Feedback like this, from actual users of neutron in large
deployments, is the very reason why I feel so strongly that we need to keep
this a high priority work item.

Regards,
Mandeep


On Fri, May 23, 2014 at 9:28 AM, CARVER, PAUL  wrote:

>  Mohammad Banikazemi wrote:
>
>  >in Atlanta the support was overwhelmingly positive in my opinion. I
> just wanted to make sure this does not get >lost in our discussions.
>
>  Absolutely. I hadn’t been following the group policy discussions prior
> to the summit but I was very impressed with what I saw and heard.
>
>
> >to in particular discuss the possibility of making the code less tightly
> coupled with Neutron core.
>
> +1 to making it less tightly coupled (although I haven’t been inside the
> code to have an opinion on how tightly coupled it is now)
>
> Let’s keep in mind OSI-like layers and well defined interfaces between
> them. Coming from a hardware networking background I find it very
> convenient to think in terms of ports, networks, subnets and routers. Those
> concepts should continue to be basic building blocks of software defined
> networks. The layer 4+ stuff should be added on top with clean interfaces
> that don’t entangle functionality up and down the stack.
>
> Strict OSI layer compliance has never been a great success, but the
> general concept has been very useful for a long time All the most painful
> protocols for a network person to deal with are the ones like SIP where
> clean separation of layers was indiscriminately  violated.
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-23 Thread CARVER, PAUL
Mohammad Banikazemi wrote:


>in Atlanta the support was overwhelmingly positive in my opinion. I just 
>wanted to make sure this does not get >lost in our discussions.


Absolutely. I hadn't been following the group policy discussions prior to the 
summit but I was very impressed with what I saw and heard.

>to in particular discuss the possibility of making the code less tightly 
>coupled with Neutron core.

+1 to making it less tightly coupled (although I haven't been inside the code 
to have an opinion on how tightly coupled it is now)

Let's keep in mind OSI-like layers and well defined interfaces between them. 
Coming from a hardware networking background I find it very convenient to think 
in terms of ports, networks, subnets and routers. Those concepts should 
continue to be basic building blocks of software defined networks. The layer 4+ 
stuff should be added on top with clean interfaces that don't entangle 
functionality up and down the stack.

Strict OSI layer compliance has never been a great success, but the general 
concept has been very useful for a long time All the most painful protocols for 
a network person to deal with are the ones like SIP where clean separation of 
layers was indiscriminately  violated.
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-23 Thread Kyle Mestery
icular
>> discuss the possibility of making the code less tightly coupled with
>> Neutron core. We will also consider how we can address Marun's and Mark's
>> concerns by trying to have a simpler but functional set of patches that can
>> be reviewed more effectively such that we can build on them in an iterative
>> manner.
>>
>> Meanwhile, please do continue the discussion on the mailing list.
>>
>> Best,
>>
>> Mohammad
>>
>> [1] https://wiki.openstack.org/wiki/Meetings/Neutron_Group_Policy
>>
>> [image: Inactive hide details for "Armando M." ---05/22/2014 11:24:35
>> PM---On 22 May 2014 13:59, Mandeep Dhami > M." ---05/22/2014 11:24:35 PM---On 22 May 2014 13:59, Mandeep Dhami <
>> dh...@noironetworks.com> wrote: >
>>
>> From: "Armando M." 
>> To: "OpenStack Development Mailing List (not for usage questions)" <
>> openstack-dev@lists.openstack.org>,
>> Date: 05/22/2014 11:24 PM
>> Subject: Re: [openstack-dev] [neutron][group-based-policy] Should we
>> revisit the priority of group-based policy?
>> --
>>
>>
>>
>> On 22 May 2014 13:59, Mandeep Dhami  wrote:
>> >
>> > Maru's concerns are that:
>> > 1. It is large
>> > 2. It is complex
>> >
>> > And Armando's related concerns are:
>> > 3. Could dev/review cycles be better spent on refactoring
>> > 4. If refactored neutron was available, would a simpler option become
>> more
>> > viable
>>
>> This is not what I meant to say, and if this was the message that came
>> across I apologize for the confusion; let me rephrase:
>>
>> After looking (and relooking) at the initial patches proposed I
>> started to question why the GP plugin functionality was so tightly
>> integrated with the Neutron core functionality; even though I might
>> guess the thinking process, I wonder if such tight coupling was the
>> result of design decisions made without thoroughly considering
>> alternative approaches. Without going too much into details during
>> this email, I can see in the above mentioned patches that lots of
>> plumbing code (like Nova and dhcp notifiers handling code) is put in
>> place to make direct calls to core plugin methods: this spills
>> implementation details across multiple parts of the project; it's
>> fragile because it's prone to ripple effects due to lack of proper
>> encapsulation: if a change is made in the plugin API or its
>> implementation, the whole thing needs to be looked at, end-to-end:
>> this does not scale from a human perspective (probably only a handful
>> of people can really say that they know the Neutron codebase
>> inside-out), it is difficult to maintain, it is difficult to test, it
>> is difficult to extend. etc etc.
>>
>> Instead, I was advocating for an approach where GP and Neutron Core
>> integrate via (a well defined and stable) REST API, or similar (more
>> abstracted) mechanisms; this has obvious benefits because the two
>> become suddenly loosely coupled: a change done in the way Neutron
>> deals with DHCP messages is not going to have any effect to how the GP
>> plugin create resources. Also, any potential refactoring of the
>> Neutron Core will not cause the GP team to take the burden of bringing
>> the current implementation forward.
>>
>> This is why I was proposing that we talk about the introduction of
>> integration hooks, should they (or lack thereof) have been the culprit
>> of such an initial design approach. Please, take my comments as
>> initial reviews to the above patches, if you will :)
>>
>> To be constructive, as a core reviewer who should suggest
>> alternatives, I would invite the people reading this thread to have a
>> look at [1] and [2]: these were introduced by RAX to their cut of
>> Neutron, having in mind exactly what I have been saying: adding
>> functionality with zero impact to existing code. If something along
>> those lines can be achieved, then this would be very beneficial for
>> the progress of the GP effort as it transitions and evolves
>> into/within Neutron, IMO.
>>
>> Having said that, I am making these points without particular
>> reference to the complexity of the GP model being proposed, or the
>> approach being taken to introduce it to the tree. Even though I share
>> some of Maru's points, good architecture and design principles in
>> software development should be followed wherever possible and
>> irrespective o

Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-23 Thread Prasad Vellanki
Great to see the discussions on the ML.
Mohammad - Good summary.

I would like to make few  points
1) The current GP API is tuned towards person deploying the application as
opposed to the networking person. This is probably a better way as one
starts to think about self service infrastructure model and person
deploying applications. We had debated about this on IRC and thought that
policies/contract applied to the end point group would be easier
abstraction. The complexity of networking is transformed to the
implementation while still retaining the flexibility for network admin to
provide additional policies.
2) I agree with mohammad that the feedback received for policy driven model
was very positive. I heard in one of the BOF sessions a large operator
commenting on this specifically in a very positive way. It would be sad to
see this relegated to lesser priority. I am not saying that we should not
address other issues in neutron but this should be addressed with equal
priority. Especially when a lot of thought and PoC is already being done.
3) It was to good see consensus on the IRC today about the process
particularly around code simplification, checkins and reviews as raised in
the emails.

thanks
prasadv


On Thu, May 22, 2014 at 9:10 PM, Mohammad Banikazemi  wrote:

> Thanks to everyone who participated in the Group Policy meeting [1]
> earlier today. A lot of good discussion that hopefully will continue with
> participation from the larger community. I wanted to first make a comment
> about how the Group Policy work was received outside the Neutron community
> and then focus on finding a way for us to make progress.
>
> I think we had a really good feedback from the larger OpenStack community
> and I would say a wide support for addition of policy abstractions to
> Neutron. If the feedback we received at the summit in Hong Kong was mostly
> positive, in Atlanta the support was overwhelmingly positive in my opinion.
> I just wanted to make sure this does not get lost in our discussions.
>
> Needless to say, we will work on a path to have the Group Policy work
> included in Neutron in a way that keeps the quality of code in Neutron
> preserved. To rephrase what Armando said in the IRC meeting earlier today,
> we all share a common goal and that is to do what's right. I think it may
> be beneficial that for the moment and for the next few days as we try to
> find the best path forward, we forget about any particular
> cycle/milestone/priority and look for the best path forward and see where
> that leads us. To this end, the group policy team will be setting up a
> meeting with Armando (and others who are interested) to in particular
> discuss the possibility of making the code less tightly coupled with
> Neutron core. We will also consider how we can address Marun's and Mark's
> concerns by trying to have a simpler but functional set of patches that can
> be reviewed more effectively such that we can build on them in an iterative
> manner.
>
> Meanwhile, please do continue the discussion on the mailing list.
>
> Best,
>
> Mohammad
>
> [1] https://wiki.openstack.org/wiki/Meetings/Neutron_Group_Policy
>
> [image: Inactive hide details for "Armando M." ---05/22/2014 11:24:35
> PM---On 22 May 2014 13:59, Mandeep Dhami  M." ---05/22/2014 11:24:35 PM---On 22 May 2014 13:59, Mandeep Dhami <
> dh...@noironetworks.com> wrote: >
>
> From: "Armando M." 
> To: "OpenStack Development Mailing List (not for usage questions)" <
> openstack-dev@lists.openstack.org>,
> Date: 05/22/2014 11:24 PM
> Subject: Re: [openstack-dev] [neutron][group-based-policy] Should we
> revisit the priority of group-based policy?
> --
>
>
>
> On 22 May 2014 13:59, Mandeep Dhami  wrote:
> >
> > Maru's concerns are that:
> > 1. It is large
> > 2. It is complex
> >
> > And Armando's related concerns are:
> > 3. Could dev/review cycles be better spent on refactoring
> > 4. If refactored neutron was available, would a simpler option become
> more
> > viable
>
> This is not what I meant to say, and if this was the message that came
> across I apologize for the confusion; let me rephrase:
>
> After looking (and relooking) at the initial patches proposed I
> started to question why the GP plugin functionality was so tightly
> integrated with the Neutron core functionality; even though I might
> guess the thinking process, I wonder if such tight coupling was the
> result of design decisions made without thoroughly considering
> alternative approaches. Without going too much into details during
> this email, I can see in the above mentioned patches that lots of
> plumbing code (like Nova and dhcp notifier

Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-22 Thread Mandeep Dhami
Hi Armando:

Those are good points. I will let Bob Kukura chime in on the specifics of
how we intend to do that integration. But if what you see in the
prototype/PoC was our final design for integration with Neutron core, I
would be worried about that too. That specific part of the code
(events/notifications for DHCP) was done in that way just for the prototype
- to allow us to experiment with the part that was new and needed
experimentation, the APIs and the model.

That is the exact reason that we did not initially check the code to gerrit
- so that we do not confuse the review process with the prototype process.
But we were requested by other cores to check in even the prototype code as
WIP patches to allow for review of the API parts. That can unfortunately
create this very misunderstanding. For the review, I would recommend not
the WIP patches, as they contain the prototype parts as well, but just the
final patches that are not marked WIP. If you such issues in that part of
the code, please DO raise that as that would be code that we intend to
upstream.

I believe Bob did discuss the specifics of this integration issue with you
at the summit, but like I said it is best if he represents that side
himself.

Regards,
Mandeep



On Thu, May 22, 2014 at 8:19 PM, Armando M.  wrote:

> On 22 May 2014 13:59, Mandeep Dhami  wrote:
> >
> > Maru's concerns are that:
> > 1. It is large
> > 2. It is complex
> >
> > And Armando's related concerns are:
> > 3. Could dev/review cycles be better spent on refactoring
> > 4. If refactored neutron was available, would a simpler option become
> more
> > viable
>
> This is not what I meant to say, and if this was the message that came
> across I apologize for the confusion; let me rephrase:
>
> After looking (and relooking) at the initial patches proposed I
> started to question why the GP plugin functionality was so tightly
> integrated with the Neutron core functionality; even though I might
> guess the thinking process, I wonder if such tight coupling was the
> result of design decisions made without thoroughly considering
> alternative approaches. Without going too much into details during
> this email, I can see in the above mentioned patches that lots of
> plumbing code (like Nova and dhcp notifiers handling code) is put in
> place to make direct calls to core plugin methods: this spills
> implementation details across multiple parts of the project; it's
> fragile because it's prone to ripple effects due to lack of proper
> encapsulation: if a change is made in the plugin API or its
> implementation, the whole thing needs to be looked at, end-to-end:
> this does not scale from a human perspective (probably only a handful
> of people can really say that they know the Neutron codebase
> inside-out), it is difficult to maintain, it is difficult to test, it
> is difficult to extend. etc etc.
>
> Instead, I was advocating for an approach where GP and Neutron Core
> integrate via (a well defined and stable) REST API, or similar (more
> abstracted) mechanisms; this has obvious benefits because the two
> become suddenly loosely coupled: a change done in the way Neutron
> deals with DHCP messages is not going to have any effect to how the GP
> plugin create resources. Also, any potential refactoring of the
> Neutron Core will not cause the GP team to take the burden of bringing
> the current implementation forward.
>
> This is why I was proposing that we talk about the introduction of
> integration hooks, should they (or lack thereof) have been the culprit
> of such an initial design approach. Please, take my comments as
> initial reviews to the above patches, if you will :)
>
> To be constructive, as a core reviewer who should suggest
> alternatives, I would invite the people reading this thread to have a
> look at [1] and [2]: these were introduced by RAX to their cut of
> Neutron, having in mind exactly what I have been saying: adding
> functionality with zero impact to existing code. If something along
> those lines can be achieved, then this would be very beneficial for
> the progress of the GP effort as it transitions and evolves
> into/within Neutron, IMO.
>
> Having said that, I am making these points without particular
> reference to the complexity of the GP model being proposed, or the
> approach being taken to introduce it to the tree. Even though I share
> some of Maru's points, good architecture and design principles in
> software development should be followed wherever possible and
> irrespective of the domain where such development occur.
>
> Many thanks,
> Armando
>
>
> [1] - https://github.com/roaet/wafflehaus
> [2] - https://github.com/roaet/wafflehaus.neutron
>
> >
> > Let me address them in that order.
> >
> > 1. Re: It is large
> > Group policy has an ambitious goal  - provide devop teams with policy
> based
> > controls that are usable at scale and with automation (say a higher
> > governance layer like Congress). The fact that meeting a large challenge
>

Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-22 Thread Mohammad Banikazemi

Thanks to everyone who participated in the Group Policy meeting [1] earlier
today. A lot of good discussion that hopefully will continue with
participation from the larger community. I wanted to first make a comment
about how the Group Policy work was received outside the Neutron community
and then focus on finding a way for us to make progress.

I think we had a really good feedback from the larger OpenStack community
and I would say a wide support for addition of policy abstractions to
Neutron. If the feedback we received at the summit in Hong Kong was mostly
positive, in Atlanta the support was overwhelmingly positive in my opinion.
I just wanted to make sure this does not get lost in our discussions.

Needless to say, we will work on a path to have the Group Policy work
included in Neutron in a way that keeps the quality of code in Neutron
preserved. To rephrase what Armando said in the IRC meeting earlier today,
we all share a common goal and that is to do what's right. I think it may
be beneficial that for the moment and for the next few days as we try to
find the best path forward, we forget about any particular
cycle/milestone/priority and look for the best path forward and see where
that leads us. To this end, the group policy team will be setting up a
meeting with Armando (and others who are interested) to in particular
discuss the possibility of making the code less tightly coupled with
Neutron core. We will also consider how we can address Marun's and Mark's
concerns by trying to have a simpler but functional set of patches that can
be reviewed more effectively such that we can build on them in an iterative
manner.

Meanwhile, please do continue the discussion on the mailing list.

Best,

Mohammad

[1] https://wiki.openstack.org/wiki/Meetings/Neutron_Group_Policy



From:   "Armando M." 
To: "OpenStack Development Mailing List (not for usage questions)"
,
Date:   05/22/2014 11:24 PM
Subject:    Re: [openstack-dev] [neutron][group-based-policy] Should we
    revisit the priority of group-based policy?



On 22 May 2014 13:59, Mandeep Dhami  wrote:
>
> Maru's concerns are that:
> 1. It is large
> 2. It is complex
>
> And Armando's related concerns are:
> 3. Could dev/review cycles be better spent on refactoring
> 4. If refactored neutron was available, would a simpler option become
more
> viable

This is not what I meant to say, and if this was the message that came
across I apologize for the confusion; let me rephrase:

After looking (and relooking) at the initial patches proposed I
started to question why the GP plugin functionality was so tightly
integrated with the Neutron core functionality; even though I might
guess the thinking process, I wonder if such tight coupling was the
result of design decisions made without thoroughly considering
alternative approaches. Without going too much into details during
this email, I can see in the above mentioned patches that lots of
plumbing code (like Nova and dhcp notifiers handling code) is put in
place to make direct calls to core plugin methods: this spills
implementation details across multiple parts of the project; it's
fragile because it's prone to ripple effects due to lack of proper
encapsulation: if a change is made in the plugin API or its
implementation, the whole thing needs to be looked at, end-to-end:
this does not scale from a human perspective (probably only a handful
of people can really say that they know the Neutron codebase
inside-out), it is difficult to maintain, it is difficult to test, it
is difficult to extend. etc etc.

Instead, I was advocating for an approach where GP and Neutron Core
integrate via (a well defined and stable) REST API, or similar (more
abstracted) mechanisms; this has obvious benefits because the two
become suddenly loosely coupled: a change done in the way Neutron
deals with DHCP messages is not going to have any effect to how the GP
plugin create resources. Also, any potential refactoring of the
Neutron Core will not cause the GP team to take the burden of bringing
the current implementation forward.

This is why I was proposing that we talk about the introduction of
integration hooks, should they (or lack thereof) have been the culprit
of such an initial design approach. Please, take my comments as
initial reviews to the above patches, if you will :)

To be constructive, as a core reviewer who should suggest
alternatives, I would invite the people reading this thread to have a
look at [1] and [2]: these were introduced by RAX to their cut of
Neutron, having in mind exactly what I have been saying: adding
functionality with zero impact to existing code. If something along
those lines can be achieved, then this would be very beneficial for
the progress of the GP effort as it transitions and evolves
into/within Neutron, IMO.

Having said that, I am making these points without particular
referenc

Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-22 Thread Armando M.
On 22 May 2014 13:59, Mandeep Dhami  wrote:
>
> Maru's concerns are that:
> 1. It is large
> 2. It is complex
>
> And Armando's related concerns are:
> 3. Could dev/review cycles be better spent on refactoring
> 4. If refactored neutron was available, would a simpler option become more
> viable

This is not what I meant to say, and if this was the message that came
across I apologize for the confusion; let me rephrase:

After looking (and relooking) at the initial patches proposed I
started to question why the GP plugin functionality was so tightly
integrated with the Neutron core functionality; even though I might
guess the thinking process, I wonder if such tight coupling was the
result of design decisions made without thoroughly considering
alternative approaches. Without going too much into details during
this email, I can see in the above mentioned patches that lots of
plumbing code (like Nova and dhcp notifiers handling code) is put in
place to make direct calls to core plugin methods: this spills
implementation details across multiple parts of the project; it's
fragile because it's prone to ripple effects due to lack of proper
encapsulation: if a change is made in the plugin API or its
implementation, the whole thing needs to be looked at, end-to-end:
this does not scale from a human perspective (probably only a handful
of people can really say that they know the Neutron codebase
inside-out), it is difficult to maintain, it is difficult to test, it
is difficult to extend. etc etc.

Instead, I was advocating for an approach where GP and Neutron Core
integrate via (a well defined and stable) REST API, or similar (more
abstracted) mechanisms; this has obvious benefits because the two
become suddenly loosely coupled: a change done in the way Neutron
deals with DHCP messages is not going to have any effect to how the GP
plugin create resources. Also, any potential refactoring of the
Neutron Core will not cause the GP team to take the burden of bringing
the current implementation forward.

This is why I was proposing that we talk about the introduction of
integration hooks, should they (or lack thereof) have been the culprit
of such an initial design approach. Please, take my comments as
initial reviews to the above patches, if you will :)

To be constructive, as a core reviewer who should suggest
alternatives, I would invite the people reading this thread to have a
look at [1] and [2]: these were introduced by RAX to their cut of
Neutron, having in mind exactly what I have been saying: adding
functionality with zero impact to existing code. If something along
those lines can be achieved, then this would be very beneficial for
the progress of the GP effort as it transitions and evolves
into/within Neutron, IMO.

Having said that, I am making these points without particular
reference to the complexity of the GP model being proposed, or the
approach being taken to introduce it to the tree. Even though I share
some of Maru's points, good architecture and design principles in
software development should be followed wherever possible and
irrespective of the domain where such development occur.

Many thanks,
Armando


[1] - https://github.com/roaet/wafflehaus
[2] - https://github.com/roaet/wafflehaus.neutron

>
> Let me address them in that order.
>
> 1. Re: It is large
> Group policy has an ambitious goal  - provide devop teams with policy based
> controls that are usable at scale and with automation (say a higher
> governance layer like Congress). The fact that meeting a large challenge
> requires more code is natural. We understand that challenge, and that is why
> we did a prototype (as PoC that was demonstrated on the summit). And based
> on that learning we are incrementally creating patches for building the
> group based policy. Just because a task is large, we as neutron can not shy
> away from building it. That will only drive people who need it out side
> neutron (as we are seeing with the frustration that the LBaaS team had
> because they have a requirement that is "large" as well).
>
> 2. Re: It is complex
> Complexity depends on the context. Our goal was to make the end-user's life
> simpler (and more automated). To achieve some of that simplicity, we
> required a little more complexity in the implementation. We decide to make
> that arbitrage - a little higher complexity in implementation to allow for
> simpler usage. But we were careful and did not want to impose that
> complexity on every use case - hence a lot of that is optional (and
> exercised only if the use case needs it). Unfortunately the model, has to
> model all of it so as it not add complexity later in upgrade and backward
> compatibility issues. We choose to do architecture upfront, and then
> implement it incrementally.
>
> The team came up with the model currently in model based on that review and
> evaluation all the proposals in the document that you refer. It is easy to
> make general comments, but unless you participate in the

Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-22 Thread Mandeep Dhami
OK.


On Thu, May 22, 2014 at 5:13 PM, Maru Newby  wrote:

>
> On May 22, 2014, at 4:35 PM, Mandeep Dhami 
> wrote:
>
> > > each patch needs to receive core reviewer attention and that
> subsequent patches incorporate their feedback.
> >
> > At least two core neutron members were involved in creating the PoC, and
> at least two more cores were involved in reviews at various times. In
> addition to them, senior developers from at least seven networking
> companies were involved in developing this code. I concede that this code
> was on github for a few weeks, as that made the prototyping faster and
> allowed us to "fail faster", but it was open and reviewed with the team
> above (and with the cores in that team). Based on our learning from that
> prototype activity, and feedback of those cores, we are upstreaming the
> improved "production code" to gerrit. All that involvement from the neutron
> core reviewers was critical in keeping the larger PoC team above focused on
> neutron norms and expectations from design and code.
>
> The feedback from reviewers needs to be provided on openstack
> infrastructure rather than outside it so that it is both visible to all
> reviewers (not just those directly involved) and that an enduring history
> of the process is retained.  These requirements were not met in working in
> github on the POC, regardless of your protestations of how 'open' that work
> was and of who was involved.  This isn't to suggest that out-of-tree
> prototyping isn't useful - of course it is.  But I think it important to
> recognize that out-of-tree development is unlikely to be an effective way
> to develop code that can be easily merged to Neutron, and that the project
> can ill-afford the additional review cost it is likely to impose.
>
> As such, and as was agreed to in the irc meeting this morning, the way
> forward is to recognize that the POC is best considered a prototype useful
> in informing efforts to iterate in the open.
>
>
> m.
>
>
> >
> >
> >
> > On Thu, May 22, 2014 at 4:03 PM, Maru Newby  wrote:
> > On May 22, 2014, at 1:59 PM, Mandeep Dhami 
> wrote:
> >
> > >
> > > Maru's concerns are that:
> > > 1. It is large
> > > 2. It is complex
> >
> > As per the discussion in the irc meeting today, I hope it is clear now
> that eventual size and complexity are not real issue.  Rather, I am
> concerned at how we get there.
> >
> > I keep talking about 'iterating in the open', and want to make it clear
> what I mean by this.  It involves proposing a reviewable patch to openstack
> gerrit, working with reviewers to get the patch merged, and then
> incorporating their feedback into the overall design to drive the
> implementation of future patches.
> >
> > 'Iterating in the open' does not imply working outside of gerrit to
> create a monolithic codebase that needs to be manually decomposed into
> reviewable chunks at the end.  I understand that this may be an effective
> way to create a POC, but it is not an effective way to produce code that
> can be merged into Neutron.  Core reviewers have a mandate to ensure the
> quality of every patch, and their feedback is likely to have an impact on
> subsequent implementation.
> >
> >
> > >
> > > And Armando's related concerns are:
> > > 3. Could dev/review cycles be better spent on refactoring
> > > 4. If refactored neutron was available, would a simpler option become
> more viable
> > >
> > > Let me address them in that order.
> > >
> > > 1. Re: It is large
> > > Group policy has an ambitious goal  - provide devop teams with policy
> based controls that are usable at scale and with automation (say a higher
> governance layer like Congress). The fact that meeting a large challenge
> requires more code is natural. We understand that challenge, and that is
> why we did a prototype (as PoC that was demonstrated on the summit). And
> based on that learning we are incrementally creating patches for building
> the group based policy. Just because a task is large, we as neutron can not
> shy away from building it. That will only drive people who need it out side
> neutron (as we are seeing with the frustration that the LBaaS team had
> because they have a requirement that is "large" as well).
> >
> > Again, the amount of code is not the problem.  How code is introduced
> into the tree, and how the design is socialized (both with developers and
> users), _is_ of critical importance.  Neutron is not alone in requiring an
> 'iterate in the open' approach - it is a characteristic common to many open
> source projects.
> >
> >
> > >
> > > 2. Re: It is complex
> > > Complexity depends on the context. Our goal was to make the end-user's
> life simpler (and more automated). To achieve some of that simplicity, we
> required a little more complexity in the implementation. We decide to make
> that arbitrage - a little higher complexity in implementation to allow for
> simpler usage. But we were careful and did not want to impose that
> complexity on every use case - 

Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-22 Thread Maru Newby

On May 22, 2014, at 4:35 PM, Mandeep Dhami  wrote:

> > each patch needs to receive core reviewer attention and that subsequent 
> > patches incorporate their feedback.
> 
> At least two core neutron members were involved in creating the PoC, and at 
> least two more cores were involved in reviews at various times. In addition 
> to them, senior developers from at least seven networking companies were 
> involved in developing this code. I concede that this code was on github for 
> a few weeks, as that made the prototyping faster and allowed us to "fail 
> faster", but it was open and reviewed with the team above (and with the cores 
> in that team). Based on our learning from that prototype activity, and 
> feedback of those cores, we are upstreaming the improved "production code" to 
> gerrit. All that involvement from the neutron core reviewers was critical in 
> keeping the larger PoC team above focused on neutron norms and expectations 
> from design and code.

The feedback from reviewers needs to be provided on openstack infrastructure 
rather than outside it so that it is both visible to all reviewers (not just 
those directly involved) and that an enduring history of the process is 
retained.  These requirements were not met in working in github on the POC, 
regardless of your protestations of how 'open' that work was and of who was 
involved.  This isn't to suggest that out-of-tree prototyping isn't useful - of 
course it is.  But I think it important to recognize that out-of-tree 
development is unlikely to be an effective way to develop code that can be 
easily merged to Neutron, and that the project can ill-afford the additional 
review cost it is likely to impose.

As such, and as was agreed to in the irc meeting this morning, the way forward 
is to recognize that the POC is best considered a prototype useful in informing 
efforts to iterate in the open.


m.


> 
> 
> 
> On Thu, May 22, 2014 at 4:03 PM, Maru Newby  wrote:
> On May 22, 2014, at 1:59 PM, Mandeep Dhami  wrote:
> 
> >
> > Maru's concerns are that:
> > 1. It is large
> > 2. It is complex
> 
> As per the discussion in the irc meeting today, I hope it is clear now that 
> eventual size and complexity are not real issue.  Rather, I am concerned at 
> how we get there.
> 
> I keep talking about 'iterating in the open', and want to make it clear what 
> I mean by this.  It involves proposing a reviewable patch to openstack 
> gerrit, working with reviewers to get the patch merged, and then 
> incorporating their feedback into the overall design to drive the 
> implementation of future patches.
> 
> 'Iterating in the open' does not imply working outside of gerrit to create a 
> monolithic codebase that needs to be manually decomposed into reviewable 
> chunks at the end.  I understand that this may be an effective way to create 
> a POC, but it is not an effective way to produce code that can be merged into 
> Neutron.  Core reviewers have a mandate to ensure the quality of every patch, 
> and their feedback is likely to have an impact on subsequent implementation.
> 
> 
> >
> > And Armando's related concerns are:
> > 3. Could dev/review cycles be better spent on refactoring
> > 4. If refactored neutron was available, would a simpler option become more 
> > viable
> >
> > Let me address them in that order.
> >
> > 1. Re: It is large
> > Group policy has an ambitious goal  - provide devop teams with policy based 
> > controls that are usable at scale and with automation (say a higher 
> > governance layer like Congress). The fact that meeting a large challenge 
> > requires more code is natural. We understand that challenge, and that is 
> > why we did a prototype (as PoC that was demonstrated on the summit). And 
> > based on that learning we are incrementally creating patches for building 
> > the group based policy. Just because a task is large, we as neutron can not 
> > shy away from building it. That will only drive people who need it out side 
> > neutron (as we are seeing with the frustration that the LBaaS team had 
> > because they have a requirement that is "large" as well).
> 
> Again, the amount of code is not the problem.  How code is introduced into 
> the tree, and how the design is socialized (both with developers and users), 
> _is_ of critical importance.  Neutron is not alone in requiring an 'iterate 
> in the open' approach - it is a characteristic common to many open source 
> projects.
> 
> 
> >
> > 2. Re: It is complex
> > Complexity depends on the context. Our goal was to make the end-user's life 
> > simpler (and more automated). To achieve some of that simplicity, we 
> > required a little more complexity in the implementation. We decide to make 
> > that arbitrage - a little higher complexity in implementation to allow for 
> > simpler usage. But we were careful and did not want to impose that 
> > complexity on every use case - hence a lot of that is optional (and 
> > exercised only if the use case needs i

Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-22 Thread Mandeep Dhami
> each patch needs to receive core reviewer attention and that subsequent
patches incorporate their feedback.

At least two core neutron members were involved in creating the PoC, and at
least two more cores were involved in reviews at various times. In addition
to them, senior developers from at least seven networking companies were
involved in developing this code. I concede that this code was on github
for a few weeks, as that made the prototyping faster and allowed us to
"fail faster", but it was open and reviewed with the team above (and with
the cores in that team). Based on our learning from that prototype
activity, and feedback of those cores, we are upstreaming the improved
"production code" to gerrit. All that involvement from the neutron core
reviewers was critical in keeping the larger PoC team above focused on
neutron norms and expectations from design and code.



On Thu, May 22, 2014 at 4:03 PM, Maru Newby  wrote:

> On May 22, 2014, at 1:59 PM, Mandeep Dhami 
> wrote:
>
> >
> > Maru's concerns are that:
> > 1. It is large
> > 2. It is complex
>
> As per the discussion in the irc meeting today, I hope it is clear now
> that eventual size and complexity are not real issue.  Rather, I am
> concerned at how we get there.
>
> I keep talking about 'iterating in the open', and want to make it clear
> what I mean by this.  It involves proposing a reviewable patch to openstack
> gerrit, working with reviewers to get the patch merged, and then
> incorporating their feedback into the overall design to drive the
> implementation of future patches.
>
> 'Iterating in the open' does not imply working outside of gerrit to create
> a monolithic codebase that needs to be manually decomposed into reviewable
> chunks at the end.  I understand that this may be an effective way to
> create a POC, but it is not an effective way to produce code that can be
> merged into Neutron.  Core reviewers have a mandate to ensure the quality
> of every patch, and their feedback is likely to have an impact on
> subsequent implementation.
>
>
> >
> > And Armando's related concerns are:
> > 3. Could dev/review cycles be better spent on refactoring
> > 4. If refactored neutron was available, would a simpler option become
> more viable
> >
> > Let me address them in that order.
> >
> > 1. Re: It is large
> > Group policy has an ambitious goal  - provide devop teams with policy
> based controls that are usable at scale and with automation (say a higher
> governance layer like Congress). The fact that meeting a large challenge
> requires more code is natural. We understand that challenge, and that is
> why we did a prototype (as PoC that was demonstrated on the summit). And
> based on that learning we are incrementally creating patches for building
> the group based policy. Just because a task is large, we as neutron can not
> shy away from building it. That will only drive people who need it out side
> neutron (as we are seeing with the frustration that the LBaaS team had
> because they have a requirement that is "large" as well).
>
> Again, the amount of code is not the problem.  How code is introduced into
> the tree, and how the design is socialized (both with developers and
> users), _is_ of critical importance.  Neutron is not alone in requiring an
> 'iterate in the open' approach - it is a characteristic common to many open
> source projects.
>
>
> >
> > 2. Re: It is complex
> > Complexity depends on the context. Our goal was to make the end-user's
> life simpler (and more automated). To achieve some of that simplicity, we
> required a little more complexity in the implementation. We decide to make
> that arbitrage - a little higher complexity in implementation to allow for
> simpler usage. But we were careful and did not want to impose that
> complexity on every use case - hence a lot of that is optional (and
> exercised only if the use case needs it). Unfortunately the model, has to
> model all of it so as it not add complexity later in upgrade and backward
> compatibility issues. We choose to do architecture upfront, and then
> implement it incrementally.
>
> Doing upfront architecture is fine, so long as the architecture also
> evolves in response to feedback from the review process in gerrit.
>  Similarly, incremental implementation is not enough - it needs to happen
> in gerrit.  And to be clear, the tool is not the critical factor.  When I
> say gerrit, I mean that each patch needs to receive core reviewer attention
> and that subsequent patches incorporate their feedback.
>
>
> >
> > The team came up with the model currently in model based on that review
> and evaluation all the proposals in the document that you refer. It is easy
> to make general comments, but unless you participate in the process and
> sign up to writing the code, those comments are not going to help with
> solving the original problem. And this _is_ open-source. If you disagree,
> please write code and the community can decide for itself as to wh

Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-22 Thread Adam Young

On 05/22/2014 07:03 PM, Maru Newby wrote:

On May 22, 2014, at 1:59 PM, Mandeep Dhami  wrote:


Maru's concerns are that:
1. It is large
2. It is complex

As per the discussion in the irc meeting today, I hope it is clear now that 
eventual size and complexity are not real issue.  Rather, I am concerned at how 
we get there.

I keep talking about 'iterating in the open', and want to make it clear what I 
mean by this.  It involves proposing a reviewable patch to openstack gerrit, 
working with reviewers to get the patch merged, and then incorporating their 
feedback into the overall design to drive the implementation of future patches.

'Iterating in the open' does not imply working outside of gerrit to create a 
monolithic codebase that needs to be manually decomposed into reviewable chunks 
at the end.  I understand that this may be an effective way to create a POC, 
but it is not an effective way to produce code that can be merged into Neutron. 
 Core reviewers have a mandate to ensure the quality of every patch, and their 
feedback is likely to have an impact on subsequent implementation.
We talked about Stacked policy for RBAC at the Summit.  I wonder if we 
are looking at two sides of the same problem.


For Keystone, teh pieces identified so far are:  associating policy with 
a server or endpoint, the auth_token middleware fetching it, and then 
the ability of a domain or project to define its own sub-policy.


At the API level, I was wondering about delegation, which is really what 
policy is about:  instead of  delegating a role, can I delegate the 
ability to perform just a single operations.  But even that is not fine 
grained enough.


Really, we need policy on objects.  For example, role assignments: I 
want to be able to delegate to a group admin the ability to assign users 
to his group.  That means he can assign the role "Member" to users in 
his group, but no other role.


The mechanisms to implement this are going to be common, I think across 
all of the services.  I think we are getting into SELinux land.






And Armando's related concerns are:
3. Could dev/review cycles be better spent on refactoring
4. If refactored neutron was available, would a simpler option become more 
viable

Let me address them in that order.

1. Re: It is large
Group policy has an ambitious goal  - provide devop teams with policy based controls that 
are usable at scale and with automation (say a higher governance layer like Congress). 
The fact that meeting a large challenge requires more code is natural. We understand that 
challenge, and that is why we did a prototype (as PoC that was demonstrated on the 
summit). And based on that learning we are incrementally creating patches for building 
the group based policy. Just because a task is large, we as neutron can not shy away from 
building it. That will only drive people who need it out side neutron (as we are seeing 
with the frustration that the LBaaS team had because they have a requirement that is 
"large" as well).

Again, the amount of code is not the problem.  How code is introduced into the 
tree, and how the design is socialized (both with developers and users), _is_ 
of critical importance.  Neutron is not alone in requiring an 'iterate in the 
open' approach - it is a characteristic common to many open source projects.



2. Re: It is complex
Complexity depends on the context. Our goal was to make the end-user's life 
simpler (and more automated). To achieve some of that simplicity, we required a 
little more complexity in the implementation. We decide to make that arbitrage 
- a little higher complexity in implementation to allow for simpler usage. But 
we were careful and did not want to impose that complexity on every use case - 
hence a lot of that is optional (and exercised only if the use case needs it). 
Unfortunately the model, has to model all of it so as it not add complexity 
later in upgrade and backward compatibility issues. We choose to do 
architecture upfront, and then implement it incrementally.

Doing upfront architecture is fine, so long as the architecture also evolves in 
response to feedback from the review process in gerrit.  Similarly, incremental 
implementation is not enough - it needs to happen in gerrit.  And to be clear, 
the tool is not the critical factor.  When I say gerrit, I mean that each patch 
needs to receive core reviewer attention and that subsequent patches 
incorporate their feedback.



The team came up with the model currently in model based on that review and 
evaluation all the proposals in the document that you refer. It is easy to make 
general comments, but unless you participate in the process and sign up to 
writing the code, those comments are not going to help with solving the 
original problem. And this _is_ open-source. If you disagree, please write code 
and the community can decide for itself as to what model is actually simple to 
use for them. Curtailing efforts from other developers ju

Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-22 Thread Maru Newby
On May 22, 2014, at 1:59 PM, Mandeep Dhami  wrote:

> 
> Maru's concerns are that:
> 1. It is large
> 2. It is complex

As per the discussion in the irc meeting today, I hope it is clear now that 
eventual size and complexity are not real issue.  Rather, I am concerned at how 
we get there.  

I keep talking about 'iterating in the open', and want to make it clear what I 
mean by this.  It involves proposing a reviewable patch to openstack gerrit, 
working with reviewers to get the patch merged, and then incorporating their 
feedback into the overall design to drive the implementation of future patches.

'Iterating in the open' does not imply working outside of gerrit to create a 
monolithic codebase that needs to be manually decomposed into reviewable chunks 
at the end.  I understand that this may be an effective way to create a POC, 
but it is not an effective way to produce code that can be merged into Neutron. 
 Core reviewers have a mandate to ensure the quality of every patch, and their 
feedback is likely to have an impact on subsequent implementation.


> 
> And Armando's related concerns are:
> 3. Could dev/review cycles be better spent on refactoring
> 4. If refactored neutron was available, would a simpler option become more 
> viable
> 
> Let me address them in that order.
> 
> 1. Re: It is large
> Group policy has an ambitious goal  - provide devop teams with policy based 
> controls that are usable at scale and with automation (say a higher 
> governance layer like Congress). The fact that meeting a large challenge 
> requires more code is natural. We understand that challenge, and that is why 
> we did a prototype (as PoC that was demonstrated on the summit). And based on 
> that learning we are incrementally creating patches for building the group 
> based policy. Just because a task is large, we as neutron can not shy away 
> from building it. That will only drive people who need it out side neutron 
> (as we are seeing with the frustration that the LBaaS team had because they 
> have a requirement that is "large" as well).

Again, the amount of code is not the problem.  How code is introduced into the 
tree, and how the design is socialized (both with developers and users), _is_ 
of critical importance.  Neutron is not alone in requiring an 'iterate in the 
open' approach - it is a characteristic common to many open source projects.


> 
> 2. Re: It is complex
> Complexity depends on the context. Our goal was to make the end-user's life 
> simpler (and more automated). To achieve some of that simplicity, we required 
> a little more complexity in the implementation. We decide to make that 
> arbitrage - a little higher complexity in implementation to allow for simpler 
> usage. But we were careful and did not want to impose that complexity on 
> every use case - hence a lot of that is optional (and exercised only if the 
> use case needs it). Unfortunately the model, has to model all of it so as it 
> not add complexity later in upgrade and backward compatibility issues. We 
> choose to do architecture upfront, and then implement it incrementally.

Doing upfront architecture is fine, so long as the architecture also evolves in 
response to feedback from the review process in gerrit.  Similarly, incremental 
implementation is not enough - it needs to happen in gerrit.  And to be clear, 
the tool is not the critical factor.  When I say gerrit, I mean that each patch 
needs to receive core reviewer attention and that subsequent patches 
incorporate their feedback.


> 
> The team came up with the model currently in model based on that review and 
> evaluation all the proposals in the document that you refer. It is easy to 
> make general comments, but unless you participate in the process and sign up 
> to writing the code, those comments are not going to help with solving the 
> original problem. And this _is_ open-source. If you disagree, please write 
> code and the community can decide for itself as to what model is actually 
> simple to use for them. Curtailing efforts from other developers just because 
> their engineering trade-offs are different from what you believe your 
> use-case needs is not why we like open source. We enjoy the mode where 
> different developers try different things, we experiment, and the software 
> evolves to what the user demands. Or maybe, multiple models live in harmony. 
> Let the users decide that.

You are correct in saying that it is not my job to decide what you or other 
developers do.  It is, however, my role as a Neutron core reviewer to ensure 
that we make good use of the resources available to us to meet the project's 
commitments.  If I believe that the approach chosen to implement a given 
Neutron feature has the potential to starve other priorities of resources, then 
I have a responsibility to voice that concern and push back.  You're free to 
implement whatever you want outside of the tree, but participating in the 
Neutron community mean

Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-22 Thread Mandeep Dhami
Maru's concerns are that:
1. It is large
2. It is complex

And Armando's related concerns are:
3. Could dev/review cycles be better spent on refactoring
4. If refactored neutron was available, would a simpler option become more
viable

Let me address them in that order.

1. Re: It is large
Group policy has an ambitious goal  - provide devop teams with policy based
controls that are usable at scale and with automation (say a higher
governance layer like Congress). The fact that meeting a large challenge
requires more code is natural. We understand that challenge, and that is
why we did a prototype (as PoC that was demonstrated on the summit). And
based on that learning we are incrementally creating patches for building
the group based policy. Just because a task is large, we as neutron can not
shy away from building it. That will only drive people who need it out side
neutron (as we are seeing with the frustration that the LBaaS team had
because they have a requirement that is "large" as well).

2. Re: It is complex
Complexity depends on the context. Our goal was to make the end-user's life
simpler (and more automated). To achieve some of that simplicity, we
required a little more complexity in the implementation. We decide to make
that arbitrage - a little higher complexity in implementation to allow for
simpler usage. But we were careful and did not want to impose that
complexity on every use case - hence a lot of that is optional (and
exercised only if the use case needs it). Unfortunately the model, has to
model all of it so as it not add complexity later in upgrade and backward
compatibility issues. We choose to do architecture upfront, and then
implement it incrementally.

The team came up with the model currently in model based on that review and
evaluation all the proposals in the document that you refer. It is easy to
make general comments, but unless you participate in the process and sign
up to writing the code, those comments are not going to help with solving
the original problem. And this _is_ open-source. If you disagree, please
write code and the community can decide for itself as to what model is
actually simple to use for them. Curtailing efforts from other developers
just because their engineering trade-offs are different from what you
believe your use-case needs is not why we like open source. We enjoy the
mode where different developers try different things, we experiment, and
the software evolves to what the user demands. Or maybe, multiple models
live in harmony. Let the users decide that.

3. Re: Could dev/review cycles be better spent on refactoring
I think that most people agree that policy control is an important feature
that fundamentally improves neutron (by solving the automation and scale
issues). In a large project, multiple sub-projects can, and for a healthy
project should, work in parallel. I understand that the neutron core team
is stretched. But we still need to be able to balance the needs of today
(paying off the technical debt/existing-issues by doing refactoring) with
needs of tomorrow (new features like GP and LBaaS). GP effort was started
in Havana, and now we are trying to get this in Juno. I think that is
reasonable and a long enough cycle for a "high priority" project to be able
to get some core attention. Again I refer to LBaaS experience, as they
struggled with very similar issues.

4. Re: If refactored neutron was available, would a simpler option become
more viable
We would love to be able to answer that question. We have been trying to
understand the refactoring work to understand this (see another ML thread)
and we are open to understanding your position on that. We will call the
ad-hoc meeting that you suggested and we would like to understand the
refactoring work that might be reused for simpler policy implementation. At
the same time, we would like to build on what is available today, and when
the required refactored neutron becomes available (say Juno or K-release),
we are more than happy to adapt to it at that time. Serializing all
development around an effort that is still in inception phase is not a good
solution. We are looking forward to participating in the core refactoring
work, and based on the final spec that come up with, we would love to be
able to eventually make the policy implementation simpler.

Regards,
Mandeep




On Thu, May 22, 2014 at 11:44 AM, Armando M.  wrote:

> I would second Maru's concerns, and I would also like to add the following:
>
> We need to acknowledge the fact that there are certain architectural
> aspects of Neutron as a project that need to be addressed; at the
> summit we talked about the core refactoring, a task oriented API, etc.
> To me these items have been neglected far too much over the past and
> would need a higher priority and a lot more attention during the Juno
> cycle. Being stretched as we are I wonder if dev/review cycles
> wouldn't be better spent devoting more time to these efforts rather
> than GP

Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-22 Thread Armando M.
I would second Maru's concerns, and I would also like to add the following:

We need to acknowledge the fact that there are certain architectural
aspects of Neutron as a project that need to be addressed; at the
summit we talked about the core refactoring, a task oriented API, etc.
To me these items have been neglected far too much over the past and
would need a higher priority and a lot more attention during the Juno
cycle. Being stretched as we are I wonder if dev/review cycles
wouldn't be better spent devoting more time to these efforts rather
than GP.

That said, I appreciate that GP is important and needs to move
forward, but at the same time I am thinking that there must be a
better way for addressing it and yet relieve some of the pressure that
GP complexity imposes to the Neutron team. One aspect it was discussed
at the summit was that the type of approach shown in [2] and [3]
below, was chosen because of lack of proper integration hooks...so I
am advocating: let's talk about those first before ruling them out in
favor of a monolithic approach that seems to violate some engineering
principles, like modularity and loose decoupling of system components.

I think we didn't have enough time during the summit to iron out some
of the concerns voiced here, and it seems like the IRC meeting for
Group Policy would not be the right venue to try and establish a
common ground among the people driving this effort and the rest of the
core team.

Shall we try and have an ad-hoc meeting and an ad-hoc agenda to find a
consensus?

Many thanks,
Armando

On 22 May 2014 11:38, Maru Newby  wrote:
>
> On May 22, 2014, at 11:03 AM, Maru Newby  wrote:
>
>> At the summit session last week for group-based policy, there were many 
>> concerns voiced about the approach being undertaken.  I think those concerns 
>> deserve a wider audience, and I'm going to highlight some of them here.
>>
>> The primary concern seemed to be related to the complexity of the approach 
>> implemented for the POC.  A number of session participants voiced concern 
>> that the simpler approach documented in the original proposal [1] (described 
>> in the section titled 'Policies applied between groups') had not been 
>> implemented in addition to or instead of what appeared in the POC (described 
>> in the section titled 'Policies applied as a group API').  The simpler 
>> approach was considered by those participants as having the advantage of 
>> clarity and immediate usefulness, whereas the complex approach was deemed 
>> hard to understand and without immediate utility.
>>
>> A secondary but no less important concern is related to the impact on 
>> Neutron of the approach implemented in the POC.  The POC was developed 
>> monolithically, without oversight through gerrit, and the resulting patches 
>> were excessive in size (~4700 [2] and ~1500 [3] lines).  Such large patches 
>> are effectively impossible to review.  Even broken down into reviewable 
>> chunks, though, it does not seem realistic to target juno-1 for merging this 
>> kind of complexity.  The impact on stability could be considerable, and it 
>> is questionable whether the necessary review effort should be devoted to 
>> fast-tracking group-based policy at all, let alone an approach that is 
>> considered by many to be unnecessarily complicated.
>>
>> The blueprint for group policy [4] is currently listed as a 'High' priority. 
>>  With the above concerns in mind, does it make sense to continue 
>> prioritizing an effort that at present would seem to require considerably 
>> more resources than the benefit it appears to promise?
>>
>>
>> Maru
>>
>> 1: https://etherpad.openstack.org/p/group-based-policy
>
> Apologies, this link is to the summit session etherpad.  The link to the 
> original proposal is:
>
> https://docs.google.com/document/d/1ZbOFxAoibZbJmDWx1oOrOsDcov6Cuom5aaBIrupCD9E/edit
>
>> 2: https://review.openstack.org/93853
>> 3: https://review.openstack.org/93935
>> 4: 
>> https://blueprints.launchpad.net/neutron/+spec/group-based-policy-abstraction
>>
>> ___
>> OpenStack-dev mailing list
>> OpenStack-dev@lists.openstack.org
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-22 Thread Maru Newby

On May 22, 2014, at 11:03 AM, Maru Newby  wrote:

> At the summit session last week for group-based policy, there were many 
> concerns voiced about the approach being undertaken.  I think those concerns 
> deserve a wider audience, and I'm going to highlight some of them here.
> 
> The primary concern seemed to be related to the complexity of the approach 
> implemented for the POC.  A number of session participants voiced concern 
> that the simpler approach documented in the original proposal [1] (described 
> in the section titled 'Policies applied between groups') had not been 
> implemented in addition to or instead of what appeared in the POC (described 
> in the section titled 'Policies applied as a group API').  The simpler 
> approach was considered by those participants as having the advantage of 
> clarity and immediate usefulness, whereas the complex approach was deemed 
> hard to understand and without immediate utility.
> 
> A secondary but no less important concern is related to the impact on Neutron 
> of the approach implemented in the POC.  The POC was developed 
> monolithically, without oversight through gerrit, and the resulting patches 
> were excessive in size (~4700 [2] and ~1500 [3] lines).  Such large patches 
> are effectively impossible to review.  Even broken down into reviewable 
> chunks, though, it does not seem realistic to target juno-1 for merging this 
> kind of complexity.  The impact on stability could be considerable, and it is 
> questionable whether the necessary review effort should be devoted to 
> fast-tracking group-based policy at all, let alone an approach that is 
> considered by many to be unnecessarily complicated.  
> 
> The blueprint for group policy [4] is currently listed as a 'High' priority.  
> With the above concerns in mind, does it make sense to continue prioritizing 
> an effort that at present would seem to require considerably more resources 
> than the benefit it appears to promise?
> 
> 
> Maru
> 
> 1: https://etherpad.openstack.org/p/group-based-policy

Apologies, this link is to the summit session etherpad.  The link to the 
original proposal is:

https://docs.google.com/document/d/1ZbOFxAoibZbJmDWx1oOrOsDcov6Cuom5aaBIrupCD9E/edit

> 2: https://review.openstack.org/93853
> 3: https://review.openstack.org/93935
> 4: 
> https://blueprints.launchpad.net/neutron/+spec/group-based-policy-abstraction
> 
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


[openstack-dev] [neutron][group-based-policy] Should we revisit the priority of group-based policy?

2014-05-22 Thread Maru Newby
At the summit session last week for group-based policy, there were many 
concerns voiced about the approach being undertaken.  I think those concerns 
deserve a wider audience, and I'm going to highlight some of them here.

The primary concern seemed to be related to the complexity of the approach 
implemented for the POC.  A number of session participants voiced concern that 
the simpler approach documented in the original proposal [1] (described in the 
section titled 'Policies applied between groups') had not been implemented in 
addition to or instead of what appeared in the POC (described in the section 
titled 'Policies applied as a group API').  The simpler approach was considered 
by those participants as having the advantage of clarity and immediate 
usefulness, whereas the complex approach was deemed hard to understand and 
without immediate utility.

A secondary but no less important concern is related to the impact on Neutron 
of the approach implemented in the POC.  The POC was developed monolithically, 
without oversight through gerrit, and the resulting patches were excessive in 
size (~4700 [2] and ~1500 [3] lines).  Such large patches are effectively 
impossible to review.  Even broken down into reviewable chunks, though, it does 
not seem realistic to target juno-1 for merging this kind of complexity.  The 
impact on stability could be considerable, and it is questionable whether the 
necessary review effort should be devoted to fast-tracking group-based policy 
at all, let alone an approach that is considered by many to be unnecessarily 
complicated.  

The blueprint for group policy [4] is currently listed as a 'High' priority.  
With the above concerns in mind, does it make sense to continue prioritizing an 
effort that at present would seem to require considerably more resources than 
the benefit it appears to promise?


Maru

1: https://etherpad.openstack.org/p/group-based-policy
2: https://review.openstack.org/93853
3: https://review.openstack.org/93935
4: https://blueprints.launchpad.net/neutron/+spec/group-based-policy-abstraction

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev