blob: 64bd4dc21d1dc21e746c670359777be0e951686a [file] [log] [blame]
PANCHAL0424f6f2020-03-27 19:28:03 -04001=====================
2DCAE MOD Architecture
3=====================
4
5
6DCAE MOD is composed of a mix of components developed in ONAP and other
7components taken from the Apache Nifi project and modified for
VENKATESH KUMAR64559742020-04-29 18:53:53 -04008appropriate use. The MOD architecture and design was intended to simplify the onboarding
9and design experience in ONAP addressing below goals.
PANCHAL0424f6f2020-03-27 19:28:03 -040010
VENKATESH KUMAR64559742020-04-29 18:53:53 -040011.. toctree::
12 :maxdepth: 1
13
14 ./DCAE-MOD-goals.rst
15
16
17MOD aims to streamline the construction, management,
PANCHAL0424f6f2020-03-27 19:28:03 -040018and evolution of DCAE flows from role to role, from environment to
VENKATESH KUMAR64559742020-04-29 18:53:53 -040019environment, and from release to release. MOD is composed of three functional areas: onboarding, design, and
20distribution and caters to different `user group <./Roles>`__
PANCHAL0424f6f2020-03-27 19:28:03 -040021
22
VENKATESH KUMAR64559742020-04-29 18:53:53 -040023The below illustrations describe the architecture of DCAE-MOD and show the
24usage flow in DCAE MOD
PANCHAL0424f6f2020-03-27 19:28:03 -040025
26|image0|
27
28|image1|
29
30Onboarding API
31--------------
32
33It is a component developed to onboard
34models/components/microservices (spec files) into DCAE MOD.
35
36Genprocessor
37------------
38
39It has been developed in Java. This project is a tool to
40experiment with generating a Nifi Processor POJO from a DCAE component
41spec.
42
43Nifi Web UI
44-----------
45
46It is a component taken from the Apache Nifi Project but modified for
47use in the MOD project.
48
49Apache NiFi is a dataflow system based on the concepts of flow-based
50programming. It supports powerful and scalable directed graphs of data
51routing, transformation, and system mediation logic. NiFi has a
52web-based user interface for design, control, feedback, and monitoring
53of dataflows. It is highly configurable along several dimensions of
54quality of service, such as loss-tolerant versus guaranteed delivery,
55low latency versus high throughput, and priority-based queuing. NiFi
56provides fine-grained data provenance for all data received, forked,
57joined cloned, modified, sent, and ultimately dropped upon reaching its
58configured end-state.
59
60The NiFi UI provides mechanisms for creating automated dataflows, as
61well as visualizing, editing, monitoring, and administering those
62dataflows. The UI can be broken down into several segments, each
63responsible for different functionality of the application. This section
64provides screenshots of the application and highlights the different
65segments of the UI. Each segment is discussed in further detail later in
66the document.
67
68The users of Apache Nifi will find that it is used very differently than
69intended to serve our purpose in the DCAE-MOD project.
70
71
72Registry API
73------------
74
75This component taken from the Apache Nifi project, is a REST API that
76provides an interface to a registry with operations for saving,
77versioning, reading NiFi flows and components.
78
79Distributor API
80---------------
81
82It is a component developed using the Flask framework in Python.
83It is a HTTP API to manage distribution targets for DCAE design.
84Distribution targets are DCAE runtime environments that have been
85registered and are enabled to accept flow design changes that are to be
86orchestrated in that environment.
87
88Flow Based Programming (FBP)
89----------------------------
90
91NiFis fundamental design concepts closely relate to the main ideas of
92Flow Based
93Programming `[fbp] <https://nifi.apache.org/docs/nifi-docs/html/overview.html#fbp>`__.
94
95For more information on how some of the main NiFi concepts map to FBP,
96check out https://nifi.apache.org/docs/nifi-docs/html/overview.html
97
98Runtime API
99-----------
100
101It is developed in Javas Spring Boot framework. It
102is a HTTP API to support runtime environment for DCAE-MOD. It has two
103major functionalities:
104
1051. It accepts changes on the flow-graph via fbp protocol
106
1072. It generates and distributes blueprints based on the change made on
108 the flow-graph
109
110Blueprint Generator
111-------------------
112
113This tool allows the user to create a blueprint from a component spec json file.
114This tool is used by the runtime api.
115
116Inventory API
117-------------
118
119DCAE Inventory is a web
120service that provides the following:
121
1221. Real-time data on all DCAE services and their components
123
1242. Comprehensive details on available DCAE service types
125
126DCAE Inventory is a composite API that relies on other APIs to obtain
127resources on underlying components and uses these resources to compose a
128DCAE service resource. In addition, DCAE Inventory will store data that
129is unique to the DCAE service level including:
130
1311. DCAE service metadata
132
1332. DCAE service type description and composition details
134
1353. Relationships between DCAE service and DCAE service types and their
136 respective VNF and VNF types
137
138DCAE Inventory has a REST interface to service client requests. It has a
139well-defined query interface that would filter result sets based upon
140resource attributes.
141
142Here, think of it as a back end API for the DCAE dashboard. The runtime
143posts Cloudify Blueprints to this API so they show up in the DCAE
144dashboard.
145
146DCAE Dashboard
147--------------
148
149The DCAE dashboard provides visibility into running DCAE services for
150operational purposes. It queries the DCAE Inventory for aggregate
151details on all the running DCAE services and for getting up-to-date
152status information on DCAE services and their components.
153
154End-to-End Flow
155---------------
156
157A model/component/microservice can be onboarded by a ms Developer by
158posting a spec file on the onboarding API. Alternatively, an Acumos
159model can be onboarded using the Acumos Adapter. Once successfully
160onboarded, the genprocessor converts converts them to jars and onboards
161them into Nifi i.e DCAE MOD. These artifacts are now available to use
162from the Modified Nifi Web UI i.e DCAE Designer.
163
164The registry api offers version control and retrieval for flows. The
165distributor api can be used to set distribution targets. Once a flow is
166designed and distributed, it goes to the distributor api which is
167supposed to post graph changes (in accordance with fbp) to the runtime
168api. The runtime api generates and distributes blueprints based on the
169change made on the flow-graph. These blueprints received by the DCAE
170inventory can then be viewed and deployed from the DCAE dashboard.
171
172
173
174.. |image0| image:: ../images/DCAE-Mod-Architecture.png
175
176.. |image1| image:: ../images/Onboarding-with-DCAE-MOD.png
177
178.. |image2| image:: ../images/nifi-toolbar-components.png