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