d59429a3665e407d307892907f33d66dc99438d1
[so.git] / docs / architecture / architecture.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3 .. Copyright 2018 Huawei Technologies Co., Ltd.
4 .. _architecture:
5
6 SO - Architecture
7 =================
8
9 SO Functional View
10 ------------------
11
12 .. image:: ../images/SO_Architecture_1.png
13
14 SO Deployment View
15 --------------------
16
17 .. image:: ../images/SO_Architecture_Internal.png
18
19 .. image:: ../images/so-architecture.png
20
21 SO Sub-Components
22 ------------------
23
24 **API Handler**
25
26   RESTful interface to northbound clients
27
28 * Handle service-level and infrastructure (VNF & network) requests
29
30   Service-agnostic APIs
31     * "Service Instantiation API"
32
33   Model-driven recipe selection
34     * Use SO Catalog to map input requests to BPMN flows
35     * Dynamic lookup based on service-model + action
36     * Input data forwarded to BPMN flow
37
38   Track open and completed requests via SO Request DB
39
40   Multiple API-H modules may support different APIs
41
42 **BPMN Execution Engine**
43
44   Open-source Camunda platform
45     * Support BPMN 2.0 service recipes
46
47   Expose RESTful interface to API-H (unique path per recipe)
48
49   Make use of common "building block" sub-flows
50
51   Sequence orchestration steps for each Resource in the recipe
52     * Request and configure network resources via SDN-C
53     * Manage cloud resources via PO (OpenStack)
54     * Update inventory via A&AI
55
56   Perform error handling/rollback
57
58 **Resource Adapters**
59
60   Interfaces to lower level controllers and other ONAP components
61    * Platform Orchestrator, SDN-Controller, APP-Controller, VFC-Controllers, Multi-Cloud
62    * Hides the details of complex interfaces (e.g. OpenStack APIs)
63    * Expose interfaces to BPMN flows as SOAP or REST APIs
64    * Support synchronous and asynchronous operations
65
66   Provided as part of SO platform for use by all BPMN flows
67
68   Use SO Catalog to map resource requests to a recipe/template
69
70   Data-driven design
71    * Catalog templates may be updated via self-service (outside of release cycles)
72    * Merge input parameters with templates at run-time
73
74 **Data Stores**
75
76   Request DB
77    * Tracks open and completed requests
78
79   SO Catalog
80    * SO view of the SDC Catalog
81       * service and resource models, recipes, and templates
82    * Populated via SDC distribution service from TOSCA models
83
84   Camunda DB
85    * Maintain state for BPMN flows
86    * Supports multiple active engines
87
88 **SDC Distribution Client**
89
90   Receive updated service models from SDC
91    * Event-bus notifications when new models available
92    * HTTP retrieval of models (TOSCA) and artifacts (Heat)
93
94   Receive distributions as TOSCA models
95
96   Populate SO Catalog
97
98   Support self-service updates to models and artifacts
99
100 **SO Monitoring**
101
102   Monitor BPMN Workflow execution by providing
103    * Service list search based on search criteria
104    * Service statistic
105    * Service Process Instance Rendering and Detail
106
107 **SO VNFM Adapter**
108
109   Support external SVNFMs through SOL003 APIs
110    * Create, Instantiate, Terminate and Delete VNF, including Granting, Subscription and Lifecycle Notifications
111    * Tracking capability which VNFM instance has handled with which VNF instance
112    * BPMN Building Block workflows and Java-based recipes for VNF LCM
113    * VNFM Simulator for validating SO VNFM Adapter NBI and SBI for integration testing
114    * The SO ETSI CSIT Tests and running them, https://wiki.onap.org/display/DW/SO+ETSI+CSIT
115    * Testing the SO ETSI Alignment manually (Instantiate VNF using SVNFM), https://wiki.onap.org/pages/viewpage.action?pageId=68524128
116
117 Third Party and Open Source
118 ---------------------------
119
120 **BPMN Engine**
121   Camunda (open source)
122
123 **Other Open Source Components of Note:**
124   Tomcat
125   MySQL/MariaDB
126   Openstack Java SDK ("woorea")