Replace supported admonitions with rst directives
[docs.git] / docs / developer-guide / nemo-developer-guide.rst
1 NEtwork MOdeling (NEMO)
2 =======================
3
4 Overview
5 --------
6
7 The NEMO engine provides REST APIs to express intent, and manage it. With this
8 northbound API, user could query what intents have been handled successfully, and
9 what types have been predefined.
10
11 NEMO Architecture
12 -----------------
13
14 In NEMO project, it provides three features facing developer.
15
16 * ``odl-nemo-engine``: it is a whole model to handle intent.
17
18 * ``odl-nemo-openflow-renderer``: it is a southbound render to translate intent to flow
19   table in devices supporting for OpenFlow protocol.
20
21 * ``odl-nemo-cli-render``: it is also a southbound render to translate intent into forwarding
22   table in devices supporting for traditional protocol.
23
24 Key APIs and Interfaces
25 -----------------------
26
27 NEMO projects provide four basic REST methods for user to use.
28
29 * PUT: store the information expressed in NEMO model directly without handled by NEMO engine.
30
31 * POST: the information expressed in NEMO model will be handled by NEMO engine, and will
32   be translated into southbound configuration.
33
34 * GET: obtain the data stored in data store.
35
36 * DELETE: delete the data in data store.
37
38 NEMO Intent API
39 ~~~~~~~~~~~~~~~
40
41 NEMO provides several RPCs to handle user's intent. All RPCs use POST method.
42
43 -  ``http://{controller-ip}:8181/restconf/operations/nemo-intent:register-user``: a REST API
44    to register a new user. It is the first and necessary step to express intent.
45
46 -  ``http://{controller-ip}:8181/restconf/operations/nemo-intent:transaction-begin``: a REST
47    type to start a transaction. The intent exist in the transaction will be handled together.
48
49 -  ``http://{controller-ip}:8181/restconf/operations/nemo-intent:transaction-end``: a REST API
50    to end a transaction. The intent exist in the transaction will be handled together.
51
52 -  ``http://{controller-ip}:8181/restconf/operations/nemo-intent:structure-style-nemo-update``: a
53    REST API to create, import or update intent in a structure style, that is, user could express the
54    structure of intent in json body.
55
56 -  ``http://{controller-ip}:8181/restconf/operations/nemo-intent:structure-style-nemo-delete``: a
57    REST API to delete intent in a structure style.
58
59 -  ``http://{controller-ip}:8181/restconf/operations/nemo-intent:language-style-nemo-request``: a REST
60    API to create, import, update and delete intent in a language style, that is, user could express
61    intent with NEMO script. On the other hand, with this interface, user could query which intent have
62    been handled successfully.
63
64 API Reference Documentation
65 ---------------------------
66
67 Go to ``http://${IPADDRESS}:8181/apidoc/explorer/index.html``. User could see many useful APIs to
68 deploy or query intent.
69