doesn’t have any structure) using screen scraping and regular
expressions.
-+-----------------------------------------+
-| |space-1.jpg| |
-+=========================================+
-| *Figure 1: old northbound architecture* |
-+-----------------------------------------+
+.. figure:: images/arch-before.png
+ :alt: diagram of northbound architecture prior to nbapi conversion
+
+ Old northbound architecture
The new northbound architectures, on the other hand, features a
multitude of different management APIs, all of them connected to the
(e.g. support custom transport protocols, different data encoding
formats, fine-grained access control, etc).
-+-----------------------------------------+
-| |space-1.jpg| |
-+=========================================+
-| *Figure 2: new northbound architecture* |
-+-----------------------------------------+
+.. figure:: images/arch-after.png
+ :alt: diagram of northbound architecture after nbapi conversion
+
+ New northbound architecture
Figure 3 shows the internal view of the FRR northbound architecture. In
this image we can see that northbound layer is an abstract entity
turn, have their own APIs to communicate with external management
clients.
-+---------------------------------------------------------+
-| |space-1.jpg| |
-+=========================================================+
-| *Figure 3: new northbound architecture - internal view* |
-+---------------------------------------------------------+
+.. figure:: images/nb-layer.png
+ :alt: diagram of northbound architecture internals
+
+ New northbound architecture - internal view
Initially the CLI (and all of its commands) will be maintained inside
the FRR daemons. In the long term, however, the goal is to move the CLI
Northbound Architecture
-----------------------
-+-----------------------------------------------+
-| |space-1.jpg| |
-+===============================================+
-| *Figure 4: libyang’s lys_node data structure* |
-+-----------------------------------------------+
-
-+-----------------------------------------------+
-| |space-1.jpg| |
-+===============================================+
-| *Figure 5: libyang’s lyd_node data structure* |
-+-----------------------------------------------+
-
-+---------------------------------------------+
-| |space-1.jpg| |
-+=============================================+
-| *Figure 6: libyang’s ly_ctx data structure* |
-+---------------------------------------------+
-
-+----------------------------------------+
-| |space-1.jpg| |
-+========================================+
-| *Figure 7: configuration transactions* |
-+----------------------------------------+
+.. figure:: images/lys-node.png
+ :alt: diagram of libyanbg's lys_node data structure
+
+ ``libyang's`` lys_node data structure
+
+
+.. figure:: images/lyd-node.png
+ :alt: diagram of libyanbg's lyd_node data structure
+
+ ``libyang's`` lyd_node data structure
+
+
+.. figure:: images/ly-ctx.png
+ :alt: diagram of libyanbg's ly_ctx data structure
+
+ ``libyang's`` ly_ctx data structure
+
+
+.. figure:: images/transactions.png
+ :alt: diagram showing how configuration transactions work
+
+ Configuration transactions
+
Testing
-------
northbound callbacks are called in response to the ``commit`` command.
For reference, the [[Demos]] page shows a small demonstration of the
transactional CLI in action and what it’s capable of.
-
-.. |space-1.jpg| image:: https://s22.postimg.cc/se52j8awh/arch-before.png
-.. |space-1.jpg| image:: https://s22.postimg.cc/fziaiwboh/arch-after.png
-.. |space-1.jpg| image:: https://s22.postimg.cc/qmc3ocmep/nb-layer.png
-.. |space-1.jpg| image:: https://s22.postimg.cc/z4ljsodht/lys_node.png
-.. |space-1.jpg| image:: https://s22.postimg.cc/6eynw1h7l/lyd_node.png
-.. |space-1.jpg| image:: https://s22.postimg.cc/5cohdhiyp/ly_ctx.png
-.. |space-1.jpg| image:: https://s22.postimg.cc/8waf3bgjl/transactions.png