Update the structure of the documentation
[so.git] / docs / architecture.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.\r
2 .. http://creativecommons.org/licenses/by/4.0\r
3 .. Copyright 2018 Huawei Technologies Co., Ltd.\r
4 \r
5 SO - Architecture\r
6 ===============\r
7 \r
8 .. image:: images/SO_Architecture_1.png\r
9 \r
10 SO Sub-Components\r
11 ------------------\r
12 \r
13 **API Handler**\r
14 \r
15   RESTful interface to northbound clients\r
16       \r
17         * Handle service-level and infrastructure (VNF & network) requests\r
18         \r
19   Service-agnostic APIs\r
20     * “Service Instantiation API”\r
21 \r
22   Model-driven recipe selection\r
23     * Use SO Catalog to map input requests to BPMN flows\r
24     * Dynamic lookup based on service-model + action\r
25     * Input data forwarded to BPMN flow\r
26         \r
27   Track open and completed requests via SO Request DB\r
28 \r
29   Multiple API-H modules may support different APIs\r
30 \r
31 **BPMN Execution Engine**\r
32 \r
33   Open-source Camunda platform\r
34     * Support BPMN 2.0 service recipes\r
35 \r
36   Expose RESTful interface to API-H (unique path per recipe)\r
37 \r
38   Make use of common “building block” sub-flows\r
39 \r
40   Sequence orchestration steps for each Resource in the recipe\r
41     * Request and configure network resources via SDN-C\r
42     * Manage cloud resources via PO (OpenStack)\r
43     * Update inventory via A&AI\r
44   \r
45   Perform error handling/rollback\r
46 \r
47 **Resource Adapters**\r
48 \r
49   Interfaces to lower level controllers and other ONAP components\r
50    * Platform Orchestrator, SDN-Controller, APP-Controller, VFC-Controllers\r
51    * Hides the details of complex interfaces (e.g. OpenStack APIs)\r
52    * Expose interfaces to BPMN flows as SOAP or REST APIs\r
53    * Support synchronous and asynchronous operations\r
54    \r
55   Provided as part of SO platform for use by all BPMN flows\r
56 \r
57   Use SO Catalog to map resource requests to a recipe/template\r
58 \r
59   Data-driven design\r
60    * Catalog templates may be updated via self-service (outside of release cycles)\r
61    * Merge input parameters with templates at run-time\r
62 \r
63 **Data Stores**\r
64    \r
65   Request DB\r
66    * Tracks open and completed requests\r
67   \r
68   SO Catalog\r
69    * SO view of the SDC Catalog\r
70       * service and resource models, recipes, and templates\r
71    * Populated via SDC distribution service from TOSCA models\r
72 \r
73   Camunda DB\r
74    * Maintain state for BPMN flows\r
75    * Supports multiple active engines\r
76    \r
77 **SDC Distribution Client**\r
78 \r
79   Receive updated service models from SDC\r
80    * Event-bus notifications when new models available\r
81    * HTTP retrieval of models (TOSCA) and artifacts (Heat)\r
82    \r
83   Receive distributions as TOSCA models\r
84 \r
85   Populate SO Catalog\r
86 \r
87   Support self-service updates to models and artifacts\r
88   \r
89 Third Party and Open Source\r
90 ---------------------------\r
91 \r
92 **BPMN Engine**\r
93   Camunda (open source)\r
94 \r
95 **Other Open Source Components of Note:**\r
96   JBOSS EAP/Wildfly\r
97   MySQL/MariaDB\r
98   Openstack Java SDK (“woorea”)\r
99 \r
100 \r
101 \r
102 \r
103 \r
104   \r
105  \r
106 \r