summaryrefslogtreecommitdiffstats
path: root/docs/architecture/architecture.rst
blob: d59429a3665e407d307892907f33d66dc99438d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2018 Huawei Technologies Co., Ltd.
.. _architecture:

SO - Architecture
=================

SO Functional View
------------------

.. image:: ../images/SO_Architecture_1.png

SO Deployment View
--------------------

.. image:: ../images/SO_Architecture_Internal.png

.. image:: ../images/so-architecture.png

SO Sub-Components
------------------

**API Handler**

  RESTful interface to northbound clients

* Handle service-level and infrastructure (VNF & network) requests

  Service-agnostic APIs
    * "Service Instantiation API"

  Model-driven recipe selection
    * Use SO Catalog to map input requests to BPMN flows
    * Dynamic lookup based on service-model + action
    * Input data forwarded to BPMN flow

  Track open and completed requests via SO Request DB

  Multiple API-H modules may support different APIs

**BPMN Execution Engine**

  Open-source Camunda platform
    * Support BPMN 2.0 service recipes

  Expose RESTful interface to API-H (unique path per recipe)

  Make use of common "building block" sub-flows

  Sequence orchestration steps for each Resource in the recipe
    * Request and configure network resources via SDN-C
    * Manage cloud resources via PO (OpenStack)
    * Update inventory via A&AI

  Perform error handling/rollback

**Resource Adapters**

  Interfaces to lower level controllers and other ONAP components
   * Platform Orchestrator, SDN-Controller, APP-Controller, VFC-Controllers, Multi-Cloud
   * Hides the details of complex interfaces (e.g. OpenStack APIs)
   * Expose interfaces to BPMN flows as SOAP or REST APIs
   * Support synchronous and asynchronous operations

  Provided as part of SO platform for use by all BPMN flows

  Use SO Catalog to map resource requests to a recipe/template

  Data-driven design
   * Catalog templates may be updated via self-service (outside of release cycles)
   * Merge input parameters with templates at run-time

**Data Stores**

  Request DB
   * Tracks open and completed requests

  SO Catalog
   * SO view of the SDC Catalog
      * service and resource models, recipes, and templates
   * Populated via SDC distribution service from TOSCA models

  Camunda DB
   * Maintain state for BPMN flows
   * Supports multiple active engines

**SDC Distribution Client**

  Receive updated service models from SDC
   * Event-bus notifications when new models available
   * HTTP retrieval of models (TOSCA) and artifacts (Heat)

  Receive distributions as TOSCA models

  Populate SO Catalog

  Support self-service updates to models and artifacts

**SO Monitoring**

  Monitor BPMN Workflow execution by providing
   * Service list search based on search criteria
   * Service statistic
   * Service Process Instance Rendering and Detail

**SO VNFM Adapter**

  Support external SVNFMs through SOL003 APIs
   * Create, Instantiate, Terminate and Delete VNF, including Granting, Subscription and Lifecycle Notifications
   * Tracking capability which VNFM instance has handled with which VNF instance
   * BPMN Building Block workflows and Java-based recipes for VNF LCM
   * VNFM Simulator for validating SO VNFM Adapter NBI and SBI for integration testing
   * The SO ETSI CSIT Tests and running them, https://wiki.onap.org/display/DW/SO+ETSI+CSIT
   * Testing the SO ETSI Alignment manually (Instantiate VNF using SVNFM), https://wiki.onap.org/pages/viewpage.action?pageId=68524128

Third Party and Open Source
---------------------------

**BPMN Engine**
  Camunda (open source)

**Other Open Source Components of Note:**
  Tomcat
  MySQL/MariaDB
  Openstack Java SDK ("woorea")