Remove the rst file and add later with proper formatting 58/65658/1
authorD Arunprakash <d.arunprakash@ericsson.com>
Fri, 17 Nov 2017 03:51:00 +0000 (09:21 +0530)
committerD Arunprakash <d.arunprakash@ericsson.com>
Fri, 17 Nov 2017 03:51:00 +0000 (09:21 +0530)
Change-Id: Ib92caeb6c7e657b51e76dd169c5569e2bb45bbe7
Signed-off-by: D Arunprakash <d.arunprakash@ericsson.com>
docs/specs/reconciliation-framework.rst [deleted file]

diff --git a/docs/specs/reconciliation-framework.rst b/docs/specs/reconciliation-framework.rst
deleted file mode 100644 (file)
index 545dc95..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-.. contents:: Table of Contents
-      :depth: 3
-
-=========================
-Reconciliation Framework
-=========================
-
-https://git.opendaylight.org/gerrit/#/q/topic:bug/8902
-
-This feature aims to overcome the drawbacks of the current reconciliation implementation. As part of this enhancement,
-reconciliation framework will be introduced which will coordinate the reconciliation across various applications.
-
-Applications should register themself with reconciliation framework with a specific priority.
-Application should decide the priority and the reconciliation framework will use it for executing in an priority.
-
-
-Problem description
-===================
-
-When a switch connected to controller, the current ODL reconciliation implementation pushes all the
-table/meters/groups/flows from the inventory configuration datastore to the switch.
-
-When the switch is connected, all the applications including FRM(Forwarding Rules Manager) will receive the node added
-DTCN(Data Tree Change Listener) and starts pushing the flows for the openflow switch. FRM reconciliation will read the
-data from the config and starts pushing the flows one by one.
-In the meantime, applications can react to the node added DTCN change and will start pushing
-the flows through the config DS. With this, there is a high chance the application flow can be overwritten by the old
-flows by FRM via reconciliation.
-
-With framework, the problem will be avoided by doing the reconciliation for all the registered services including FRM
-and then the openflow switch will be submitted to the DS. With this, applications won't receive the node added DTCN until
-registered applications are done with reconciliation for the switch.
-
-The current reconciliation mechanism lacks an ordered execution of tasks  across multiple applications resulting
-in the forwarding plane not correctly reflecting the changes in the control plane.
-The issue becomes more prominent in case of multi-application scenarios, resulting in errors.
-
-Use Cases
----------
-Priority based/Ordered  Coordination of Reconciliation across multiple applications.
-
-Proposed change
-===============
-1. Reconciliation Framework will be introduced, framework will coordinate the reconciliation across applications.
-The Openflow switch won't be advertised to application until Openflow switch is in KNOWN state.
-    KNOWN state --> controller and switch state should be in sync(reconciliation), once the switch connects.
-
-2. Application participating in reconciliation needs to register with framework.
-    i)  Application can either be FRM, FRS or any other application(s).
-    ii) Application(s) registering with Reconciliation module is encouraged since:
-        - Applications would know the right Flows/Groups/Meters which needs to be replayed (Add/Delete/Update).
-        - FRM / FRS(Forwarding Rules Sync) would not have application view of flows / group, it would blindly
-         replay the flows / groups.
-        - Also flows having idle / hard timeout can be gracefully handled by application rather than FRM / FRS.
-
-3. As applications register with reconciliation module
-    Reconciliation module maintains the numbers of application registered in an order based on the priority.
-    Applications will be executed in the priority order of higher to lower, 1 - Highest n - lowest
-    Reconciliation will be triggered as per the priority, applications with same priority will be processed in parallel,
-    once the higher priority application completed, next priority of applications will be processed.
-
-4. Openflow switch establishes connections with openflowplugin.
-     Openflow switch sends connection request.
-     Openflowplugin accepts connection and than establishes the connection.
-
-5. Openflowplugin after establishing the connection with openflow switch, elects the mastership and invokes
-   reconciliation framework through ReconciliationFrameworkEvent onDevicePrepared.
-     Before invoking the reconciliation API, all the RPCs are registered with MD-SAL by openflowplugin.
-     Reconciliation framework will register itself with the MastershipChangeServiceManager.
-
-6. All registered applications would be indicated to start the reconciliation.
-     DeviceInfo would be passed for the API/Event and it contains all the information needed by application.
-
-8. Application(s) would than fetch the flows / groups for that particular Node, which needs to be replayed.
-
-9. Application(s) would than replay the selected flows / group on to the switch.
-
-10. Application(s) would also wait for error from switch, for pre-defined time.
-
-11. Application(s) would inform the reconciliation status to reconciliation module.
-
-12. Reconciliation framework would co-relate result status from all the applications and decides the final status.
-      If success, framework will report back DO_NOTHING and in case of failure it will be DISCONNECT.
-
-13. Based on result state, openflowplugin should do the following
-      On success case, openflowplugin should continue with the openflow switch --> write the switch to the operational datastore.
-      On failure case, openflowplugin should disconnect the openflow switch.
-      When the switch reconnects, the same steps will be followed again.
-
-14. When there is a disconnect/mastership change while the reconciliation is going on, openflowplugin should notify the
-    framework and the framework should halt the current reconciliation.
-
-Implementation Details:
------------------------
-Following new interface will be introduced from Reconciliation framework (RF).
-
-1. ReconciliationManager
-2. ReconciliationNotificationListener
-
-1. ReconciliationManager
-
-     /* Application who are interested in reconciliation should use this API to register themself to the RF */
-     /* NotificationRegistration will be return to the registered application, who needs to take of closing the registration */
-     NotificationRegistration registerService(ReconciliationNotificationListener object);
-
-     /* API exposed by RF for get list of registered services
-     Map<Integer, List<ReconciliationNotificationListener>> getRegisteredServices();
-
-2. ReconciliationNotificationListener
-
-     /* This method will be a callback from RF to start the application reconciliation */
-     ListenableFuture<Boolean> startReconciliation(DeviceInfo deviceInfo);
-
-     /* This method will be a callback from RF when openflow switch disconnects during reconcilation */
-     ListenableFuture<Boolean> endReconciliation(DeviceInfo deviceInfo);
-
-     /* Priority of the application */
-     int getPriority();
-
-     /* Name of the application */
-     String getName();
-
-     /* Application's intent when the application's reconciliation fails */
-     ResultState getResultState();
-
-Priority:
----------
-Framework will maintain the list of registered applications in an order based on the priority. Applications having the
-same priority will be executed in parallel and once those are done. Next priority applications will be called.
-Consider 2 applications, A and B. A is handling of programming groups and flows and B is handling of programming
-flows which is dependent of the groups programmed by A. So, B has to register with lower priority than A.
-
-Application don't do any conflict resolution or guarantee any specific order among the application registered at the
-same priority level.
-
-Result State - Intent Action:
------------------------------
-When the application fails to reconcile, what is the action that framework should take.
-DO_NOTHING - continue with the next reconciliation
-DISCONNECT - disconnect the switch (reconciliation will start again once the switch connects back)
-
-Name:
------
-Name of the application who wants to register for reconciliation
-
-ReconciliationNotificationListener:
------------------------------------
-Applications who wants to register should implement ReconciliationNotificationListener interface.
-     ReconciliationNotificationListener having api's like startReconciliation and endReconciliation
-     startReconciliation --> applications can take action to trigger reconciliation
-     endReconciliation --> application can take action to cancel their current reconcile tasks
-
-Command Line Interface (CLI):
------------------------------
-CLI interface will be provided to get all the registered services and their status
-     List of registered services
-     Status of each application for respective openflow switch
-
-
-Pipeline changes
-----------------
-None.
-
-Yang changes
-------------
-None
-
-
-Configuration impact
---------------------
-None
-
-Clustering considerations
--------------------------
-None
-
-Other Infra considerations
---------------------------
-N.A.
-
-Security considerations
------------------------
-None.
-
-Scale and Performance Impact
-----------------------------
-None.
-
-Targeted Release
-----------------
-Nitrogen.
-
-Alternatives
-------------
-N.A.
-
-Usage
-=====
-
-Features to Install
--------------------
-Will be updated
-
-REST API
---------
-
-CLI
----
-
-Implementation
-==============
-
-Assignee(s)
------------
-Primary assignee:
- - Prasanna Huddar(prasanna.k.huddar@ericsson.com)
- - Arunprakash D (d.arunprakash@ericsson.com)
- - Gobinath Suganthan (gobinath@ericsson.com)
-
-Other contributors:
-
-
-Work Items
-----------
-N.A.
-
-Dependencies
-============
-This doesn't add any new dependencies.
-
-
-Testing
-=======
-Capture details of testing that will need to be added.
-
-Unit Tests
-----------
-
-Integration Tests
------------------
-
-CSIT
-----
-
-Documentation Impact
-====================
-This feature will not require any change in User Guide.
-
-
-References
-==========
-[1] https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin:Reconciliation#Future_Enhancements