[RFE] Add agent specific API for l2 agent extensions

Bug #1517903 reported by Ihar Hrachyshka
48
This bug affects 6 people
Affects Status Importance Assigned to Milestone
neutron
Fix Released
Wishlist
David Shaughnessy

Bug Description

L2 agent extensions were introduced in Liberty. Currently they don't have any way to influence agents that they run inside. For example, there is no way they can set flows for OVS bridges, create new tables, add patch ports, etc.

Multiple subprojects (SFC, BGP-VPN) expressed the need for such mechanism that would allow them all mentioned above. Without it, they are forced to patch the agent code, which does not help their adoption, and makes Neutron platform more scattered.

The feature request was covered on one of Tokyo summit sessions. The etherpad to track requests for the mechanism is at: https://etherpad.openstack.org/p/l2-agent-extensions-api-expansion

The current idea for the feature implementation is that extension manager will receive an agent specific API object that would expose some internals into extensions and provide stable API with all compatibility guarantees. The manager will proxy the API object into extensions, and then they will be able to use it as they see fit.

Current discussion goes around OVS agent only. The mechanism will allow for other agent types to opt-in the mechanism as they see fit (stub API objects with no actual interface exposed can be added to adopt the new extensions API).

Tags: rfe-approved
Revision history for this message
Ihar Hrachyshka (ihar-hrachyshka) wrote :

I believe the feature request belongs to Mitaka to unblock subprojects. I am open to send a BP for the feature.

Changed in neutron:
importance: Undecided → Wishlist
Revision history for this message
Gary Kotton (garyk) wrote :

Which subproject is blocked by this?

Gary Kotton (garyk)
summary: - Add agent specific API for l2 agent extensions
+ [RFE] Add agent specific API for l2 agent extensions
Revision history for this message
Ihar Hrachyshka (ihar-hrachyshka) wrote :

Gary, it's bgpvn and sfc for the start.

Revision history for this message
Armando Migliaccio (armando-migliaccio) wrote :

I'd like to see proposal (either in the form of devref or spec) that outlines the proposed approach, but yes. If the L2 agent is here to stay and many projects need their services, we gotta figure out a way whereby they can co-exist without hassle.

Changed in neutron:
status: New → Triaged
Revision history for this message
Armando Migliaccio (armando-migliaccio) wrote :

Based on [1], this needs a spec/devref, but we're to a point where so many initiatives rely on the agents that we can't afford to ignore this problem any further.

[1] http://eavesdrop.openstack.org/meetings/neutron_drivers/2015/neutron_drivers.2015-12-01-15.00.log.html

tags: added: rfe-approved
removed: rfe
Changed in neutron:
milestone: none → mitaka-2
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron-specs (master)

Fix proposed to branch: master
Review: https://review.openstack.org/263819

Changed in neutron:
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (master)

Fix proposed to branch: master
Review: https://review.openstack.org/267591

Changed in neutron:
assignee: Ihar Hrachyshka (ihar-hrachyshka) → David Shaughnessy (david-shaughnessy)
Changed in neutron:
assignee: David Shaughnessy (david-shaughnessy) → Ihar Hrachyshka (ihar-hrachyshka)
Changed in neutron:
assignee: Ihar Hrachyshka (ihar-hrachyshka) → David Shaughnessy (david-shaughnessy)
Changed in neutron:
milestone: mitaka-2 → mitaka-3
Changed in neutron:
assignee: David Shaughnessy (david-shaughnessy) → Ihar Hrachyshka (ihar-hrachyshka)
Changed in neutron:
assignee: Ihar Hrachyshka (ihar-hrachyshka) → Nate Johnston (nate-johnston)
Changed in neutron:
assignee: Nate Johnston (nate-johnston) → David Shaughnessy (david-shaughnessy)
Changed in neutron:
assignee: David Shaughnessy (david-shaughnessy) → Nate Johnston (nate-johnston)
Changed in neutron:
assignee: Nate Johnston (nate-johnston) → David Shaughnessy (david-shaughnessy)
Changed in neutron:
assignee: David Shaughnessy (david-shaughnessy) → Thomas Morin (tmmorin-orange)
Changed in neutron:
assignee: Thomas Morin (tmmorin-orange) → David Shaughnessy (david-shaughnessy)
Changed in neutron:
assignee: David Shaughnessy (david-shaughnessy) → Thomas Morin (tmmorin-orange)
Changed in neutron:
assignee: Thomas Morin (tmmorin-orange) → David Shaughnessy (david-shaughnessy)
Changed in neutron:
assignee: David Shaughnessy (david-shaughnessy) → Ihar Hrachyshka (ihar-hrachyshka)
Changed in neutron:
assignee: Ihar Hrachyshka (ihar-hrachyshka) → David Shaughnessy (david-shaughnessy)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron-specs (master)

Reviewed: https://review.openstack.org/263819
Committed: https://git.openstack.org/cgit/openstack/neutron-specs/commit/?id=9eb9d7d911b5c5938d0f9af4aea93cbb8399bc10
Submitter: Jenkins
Branch: master

commit 9eb9d7d911b5c5938d0f9af4aea93cbb8399bc10
Author: Ihar Hrachyshka <email address hidden>
Date: Tue Jan 5 18:35:14 2016 +0100

    Agent specific API for L2 agent extensions

    This proposal should be quick to implement and unblock extensions
    interested in injecting OpenFlow rules; while we work on a more long
    term solution that would manage feature flows in a more controlled way.

    Change-Id: I0c6937a747a7930f08a494cf237b6e50f141a49c
    Partial-Bug: #1517903

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (master)

Reviewed: https://review.openstack.org/267591
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=ea8d60f561d06ec64de26caf39cdb3c397492789
Submitter: Jenkins
Branch: master

commit ea8d60f561d06ec64de26caf39cdb3c397492789
Author: David Shaughnessy <email address hidden>
Date: Wed Jan 13 13:26:57 2016 +0000

    Added agent specific API support to L2 extensions

    - Introduces an API to allow l2-agents to access resources within
      the Open vSwitch Agent, specifically the integration and tunnel bridges.
    - adds consume_api method to the AgentCoreResourceExtension class.
    - modifies the AgentExtensionManager class to accept the AgentExtensionAPI
      class as an optional argument.
    - adds the OVSAgentExtensionAPI class.
    - modifies ovs_lib and ofswitch to include a list of uuid stamps
      to exempt from flow deletion.
    - adds the OVSBridgeCookieMixin class that manages the distribution of
      cookies and maintains the list of reserved cookies.
    - modifies OVSNeutronAgent to initialize OVSAgentExtensionAPI and pass
      into the AgentExtensionManager.

    Partial-Bug: #1517903
    Co-Authored-By: Nate Johnston <email address hidden>
    Co-Authored-By: Thomas Morin <email address hidden>
    Implements: blueprint l2-api-extensions

    Change-Id: I7cb61f30689dff2d7895d444060dedc1532a63ec

Changed in neutron:
milestone: mitaka-3 → mitaka-rc1
Revision history for this message
Ihar Hrachyshka (ihar-hrachyshka) wrote :
Changed in neutron:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.