neutron/doc/source/contributor/internals/segments.rst
Miguel Lavalle 1994d180d0 Add segments service plug-in devref
This commit adds a document to devref that explains the implementation
of the segments plug-in

Change-Id: I80928eac7a6cb051c3d6532d83c9d9ecd328cd18
2017-07-28 09:54:46 -07:00

2.3 KiB

Segments extension

Neutron has an extension that allows CRUD operations on the /segments resource in the API, that corresponds to the NetworkSegment entity in the DB layer. The extension is implemented as a service plug-in.

Note

The segments service plug-in is not configured by default. To configure it, add segments to the service_plugins parameter in neutron.conf

Core plug-ins can coordinate with the segments service plug-in by subscribing callbacks to events associated to the SEGMENT resource. Currently, the segments plug-in notifies subscribers of the following events:

  • PRECOMMIT_CREATE
  • AFTER_CREATE
  • BEFORE_DELETE
  • PRECOMMIT_DELETE
  • AFTER_DELETE

As of this writing, ML2 and OVN register callbacks to receive events from the segments service plug-in. The ML2 plug-in defines the callback _handle_segment_change to process all the relevant segments events.

Segments extension relevant modules

  • neutron/extensions/segment.py defines the extension
  • neutron/db/models/segment.py defines the DB models for segments and for the segment host mapping, that is used in the implementation of routed networks.
  • neutron/db/segments_db.py has functions to add, retrieve and delete segments from the DB.
  • neutron/services/segments/db.py defines a mixin class with the methods that perform API CRUD operations for the segments plug-in. It also has a set of functions to create and maintain the mapping of segments to hosts, which is necessary in the implementation of routed networks.
  • neutron/services/segments/plugin.py defines the segments service plug-in.