The OpenDaylight Controller provides following model-driven subsystems
as a foundation for Java applications:
-- **`Config Subsystem <#_config_subsystem>`__** - an activation,
+- :ref:`config_subsystem` - an activation,
dependency-injection and configuration framework, which allows
two-phase commits of configuration and dependency-injection, and
allows for run-time rewiring.
-- **`MD-SAL <#_md_sal_overview>`__** - messaging and data storage
+- :ref:`MD-SAL <mdsal_dev_guide>` - messaging and data storage
functionality for data, notifications and RPCs modeled by application
developers. MD-SAL uses YANG as the modeling for both interface and
data definitions, and provides a messaging and data-centric runtime
this is state of controller, applications and also external systems
(network devices).
-**Transactions** provide **`stable and isolated
-view <#_transaction_isolation>`__** from other currently running
+**Transactions** provide :ref:`stable and isolated
+view <transaction_isolation>` from other currently running
transactions. The state of running transaction and underlying data tree
is not affected by other concurrently running transactions.
using ``put``, ``merge`` and/or ``delete``.
3. application finishes transaction using
- ```submit()`` <#_submitting_transaction>`__, which seals transaction
- and submits it to be processed.
+ ``submit()``, which :ref:`seals transaction
+ and submits <submitting_transaction>` it to be processed.
4. application observes the result of the transaction commit using
either blocking or asynchronous calls.
concurrently running transactions.
Write transactions are **isolated** from other concurrent write
-transactions. All **`writes are local <#_transaction_local_state>`__**
+transactions. All :ref:`writes are local <transaction_local_state>`
to the transaction and represents only a **proposal of state change**
for data tree and **are not visible** to any other concurrently running
transactions (including read-only transactions).
-The transaction **`commit may fail <#_commit_failure_scenarios>`__** due
+The transaction :ref:`commit may fail <commit_failure_scenarios>` due
to failing verification of data or concurrent transaction modifying and
affected data in an incompatible way.
Removes a whole subtree from a specified path.
+.. _submitting_transaction:
+
Submitting transaction
^^^^^^^^^^^^^^^^^^^^^^
- Catches ``TransactionCommitFailedException`` and logs it.
+.. _transaction_local_state:
+
Transaction local state
^^^^^^^^^^^^^^^^^^^^^^^
- Read will return value ``C`` for ``PATH``, since previous write
occurred in same transaction.
+.. _transaction_isolation:
+
Transaction isolation
~~~~~~~~~~~~~~~~~~~~~
``Futures#addCallback(ListenableFuture, FutureCallback)`` to listen
asynchronously for result.
+.. _commit_failure_scenarios:
+
Commit failure scenarios
~~~~~~~~~~~~~~~~~~~~~~~~
Declaring a routing context type
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-.. code:: yang
+.. code::
identity node-context {
description "Identity used to mark node context";
RPCs, we need to model that set accordingly using ``context-instance``
extension from the ``yang-ext`` model.
-.. code:: yang
+.. code::
import yang-ext { prefix ext; }
This is achieved using YANG extension ``context-reference`` from
``yang-ext`` model on leaf, which will be used for RPC routing.
-.. code:: yang
+.. code::
rpc example-routed-rpc {
input {
OpenDaylight Controller MD-SAL: RESTCONF
----------------------------------------
-RESCONF operations overview
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+RESTCONF operations overview
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| RESTCONF allows access to datastores in the controller.
| There are two datastores:
- SUBTREE: changes anywhere in the subtree starting at the node will
be reported
-The RPC to create the stream can be invoked via RESCONF like this:
+The RPC to create the stream can be invoked via RESTCONF like this:
- URI:
http://{odlAddress}:{odlPort}/restconf/operations/sal-remote:create-data-change-event-subscription
WebSocket client
applications <https://developer.mozilla.org/en-US/docs/WebSockets/Writing_WebSocket_client_applications>`__
+.. _config_subsystem:
+
Config Subsystem
----------------
creation of a default instance, it acts as a regular instance and fully
participates in the configuration subsystem (It can be reconfigured or
deleted in following transactions.).
-