Add support for pluggable switch drivers

Bug #1781376 reported by Shachar Snapiri
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
DragonFlow
In Progress
Undecided
Shachar Snapiri

Bug Description

Currently we only support OVS in DragonFlow.
It would be a good feature to allow support for multiple switch mechanisms using dedicated drivers.

High level steps (subject to change):
1. Add support in configuration
2. Add switch driver base interface
3. Rename all the occurrences of "ovs" to "switch"
  i. Rename occurrences in the controller
  ii. Rename all other occurrences
3. Move current OVS code to a driver:
  i. Move all the code in the controller
  ii. Move all the code in other components (OpenFlow generation)

Tags: rfe
Changed in dragonflow:
status: New → In Progress
assignee: nobody → Shachar Snapiri (snapiri)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to dragonflow (master)

Reviewed: https://review.openstack.org/581350
Committed: https://git.openstack.org/cgit/openstack/dragonflow/commit/?id=41595e74531cf8f88c229b3dbaed296a789b52ff
Submitter: Zuul
Branch: master

commit 41595e74531cf8f88c229b3dbaed296a789b52ff
Author: Shachar Snapiri <email address hidden>
Date: Tue Jul 10 15:38:02 2018 +0300

    Rename "ovs" occurances to "switch"

    Any non-ovs specific reference in the code should be renamed to "switch"
    so when we have modular switch backend, the only place where we will
    have these names is in the ovs-specific driver.

    Partial-Bug: #1781376
    Change-Id: Ie220a03694ecee5c05e30f36880d8fb7a324b506

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/581355
Committed: https://git.openstack.org/cgit/openstack/dragonflow/commit/?id=cbb9993b3d762b5e3be266383b5953ab146dc29e
Submitter: Zuul
Branch: master

commit cbb9993b3d762b5e3be266383b5953ab146dc29e
Author: Shachar Snapiri <email address hidden>
Date: Tue Jul 10 15:56:09 2018 +0300

    Move controller ovs functionality to a driver

    Move all the ovs-specific code from the df_local_controller to a driver
    that is loaded dynamically and wire it properly.

    Partial-Bug: #1781376
    Change-Id: I2e59042286154bd4f1c58e92c1513ddda97ebedb

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

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

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

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

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

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

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

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

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on dragonflow (master)

Change abandoned by Shachar Snapiri (<email address hidden>) on branch: master
Review: https://review.openstack.org/583924
Reason: There is a problem with removing the attached_mac as it is sometimes different than the MAC we see on the lport

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

Reviewed: https://review.openstack.org/583911
Committed: https://git.openstack.org/cgit/openstack/dragonflow/commit/?id=8114ddbf8a7c3082347896a09b6a8e799b5d3b3a
Submitter: Zuul
Branch: master

commit 8114ddbf8a7c3082347896a09b6a8e799b5d3b3a
Author: Shachar Snapiri <email address hidden>
Date: Thu Jul 19 13:24:17 2018 +0300

    Rename OVS INTERFACE constants to PORT INTERFACE

    These constants are generic and are relevant to any switch backend we
    will use. The current name is probably because of historical reasons.

    Change-Id: I15ce23580daba0c3b2682d9bf0233b9298b1e642
    Partial-Bug: #1781376

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/583920
Committed: https://git.openstack.org/cgit/openstack/dragonflow/commit/?id=d2fd3fbc70f894c0cf40e3fdb8ab669ab6a12809
Submitter: Zuul
Branch: master

commit d2fd3fbc70f894c0cf40e3fdb8ab669ab6a12809
Author: Shachar Snapiri <email address hidden>
Date: Thu Jul 19 13:41:04 2018 +0300

    Move port from_idl from ovsport to ovs impl_idl

    The only place that uses the code that creates a port instance from the
    ovsdb data is actually in the ovsdb/impl_idl, this is ovs specific code,
    so it should reside there and not in the code where the port is defined.

    Change-Id: Ieaec525487381000a1b0019037b8bedaa7b50f04
    Partial-Bug: #1781376

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

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

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

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

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

Reviewed: https://review.openstack.org/583878
Committed: https://git.openstack.org/cgit/openstack/dragonflow/commit/?id=f6242655581c676e97e91b059b43bbff693790a7
Submitter: Zuul
Branch: master

