[openstack-dev] [Neutron] Common Base class for agents
Andreas Scheuring
scheuran at linux.vnet.ibm.com
Wed Aug 5 07:42:02 UTC 2015
Sukhdev,
last week I spent some time to figure out the current state of modular
l2 agent design and discussion. I got the impression it's not in a good
shape! So I personally don't think that it makes any sense to start with
a modular l2 agent prototype and in the worst case throw it all away, as
we missed a single detail. I would prefer to get folks with knowledge
cross all l2 agents together and work on a design first, that everyone
can agree upon.
So my initial mail basically was to start a effort for easily sharing
code. Maybe this will end up in a single agent having multiple drivers
but that's not the primary goal (which is sharing code).
I'm more with Carl, to start a code sharing effort and the macvtap agent
effort in parallel, independent from each other.
I must admit I have less insights into ovsagent. But I know that it
diverged a lot from the other agents. Sean Collins is currently
evaluating an approach to bring linuxbrige closer to ovs [1]. Maybe
that's the way to got. Do internal refactorings to bring things close to
each other and then see what might be possible to get a common agent or
at least common code.
But any other suggestions are highly welcome!
[1] https://review.openstack.org/#/c/208666/
Andreas
(IRC: scheuran)
On Di, 2015-08-04 at 22:42 -0700, Sukhdev Kapur wrote:
> We discussed this in ML2 sub-team meeting last week and felt the best
> approach is to implement this agent in a separate repo.
>
>
> There is already an on-going effort/plan for modular L2 agent. This
> agent would be a perfect candidate to take on that effort and
> implement it for macvtap agent. Once done, this could be moved over
> under neutron tent and other agents could be moved over to utilize
> this framework.
>
>
> Either of option 1 or 2 could be utilized to implement this agent.
> Keeping it in a seperate repo keeps the it from impacting any other
> agents. Once all ready and working, others could be converted over.
> You get the best of both words - i.e. quick implementation of this
> agent and a framework for others to use - and plenty of time to bake
> the framework.
>
>
> thoughts?
>
>
> Sukhdev
>
>
>
> On Mon, Aug 3, 2015 at 3:53 PM, Carl Baldwin <carl at ecbaldwin.net>
> wrote:
> I see this as two tasks: 1) A refactoring to share common
> code and 2)
> the addition of another agent following the pattern of the
> others.
> I'd prefer that the two tasks not be mixed in the same review
> because
> it makes it more difficult to review as I think Kevin eluded
> to. For
> me, either could be done first. I'm sure some reviewers would
> prefer
> that #1 be done first to avoid the proliferation of duplicated
> code.
> However, IMO, it is not necessary to be so strict. It can
> take some
> time to review common code to get it right. I'm afraid that
> holding
> up #2 until merging #1 will either motivate us to merge #1 too
> hastily
> and do a poor job or hold up #2 longer than it should be.
>
> If this were me, I would post both as independent reviews
> knowing that
> when one of the two merges, the other will have to be rebased
> to take
> the other in to account. Sometimes, having the refactor in
> flight can
> help to allay fears about code proliferation. Actually given
> Kevin's
> mention of the modular agent stuff, maybe it isn't worth
> putting much
> effort in to the refactor patch at all.
>
> My $0.02.
>
> Carl
>
> On Mon, Aug 3, 2015 at 9:46 AM, Andreas Scheuring
> <scheuran at linux.vnet.ibm.com> wrote:
> > Hi,
> > I'm planning to add a new ml2 driver and agent to neutron
> supporting
> > macvtap attachments [1]. Kyle already decided, that this
> code should
> > land in the neutron tree [2]. The normal approach till now
> was to copy
> > an existing agent code and modify accordingly, which lead to
> a lot of
> > duplicated code.
> >
> > So my question is, how to proceed with macvtap agent? I
> basically see
> > the the 2 options:
> >
> > 1) Do it like in the past, duplicate the code that is needed
> for macvtap
> > agent (main loop, mechanism for detecting
> new/changed/deleted devices)
> > and just go for it.
> >
> > 2) Extract a new superclass that holds some of the common
> code. This
> > would work for linuxridge agent and sriovnic agent - they
> could inherit
> > from the new superclass and get rid of some code but they
> still would
> > exist on their own. OVS agent diverged too far to get it
> done easily.
> > (More details below)
> >
> >
> > My personal opinion: If I had the power to decide, I would
> go along with
> > option #1, to get started quickly to still land my code for
> liberty. But
> > I would be willing to implement #2 as well, if folks think
> this is a
> > good idea.
> >
> >
> >
> > Any feedback is welcome!
> >
> >
> > The ml2 driver for macvtap will stay separate.
> >
> >
> >
> ---------------------------------------------------------------
> >
> >
> > More details to #2
> > A possible plan could be
> > Liberty: Base class Stage 1* + macvtap agent using it
> > Mitaka: move linuxbridge and sriovnic agent to use new base
> class
> > Base class Stage 2**
> > N: Step to a single agent having multiple interface drivers
> (lb,
> > macvtap, sriov)?
> >
> >
> > * Stage 1: with methods that are absolutely equal along the
> 3 agents or
> > only require slight modifications
> > e.g. _setup_rpc, _report_state, _device_info_has_changes,
> > _process_network_devices
> >
> > ** Stage 2: methods that are still similar, but have
> diverged over time
> > which is not just copy and paste but require some further
> thinking.
> > e.g. treat_devices_added_updated, scan_devices, daemon_loop
> >
> >
> > Options I laid aside
> > 3) I also discussed the modular l2 agent idea within the ml2
> subgroup
> > but the concept is in a bad shape and needs larger
> discussion. So no
> > chance to start the macvtap work together with the modular
> agent work.
> >
> > 4) Integrating it into the linuxbridge agent. A
> configuration option
> > would distinguish if the agent runs in linuxbridge (default)
> or macvtap
> > mode.
> >
> >
> > [1] https://bugs.launchpad.net/neutron/+bug/1480979
> > [2] https://review.openstack.org/#/c/195907/
> >
> >
> > --
> > Andreas
> > (IRC: scheuran)
> >
> >
> >
> >
> __________________________________________________________________________
> > OpenStack Development Mailing List (not for usage questions)
> > Unsubscribe:
> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> >
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe:
> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
--
Andreas
(IRC: scheuran)
More information about the OpenStack-dev
mailing list