Fix invalid 'yang' code-block definitions
[docs.git] / docs / developer-guide / openflow-plugin-project-developer-guide.rst
index 9b2b136a2d9cc1ad8cfc4bddf61715d35c5a3ec2..257cc59bf7fbef62d9d778b231ccb35dae933bf3 100644 (file)
@@ -222,7 +222,7 @@ describes the YANG files used to model each module.
 
 -  and target implementation is assigned (``...OpenflowPluginProvider``)
 
-.. code:: yang
+.. code::
 
     module openflow-provider {
        yang-version 1;
@@ -259,7 +259,7 @@ describes the YANG files used to model each module.
       provided by openflowjava, one plugin instance will orchestrate
       multiple openflowjava modules)
 
-.. code:: yang
+.. code::
 
     module openflow-provider-impl {
        yang-version 1;
@@ -375,10 +375,6 @@ In order to involve suitable code generators, this is needed in pom:
 
 -  sal CodeGeneratorImpl (target/generated-sources/sal)
 
--  documentation generator (target/site/models):
-   `openflow-provider.html <https://jenkins.opendaylight.org/openflowplugin/job/openflowplugin-merge/ws/openflowplugin/target/site/models/openflow-provider.html>`__,
-   `openflow-provider-impl.html <https://jenkins.opendaylight.org/openflowplugin/job/openflowplugin-merge/ws/openflowplugin/target/site/models/openflow-provider-impl.html>`__
-
 Altering generated files
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -809,33 +805,122 @@ SalFlatBatchService
 FRS uses service with implemented barrier waiting logic between
 dependent objects
 
-SalFlatBatchService for FRS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Service: SalFlatBatchService
+----------------------------
+
+Basics
+~~~~~~
 
 SalFlatBatchService was created along forwardingrules-sync application
-as the service that should application used by default. This service
-uses only one input with bag of flow/group/meter objects and their
-common add/update/remove action. So you practically send only one input
-(of specific bags) to this service.
+as the service that should application used by default. This service uses
+only one input with bag of flow/group/meter objects and their common
+add/update/remove action. So you practically send only one input (of specific
+bags) to this service.
+
+-  interface: *org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.SalFlatBatchService*
+
+-  implementation: *org.opendaylight.openflowplugin.impl.services.SalFlatBatchServiceImpl*
+
+-  method: *processFlatBatch(input)*
+
+-  input: *org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.ProcessFlatBatchInput*
+
+Usage benefits
+^^^^^^^^^^^^^^
+
+-  possibility to use only one input bag with particular failure analysis preserved
+
+-  automatic barrier decision (chain+wait)
+
+-  less RPC routing in cluster environment (since one call encapsulates all others)
+
+ProcessFlatBatchInput
+~~~~~~~~~~~~~~~~~~~~~
+
+Input for SalFlatBatchService (ProcessFlatBatchInput object) consists of:
+
+-  node - NodeRef
+
+-  batch steps - List<Batch> - defined action + bag of objects + order for failures analysis
+
+   -  BatchChoice - yang-modeled action choice (e.g. FlatBatchAddFlowCase) containing batch bag of objects (e.g. flows to be added)
+
+   -  BatchOrder - (integer) order of batch step (should be incremented by single action)
+
+-  exitOnFirstError - boolean flag
 
 Workflow
-^^^^^^^^
+~~~~~~~~
+#. prepare **list of steps** based on input
 
--  prepare plan of actions
+#. **mark barriers** in steps where needed
 
-   -  mark actions where the barrier is needed before continue
+#. prepare particular **F/G/M-batch** service calls from **Flat-batch** steps
 
--  run appropriate service calls
+   -  F/G/M-batch services encapsulate bulk of single service calls
+
+   -  they actually chain barrier after processing all single calls if actual step is marked as barrier-needed
+
+#. **chain** futures and **start** executing
+
+   - start all actions that can be run simultaneously (chain all on one starting point)
+
+   -  in case there is a step marked as barrier-needed
+
+      -  wait for all fired jobs up to one with barrier
+
+      - merge rpc results (status, errors, batch failures) into single one
+
+      - the latest job with barrier is new starting point for chaining
+
+Services encapsulation
+^^^^^^^^^^^^^^^^^^^^^^
+
+-  SalFlatBatchService
+
+   -  SalFlowBatchService
+
+      -  SalFlowService
+
+   -  SalGroupBatchService
+
+      -  SalGroupService
+
+   -  SalMeterBatchService
+
+      -  SalMeterService
+
+Barrier decision
+^^^^^^^^^^^^^^^^
+
+-  decide on actual step and all previous steps since the latest barrier
+
+-  if condition in table below is satisfied the latest step before actual is marked as barrier-needed
+
++---------------------------+------------------------------------------------------------------+
+| actual step               | previous steps contain                                           |
++===========================+==================================================================+
+| FLOW_ADD *or* FLOW_UPDATE | GROUP_ADD *or* METER_ADD                                         |
++---------------------------+------------------------------------------------------------------+
+| GROUP_ADD                 | GROUP_ADD *or* GROUP_UPDATE                                      |
++---------------------------+------------------------------------------------------------------+
+| GROUP_REMOVE              | FLOW_UPDATE *or* FLOW_REMOVE *or* GROUP_UPDATE *or* GROUP_REMOVE |
++---------------------------+------------------------------------------------------------------+
+| METER_REMOVE              | FLOW_UPDATE *or* FLOW_REMOVE                                     |
++---------------------------+------------------------------------------------------------------+
+
+Error handling
+^^^^^^^^^^^^^^
 
-   -  start all actions that can be run simultaneously
+There is flag in ProcessFlatBatchInput to stop process on the first error.
 
-   -  if there is barrier-needed mark, wait for all fired jobs and only
-      then continue with the next action
+-  *true* - if partial step is not successful stop whole processing
 
-error handling:
+-  *false* (default) - try to process all steps regardless partial results
 
--  there is flag to stop process on the first error (default set to
-   false)
+If error occurs in any of partial steps upper FlatBatchService call will return as unsuccessful in both cases.
+However every partial error is attached to general flat batch result along with BatchFailure (contains BatchOrder
+and BatchItemIdChoice to identify failed step).
 
 Cluster singleton approach in plugin
 ------------------------------------
@@ -938,401 +1023,161 @@ txEntity from EOS.
 Yang models and API
 -------------------
 
-+--------------------------------------------------------+-------------------+
-| Model                                                  | DOC               |
-+========================================================+===================+
-| ***Openflow basic types***                             |                   |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-table-types.yang <https://git.opendaylig | `YangDOC <https:/ |
-| ht.org/gerrit/gitweb?p=openflowplugin.git;f=model/mode | /jenkins.opendayl |
-| l-flow-base/src/main/yang/opendaylight-table-types.yan | ight.org/releng/v |
-| g;a=blob;hb=refs/heads/stable/boron>`__                | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-base/t |
-|                                                        | arget/site/models |
-|                                                        | /opendaylight-tab |
-|                                                        | le-types.html>`__ |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-action-types.yang <https://git.opendayli | `YangDOC <https:/ |
-| ght.org/gerrit/gitweb?p=openflowplugin.git;f=model/mod | /jenkins.opendayl |
-| el-flow-base/src/main/yang/opendaylight-action-types.y | ight.org/releng/v |
-| ang;a=blob;hb=refs/heads/stable/boron>`__              | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-base/t |
-|                                                        | arget/site/models |
-|                                                        | /opendaylight-act |
-|                                                        | ion-types.html>`_ |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-flow-types.yang <https://git.opendayligh | `YangDOC <https:/ |
-| t.org/gerrit/gitweb?p=openflowplugin.git;f=model/model | /jenkins.opendayl |
-| -flow-base/src/main/yang/opendaylight-flow-types.yang; | ight.org/releng/v |
-| a=blob;hb=refs/heads/stable/boron>`__                  | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-base/t |
-|                                                        | arget/site/models |
-|                                                        | /opendaylight-flo |
-|                                                        | w-types.html>`__  |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-meter-types.yang <https://git.opendaylig | `YangDOC <https:/ |
-| ht.org/gerrit/gitweb?p=openflowplugin.git;f=model/mode | /jenkins.opendayl |
-| l-flow-base/src/main/yang/opendaylight-meter-types.yan | ight.org/releng/v |
-| g;a=blob;hb=refs/heads/stable/boron>`__                | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-base/t |
-|                                                        | arget/site/models |
-|                                                        | /opendaylight-met |
-|                                                        | er-types.html>`__ |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-group-types.yang <https://git.opendaylig | `YangDOC <https:/ |
-| ht.org/gerrit/gitweb?p=openflowplugin.git;f=model/mode | /jenkins.opendayl |
-| l-flow-base/src/main/yang/opendaylight-group-types.yan | ight.org/releng/v |
-| g;a=blob;hb=refs/heads/stable/boron>`__                | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-base/t |
-|                                                        | arget/site/models |
-|                                                        | /opendaylight-gro |
-|                                                        | up-types.html>`__ |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-match-types.yang <https://git.opendaylig | `YangDOC <https:/ |
-| ht.org/gerrit/gitweb?p=openflowplugin.git;f=model/mode | /jenkins.opendayl |
-| l-flow-base/src/main/yang/opendaylight-match-types.yan | ight.org/releng/v |
-| g;a=blob;hb=refs/heads/stable/boron>`__                | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-base/t |
-|                                                        | arget/site/models |
-|                                                        | /opendaylight-mat |
-|                                                        | ch-types.html>`__ |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-port-types.yang <https://git.opendayligh | `YangDOC <https:/ |
-| t.org/gerrit/gitweb?p=openflowplugin.git;f=model/model | /jenkins.opendayl |
-| -flow-base/src/main/yang/opendaylight-port-types.yang; | ight.org/releng/v |
-| a=blob;hb=refs/heads/stable/boron>`__                  | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-base/t |
-|                                                        | arget/site/models |
-|                                                        | /opendaylight-por |
-|                                                        | t-types.html>`__  |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-queue-types.yang <https://git.opendaylig | `YangDOC <https:/ |
-| ht.org/gerrit/gitweb?p=openflowplugin.git;f=model/mode | /jenkins.opendayl |
-| l-flow-base/src/main/yang/opendaylight-queue-types.yan | ight.org/releng/v |
-| g;a=blob;hb=refs/heads/stable/boron>`__                | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-base/t |
-|                                                        | arget/site/models |
-|                                                        | /opendaylight-que |
-|                                                        | ue-types.html>`__ |
-+--------------------------------------------------------+-------------------+
-| ***Openflow services***                                |                   |
-+--------------------------------------------------------+-------------------+
-| `sal-table.yang <https://git.opendaylight.org/gerrit/g | `YangDOC <https:/ |
-| itweb?p=openflowplugin.git;f=model/model-flow-service/ | /jenkins.opendayl |
-| src/main/yang/sal-table.yang;a=blob;hb=refs/heads/stab | ight.org/releng/v |
-| le/boron>`__                                           | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/sal-table.htm |
-|                                                        | l>`__             |
-+--------------------------------------------------------+-------------------+
-| `sal-group.yang <https://git.opendaylight.org/gerrit/g | `YangDOC <https:/ |
-| itweb?p=openflowplugin.git;f=model/model-flow-service/ | /jenkins.opendayl |
-| src/main/yang/sal-group.yang;a=blob;hb=refs/heads/stab | ight.org/releng/v |
-| le/boron>`__                                           | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/sal-group.htm |
-|                                                        | l>`__             |
-+--------------------------------------------------------+-------------------+
-| `sal-queue.yang <https://git.opendaylight.org/gerrit/g | `YangDOC <https:/ |
-| itweb?p=openflowplugin.git;f=model/model-flow-service/ | /jenkins.opendayl |
-| src/main/yang/sal-queue.yang;a=blob;hb=refs/heads/stab | ight.org/releng/v |
-| le/boron>`__                                           | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/sal-queue.htm |
-|                                                        | l>`__             |
-+--------------------------------------------------------+-------------------+
-| `flow-errors.yang <https://git.opendaylight.org/gerrit | `YangDOC <https:/ |
-| /gitweb?p=openflowplugin.git;f=model/model-flow-servic | /jenkins.opendayl |
-| e/src/main/yang/flow-errors.yang;a=blob;hb=refs/heads/ | ight.org/releng/v |
-| stable/boron>`__                                       | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/flow-errors.h |
-|                                                        | tml>`__           |
-+--------------------------------------------------------+-------------------+
-| `flow-capable-transaction.yang <https://git.opendaylig | `YangDOC <https:/ |
-| ht.org/gerrit/gitweb?p=openflowplugin.git;f=model/mode | /jenkins.opendayl |
-| l-flow-service/src/main/yang/flow-capable-transaction. | ight.org/releng/v |
-| yang;a=blob;hb=refs/heads/stable/boron>`__             | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/flow-capable- |
-|                                                        | transaction.htm   |
-|                                                        | l>`__             |
-+--------------------------------------------------------+-------------------+
-| `sal-flow.yang <https://git.opendaylight.org/gerrit/gi | `YangDOC <https:/ |
-| tweb?p=openflowplugin.git;f=model/model-flow-service/s | /jenkins.opendayl |
-| rc/main/yang/sal-flow.yang;a=blob;hb=refs/heads/stable | ight.org/releng/v |
-| /boron>`__                                             | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/sal-flow.htm  |
-|                                                        | l>`__             |
-+--------------------------------------------------------+-------------------+
-| `sal-meter.yang <https://git.opendaylight.org/gerrit/g | `YangDOC <https:/ |
-| itweb?p=openflowplugin.git;f=model/model-flow-service/ | /jenkins.opendayl |
-| src/main/yang/sal-meter.yang;a=blob;hb=refs/heads/stab | ight.org/releng/v |
-| le/boron>`__                                           | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/sal-meter.htm |
-|                                                        | l>`__             |
-+--------------------------------------------------------+-------------------+
-| `flow-topology-discovery.yang <https://git.opendayligh | `YangDOC <https:/ |
-| t.org/gerrit/gitweb?p=openflowplugin.git;f=model/model | /jenkins.opendayl |
-| -flow-service/src/main/yang/flow-topology-discovery.ya | ight.org/releng/v |
-| ng;a=blob;hb=refs/heads/stable/boron>`__               | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/flow-topology |
-|                                                        | -discovery.htm    |
-|                                                        | l>`__             |
-+--------------------------------------------------------+-------------------+
-| `node-errors.yang <https://git.opendaylight.org/gerrit | `YangDOC <https:/ |
-| /gitweb?p=openflowplugin.git;f=model/model-flow-servic | /jenkins.opendayl |
-| e/src/main/yang/node-errors.yang;a=blob;hb=refs/heads/ | ight.org/releng/v |
-| stable/boron>`__                                       | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/node-errors.h |
-|                                                        | tml>`__           |
-+--------------------------------------------------------+-------------------+
-| `node-config.yang <https://git.opendaylight.org/gerrit | `YangDOC <https:/ |
-| /gitweb?p=openflowplugin.git;f=model/model-flow-servic | /jenkins.opendayl |
-| e/src/main/yang/node-config.yang;a=blob;hb=refs/heads/ | ight.org/releng/v |
-| stable/boron>`__                                       | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/node-config.h |
-|                                                        | tml>`__           |
-+--------------------------------------------------------+-------------------+
-| `sal-echo.yang <https://git.opendaylight.org/gerrit/gi | `YangDOC <https:/ |
-| tweb?p=openflowplugin.git;f=model/model-flow-service/s | /jenkins.opendayl |
-| rc/main/yang/sal-echo.yang;a=blob;hb=refs/heads/stable | ight.org/releng/v |
-| /boron>`__                                             | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/sal-echo.htm  |
-|                                                        | l>`__             |
-+--------------------------------------------------------+-------------------+
-| `sal-port.yang <https://git.opendaylight.org/gerrit/gi | `YangDOC <https:/ |
-| tweb?p=openflowplugin.git;f=model/model-flow-service/s | /jenkins.opendayl |
-| rc/main/yang/sal-port.yang;a=blob;hb=refs/heads/stable | ight.org/releng/v |
-| /boron>`__                                             | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/sal-port.htm  |
-|                                                        | l>`__             |
-+--------------------------------------------------------+-------------------+
-| `packet-processing.yang <https://git.opendaylight.org/ | `YangDOC <https:/ |
-| gerrit/gitweb?p=openflowplugin.git;f=model/model-flow- | /jenkins.opendayl |
-| service/src/main/yang/packet-processing.yang;a=blob;hb | ight.org/releng/v |
-| =refs/heads/stable/boron>`__                           | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/packet-proces |
-|                                                        | sing.html>`__     |
-+--------------------------------------------------------+-------------------+
-| `flow-node-inventory.yang <https://git.opendaylight.or | `YangDOC <https:/ |
-| g/gerrit/gitweb?p=openflowplugin.git;f=model/model-flo | /jenkins.opendayl |
-| w-service/src/main/yang/flow-node-inventory.yang;a=blo | ight.org/releng/v |
-| b;hb=refs/heads/stable/boron>`__                       | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-servic |
-|                                                        | e/target/site/mod |
-|                                                        | els/flow-node-inv |
-|                                                        | entory.html>`__   |
-+--------------------------------------------------------+-------------------+
-| ***Openflow statistics***                              |                   |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-queue-statistics.yang <https://git.opend | `YangDOC <https:/ |
-| aylight.org/gerrit/gitweb?p=openflowplugin.git;f=model | /jenkins.opendayl |
-| /model-flow-statistics/src/main/yang/opendaylight-queu | ight.org/releng/v |
-| e-statistics.yang;a=blob;hb=refs/heads/stable/boron>`_ | iew/openflowplugi |
-| _                                                      | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-statis |
-|                                                        | tics/target/site/ |
-|                                                        | models/opendaylig |
-|                                                        | ht-queue-statisti |
-|                                                        | cs.html>`__       |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-flow-table-statistics.yang <https://git. | `YangDOC <https:/ |
-| opendaylight.org/gerrit/gitweb?p=openflowplugin.git;f= | /jenkins.opendayl |
-| model/model-flow-statistics/src/main/yang/opendaylight | ight.org/releng/v |
-| -flow-table-statistics.yang;a=blob;hb=refs/heads/stabl | iew/openflowplugi |
-| e/boron>`__                                            | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-statis |
-|                                                        | tics/target/site/ |
-|                                                        | models/opendaylig |
-|                                                        | ht-flow-table-sta |
-|                                                        | tistics.html>`__  |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-port-statistics.yang <https://git.openda | `YangDOC <https:/ |
-| ylight.org/gerrit/gitweb?p=openflowplugin.git;f=model/ | /jenkins.opendayl |
-| model-flow-statistics/src/main/yang/opendaylight-port- | ight.org/releng/v |
-| statistics.yang;a=blob;hb=refs/heads/stable/boron>`__  | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-statis |
-|                                                        | tics/target/site/ |
-|                                                        | models/opendaylig |
-|                                                        | ht-port-statistic |
-|                                                        | s.html>`__        |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-statistics-types.yang <https://git.opend | `YangDOC <https:/ |
-| aylight.org/gerrit/gitweb?p=openflowplugin.git;f=model | /jenkins.opendayl |
-| /model-flow-statistics/src/main/yang/opendaylight-stat | ight.org/releng/v |
-| istics-types.yang;a=blob;hb=refs/heads/stable/boron>`_ | iew/openflowplugi |
-| _                                                      | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-statis |
-|                                                        | tics/target/site/ |
-|                                                        | models/opendaylig |
-|                                                        | ht-statistics-typ |
-|                                                        | es.html>`__       |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-group-statistics.yang <https://git.opend | `YangDOC <https:/ |
-| aylight.org/gerrit/gitweb?p=openflowplugin.git;f=model | /jenkins.opendayl |
-| /model-flow-statistics/src/main/yang/opendaylight-grou | ight.org/releng/v |
-| p-statistics.yang;a=blob;hb=refs/heads/stable/boron>`_ | iew/openflowplugi |
-| _                                                      | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-statis |
-|                                                        | tics/target/site/ |
-|                                                        | models/opendaylig |
-|                                                        | ht-group-statisti |
-|                                                        | cs.html>`__       |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-flow-statistics.yang <https://git.openda | `YangDOC <https:/ |
-| ylight.org/gerrit/gitweb?p=openflowplugin.git;f=model/ | /jenkins.opendayl |
-| model-flow-statistics/src/main/yang/opendaylight-flow- | ight.org/releng/v |
-| statistics.yang;a=blob;hb=refs/heads/stable/boron>`__  | iew/openflowplugi |
-|                                                        | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-statis |
-|                                                        | tics/target/site/ |
-|                                                        | models/opendaylig |
-|                                                        | ht-flow-statistic |
-|                                                        | s.html>`__        |
-+--------------------------------------------------------+-------------------+
-| `opendaylight-meter-statistics.yang <https://git.opend | `YangDOC <https:/ |
-| aylight.org/gerrit/gitweb?p=openflowplugin.git;f=model | /jenkins.opendayl |
-| /model-flow-statistics/src/main/yang/opendaylight-mete | ight.org/releng/v |
-| r-statistics.yang;a=blob;hb=refs/heads/stable/boron>`_ | iew/openflowplugi |
-| _                                                      | n/job/openflowplu |
-|                                                        | gin-merge-boron/l |
-|                                                        | astSuccessfulBuil |
-|                                                        | d/artifact/model/ |
-|                                                        | model-flow-statis |
-|                                                        | tics/target/site/ |
-|                                                        | models/opendaylig |
-|                                                        | ht-meter-statisti |
-|                                                        | cs.html>`__       |
-+--------------------------------------------------------+-------------------+
++--------------------------------------------------------+
+| Model                                                  |
++========================================================+
+| ***Openflow basic types***                             |
++--------------------------------------------------------+
+| `opendaylight-table-types.yang <https://git.opendaylig |
+| ht.org/gerrit/gitweb?p=openflowplugin.git;f=model/mode |
+| l-flow-base/src/main/yang/opendaylight-table-types.yan |
+| g;a=blob;hb=refs/heads/stable/boron>`__                |
++--------------------------------------------------------+
+| `opendaylight-action-types.yang <https://git.opendayli |
+| ght.org/gerrit/gitweb?p=openflowplugin.git;f=model/mod |
+| el-flow-base/src/main/yang/opendaylight-action-types.y |
+| ang;a=blob;hb=refs/heads/stable/boron>`__              |
++--------------------------------------------------------+
+| `opendaylight-flow-types.yang <https://git.opendayligh |
+| t.org/gerrit/gitweb?p=openflowplugin.git;f=model/model |
+| -flow-base/src/main/yang/opendaylight-flow-types.yang; |
+| a=blob;hb=refs/heads/stable/boron>`__                  |
++--------------------------------------------------------+
+| `opendaylight-meter-types.yang <https://git.opendaylig |
+| ht.org/gerrit/gitweb?p=openflowplugin.git;f=model/mode |
+| l-flow-base/src/main/yang/opendaylight-meter-types.yan |
+| g;a=blob;hb=refs/heads/stable/boron>`__                |
++--------------------------------------------------------+
+| `opendaylight-group-types.yang <https://git.opendaylig |
+| ht.org/gerrit/gitweb?p=openflowplugin.git;f=model/mode |
+| l-flow-base/src/main/yang/opendaylight-group-types.yan |
+| g;a=blob;hb=refs/heads/stable/boron>`__                |
++--------------------------------------------------------+
+| `opendaylight-match-types.yang <https://git.opendaylig |
+| ht.org/gerrit/gitweb?p=openflowplugin.git;f=model/mode |
+| l-flow-base/src/main/yang/opendaylight-match-types.yan |
+| g;a=blob;hb=refs/heads/stable/boron>`__                |
++--------------------------------------------------------+
+| `opendaylight-port-types.yang <https://git.opendayligh |
+| t.org/gerrit/gitweb?p=openflowplugin.git;f=model/model |
+| -flow-base/src/main/yang/opendaylight-port-types.yang; |
+| a=blob;hb=refs/heads/stable/boron>`__                  |
++--------------------------------------------------------+
+| `opendaylight-queue-types.yang <https://git.opendaylig |
+| ht.org/gerrit/gitweb?p=openflowplugin.git;f=model/mode |
+| l-flow-base/src/main/yang/opendaylight-queue-types.yan |
+| g;a=blob;hb=refs/heads/stable/boron>`__                |
++--------------------------------------------------------+
+| ***Openflow services***                                |
++--------------------------------------------------------+
+| `sal-table.yang <https://git.opendaylight.org/gerrit/g |
+| itweb?p=openflowplugin.git;f=model/model-flow-service/ |
+| src/main/yang/sal-table.yang;a=blob;hb=refs/heads/stab |
+| le/boron>`__                                           |
++--------------------------------------------------------+
+| `sal-group.yang <https://git.opendaylight.org/gerrit/g |
+| itweb?p=openflowplugin.git;f=model/model-flow-service/ |
+| src/main/yang/sal-group.yang;a=blob;hb=refs/heads/stab |
+| le/boron>`__                                           |
++--------------------------------------------------------+
+| `sal-queue.yang <https://git.opendaylight.org/gerrit/g |
+| itweb?p=openflowplugin.git;f=model/model-flow-service/ |
+| src/main/yang/sal-queue.yang;a=blob;hb=refs/heads/stab |
+| le/boron>`__                                           |
++--------------------------------------------------------+
+| `flow-errors.yang <https://git.opendaylight.org/gerrit |
+| /gitweb?p=openflowplugin.git;f=model/model-flow-servic |
+| e/src/main/yang/flow-errors.yang;a=blob;hb=refs/heads/ |
+| stable/boron>`__                                       |
++--------------------------------------------------------+
+| `flow-capable-transaction.yang <https://git.opendaylig |
+| ht.org/gerrit/gitweb?p=openflowplugin.git;f=model/mode |
+| l-flow-service/src/main/yang/flow-capable-transaction. |
+| yang;a=blob;hb=refs/heads/stable/boron>`__             |
++--------------------------------------------------------+
+| `sal-flow.yang <https://git.opendaylight.org/gerrit/gi |
+| tweb?p=openflowplugin.git;f=model/model-flow-service/s |
+| rc/main/yang/sal-flow.yang;a=blob;hb=refs/heads/stable |
+| /boron>`__                                             |
++--------------------------------------------------------+
+| `sal-meter.yang <https://git.opendaylight.org/gerrit/g |
+| itweb?p=openflowplugin.git;f=model/model-flow-service/ |
+| src/main/yang/sal-meter.yang;a=blob;hb=refs/heads/stab |
+| le/boron>`__                                           |
++--------------------------------------------------------+
+| `flow-topology-discovery.yang <https://git.opendayligh |
+| t.org/gerrit/gitweb?p=openflowplugin.git;f=model/model |
+| -flow-service/src/main/yang/flow-topology-discovery.ya |
+| ng;a=blob;hb=refs/heads/stable/boron>`__               |
++--------------------------------------------------------+
+| `node-errors.yang <https://git.opendaylight.org/gerrit |
+| /gitweb?p=openflowplugin.git;f=model/model-flow-servic |
+| e/src/main/yang/node-errors.yang;a=blob;hb=refs/heads/ |
+| stable/boron>`__                                       |
++--------------------------------------------------------+
+| `node-config.yang <https://git.opendaylight.org/gerrit |
+| /gitweb?p=openflowplugin.git;f=model/model-flow-servic |
+| e/src/main/yang/node-config.yang;a=blob;hb=refs/heads/ |
+| stable/boron>`__                                       |
++--------------------------------------------------------+
+| `sal-echo.yang <https://git.opendaylight.org/gerrit/gi |
+| tweb?p=openflowplugin.git;f=model/model-flow-service/s |
+| rc/main/yang/sal-echo.yang;a=blob;hb=refs/heads/stable |
+| /boron>`__                                             |
++--------------------------------------------------------+
+| `sal-port.yang <https://git.opendaylight.org/gerrit/gi |
+| tweb?p=openflowplugin.git;f=model/model-flow-service/s |
+| rc/main/yang/sal-port.yang;a=blob;hb=refs/heads/stable |
+| /boron>`__                                             |
++--------------------------------------------------------+
+| `packet-processing.yang <https://git.opendaylight.org/ |
+| gerrit/gitweb?p=openflowplugin.git;f=model/model-flow- |
+| service/src/main/yang/packet-processing.yang;a=blob;hb |
+| =refs/heads/stable/boron>`__                           |
++--------------------------------------------------------+
+| `flow-node-inventory.yang <https://git.opendaylight.or |
+| g/gerrit/gitweb?p=openflowplugin.git;f=model/model-flo |
+| w-service/src/main/yang/flow-node-inventory.yang;a=blo |
+| b;hb=refs/heads/stable/boron>`__                       |
++--------------------------------------------------------+
+| ***Openflow statistics***                              |
++--------------------------------------------------------+
+| `opendaylight-queue-statistics.yang <https://git.opend |
+| aylight.org/gerrit/gitweb?p=openflowplugin.git;f=model |
+| /model-flow-statistics/src/main/yang/opendaylight-queu |
+| e-statistics.yang;a=blob;hb=refs/heads/stable/boron>`_ |
++--------------------------------------------------------+
+| `opendaylight-flow-table-statistics.yang <https://git. |
+| opendaylight.org/gerrit/gitweb?p=openflowplugin.git;f= |
+| model/model-flow-statistics/src/main/yang/opendaylight |
+| -flow-table-statistics.yang;a=blob;hb=refs/heads/stabl |
+| e/boron>`__                                            |
++--------------------------------------------------------+
+| `opendaylight-port-statistics.yang <https://git.openda |
+| ylight.org/gerrit/gitweb?p=openflowplugin.git;f=model/ |
+| model-flow-statistics/src/main/yang/opendaylight-port- |
+| statistics.yang;a=blob;hb=refs/heads/stable/boron>`__  |
++--------------------------------------------------------+
+| `opendaylight-statistics-types.yang <https://git.opend |
+| aylight.org/gerrit/gitweb?p=openflowplugin.git;f=model |
+| /model-flow-statistics/src/main/yang/opendaylight-stat |
+| istics-types.yang;a=blob;hb=refs/heads/stable/boron>`_ |
++--------------------------------------------------------+
+| `opendaylight-group-statistics.yang <https://git.opend |
+| aylight.org/gerrit/gitweb?p=openflowplugin.git;f=model |
+| /model-flow-statistics/src/main/yang/opendaylight-grou |
+| p-statistics.yang;a=blob;hb=refs/heads/stable/boron>`_ |
++--------------------------------------------------------+
+| `opendaylight-flow-statistics.yang <https://git.openda |
+| ylight.org/gerrit/gitweb?p=openflowplugin.git;f=model/ |
+| model-flow-statistics/src/main/yang/opendaylight-flow- |
+| statistics.yang;a=blob;hb=refs/heads/stable/boron>`__  |
++--------------------------------------------------------+
+| `opendaylight-meter-statistics.yang <https://git.opend |
+| aylight.org/gerrit/gitweb?p=openflowplugin.git;f=model |
+| /model-flow-statistics/src/main/yang/opendaylight-mete |
+| r-statistics.yang;a=blob;hb=refs/heads/stable/boron>`_ |
++--------------------------------------------------------+
 
 Karaf feature tree
 ------------------