commit f6242655581c676e97e91b059b43bbff693790a7
Author: Shachar Snapiri <email address hidden>
Date: Thu Jul 19 10:50:00 2018 +0300

    Move metadata_service deployment out of DF code

    The deployment should be done via deployment scripts and not in the
    code (nor in plugin.sh directly, as to allow production deployment).
    Moved the deployment to a script located in the tools directory, which
    is now called from the plugin.sh, and may be called from any production
    deployment mechanism.

    Partial-Bug: #1781376
    Change-Id: I90a7e8a87764354ab9e2a8ab149f00f2eaea94f5

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/583928
Committed: https://git.openstack.org/cgit/openstack/dragonflow/commit/?id=e52ba1ee316eced9d0849e273f3dbc57af7fa2ef
Submitter: Zuul
Branch: master

commit e52ba1ee316eced9d0849e273f3dbc57af7fa2ef
Author: Shachar Snapiri <email address hidden>
Date: Thu Jul 19 13:58:28 2018 +0300

    Rename ovs.py and ovs.OvsPort to switch.py and SwitchPort

    The object now represents a generic switch port and not a specific ovs
    port. The naming should represent it.

    Change-Id: Ifa4f43eeaf50d807c46a6a034a98ba02c8dd5bfa
    Partial-Bug: #1781376

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/585771
Committed: https://git.openstack.org/cgit/openstack/dragonflow/commit/?id=ad9add8d6fc8c469393afb2c02551f52b11b9f30
Submitter: Zuul
Branch: master

commit ad9add8d6fc8c469393afb2c02551f52b11b9f30
Author: Shachar Snapiri <email address hidden>
Date: Wed Jul 25 17:50:48 2018 +0300

    Rename ofport in switch_port to port_num

    As we changed the port from ovs port to a generic port, the ofport
    notation is not relevant any more.
    We should use the port_num notation that is more generic.

    Change-Id: I64574b47719aff8666341fa1cbd7a8fb3e390fc3
    Partial-Bug: #1781376

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/585790
Committed: https://git.openstack.org/cgit/openstack/dragonflow/commit/?id=53ad85ac35d8b24089cee292848c0f28bb2582ab
Submitter: Zuul
Branch: master

commit 53ad85ac35d8b24089cee292848c0f28bb2582ab
Author: Shachar Snapiri <email address hidden>
Date: Wed Jul 25 18:37:12 2018 +0300

    Rename ovs_port throughout the code

    As the notation of ovs_port is not relevant any more, rename it
    throughout the code to switch_port which is the new class.

    Change-Id: I1eb1ff4d10265c7a64f38d158ddb6c7186eba06e
    Partial-Bug: #1781376

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

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

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

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

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

Reviewed: https://review.openstack.org/589394
Committed: https://git.openstack.org/cgit/openstack/dragonflow/commit/?id=945b1e368c651ffa3655f42df724d9f13a7b6b96
Submitter: Zuul
Branch: master

commit 945b1e368c651ffa3655f42df724d9f13a7b6b96
Author: Shachar Snapiri <email address hidden>
Date: Tue Aug 7 11:07:38 2018 +0300

    Re-add missing iptables rule for metadata service

    In patch [1] there were some lines that were missed out. Specifically
    an iptables rule and a cleanup line.
    This patch re-adds the rule and cleanup code.

    [1] https://review.openstack.org/#/c/583878/

    Change-Id: I32045f60e205d59382ef3d98f845c4c1c8bea37f
    Partial-Bug: #1781376

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/588978
Committed: https://git.openstack.org/cgit/openstack/dragonflow/commit/?id=7f973380b639d6222677be8ba7d4c02b9cc2aab5
Submitter: Zuul
Branch: master

commit 7f973380b639d6222677be8ba7d4c02b9cc2aab5
Author: Shachar Snapiri <email address hidden>
Date: Sun Aug 5 17:49:12 2018 +0300

    Separate vswitch_api and ryu from the main logic

    The vswitch_api and ryu are specific to ovs and should be removed from
    the main code logic.
    They are now encapsulated within the df_ovs_driver.
    Currently the vswitch is still referenced directly from the driver in
    all the tests. This behavior should be removed in a later patch.

    Change-Id: Id919faaebece90c1410226d38f28c52af7693c08
    Partial-Bug: #1781376

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

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