Merge "Sample rApp package for ics consumer"
[nonrtric/plt/rappmanager.git] / docs / overview.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. SPDX-License-Identifier: CC-BY-4.0
3 .. Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved.
4
5 rApp Manager
6 ~~~~~~~~~~~~
7
8 The rApp Manager is a lifecycle management service for rApps. It gets the rApp as an ASD formatted package and lifecycle manages it based on it instance configuration. It uses ONAP ACM for lifecycle management operations and it integrates with other components for managing the rApp.
9
10 The ASD package contains the details required to create and integrate the required services/components.
11 The ASD package contains only one rApp and one rApp can have any number of rApp instances.
12
13 This product is a part of :doc:`NONRTRIC <nonrtric:index>`.
14
15 ************
16 Architecture
17 ************
18
19 .. image:: ./images/architecture.png
20    :width: 500pt
21
22
23 **********
24 Data Model
25 **********
26
27 .. image:: ./images/rApp-entity-relationship.png
28    :width: 500pt
29
30 ************
31 Integrations
32 ************
33
34 The rApp Manager is integrated with the following components to support lifecycle managing the rApp.
35
36 ACM
37 ---
38 Automation Composition Management (ACM) is a framework that supports Life Cycle Management of Automation Compositions. It supports deployment, monitoring, update and removal of Automation Compositions en-bloc, allowing users to manage their features, services, and capabilities as single logical units.
39 More details about ACM can be found in `ACM <https://docs.onap.org/projects/onap-policy-parent/en/latest/clamp/acm/acm-architecture.html#introduction>`_.
40
41 ACM-R has the ability to support an unlimited number of participants and all the participants can be configured through the configuration in the rApp package.
42
43 List of participants used by rApp manager sample rApp.
44
45 * `A1PMS Participant <https://docs.onap.org/projects/onap-policy-parent/en/latest/clamp/acm/design-impl/participants/a1pms-participant.html>`_ - It interacts with A1PMS of NONRTRIC. It is capable of lifecycle managing A1PMS service.
46 * `Kserve Participant <https://docs.onap.org/projects/onap-policy-parent/en/latest/clamp/acm/design-impl/participants/kserve-participant.html>`_ - It interacts with Kserve. It is capable of lifecycle managing Kserve inference service.
47 * `Kubernetes Participant <https://docs.onap.org/projects/onap-policy-parent/en/latest/clamp/acm/design-impl/participants/k8s-participant.html>`_ - It interacts with Helm/Kubernetes. It is capable of lifecycle managing Helm charts. It expects the helm charts to be available in the mentioned repository as it doesn't handle the helm chart creation in the chart repository.
48 * :doc:`DME Participant <participants:index>` -  It interacts with DME(ICS) of NONRTRIC. It is capable of lifecycle managing DME entities.
49
50 ACM composition and instance details can be provided as part of the rApp package and the package structure can be found in `Sample rApp package structure`_.
51
52 DME
53 ---
54 The DME(Information Coordination Service (ICS)) is a generic service that maintains data subscriptions. Its main purpose is to decouple data consumers and data producers in a multi-vendor environment. A data consumer does not need to know anything about the producers of the data.
55 More details about DME can be found in `ICS <https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-informationcoordinatorservice/en/latest/overview.html>`_.
56
57 It is integrated with rApp manager to enable the rApp to produce/consume specific type of data(Information Type in DME terms).
58
59 Information type, and Data producer/consumer information can be provided as part of rApp package and the package structure can be found in `Sample rApp package structure`_.
60
61 SME
62 ---
63 Service Manager is a Go implementation of a service that calls the CAPIF Core function. When publishing a service it creates a Kong route and Kong service.
64
65 The CAPIF stands for Common API framework and it was developed by 3GPP to enable a unified Northbound API framework across 3GPP network functions, and to ensure that there is a single and harmonized approach for API development.
66 More details about SME can be found in `SME <https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-sme/en/latest/overview.html>`_.
67
68 Service Manager is integrated with rApp manager to enable the rApp to expose/access/discover endpoints.
69
70 Service exposure/access related configurations can be provided as part of rApp package and the package structure can be found in `Sample rApp package structure`_.
71
72 *****************************
73 Sample rApp package structure
74 *****************************
75
76 .. warning::
77     This packaging structure is a prototype and subject to change
78
79 The sample rApp package structure shown below and the location of relevant files for each integration is provided.
80
81 .. list-table::
82
83     * - * ACM (Files/Acm)
84             * Definition - Files/Acm/Definition (Only one file)
85             * Instances - Files/Acm/instances
86         * DME (Files/Dme)
87             * Consumer Information Types - Files/Dme/consumerinfotypes
88             * Producer information Types -  Files/Dme/producerinfotypes
89             * Information Consumers - Files/Dme/infoconsumers
90             * Information Producers - Files/Dme/infoproducers
91         * SME (Files/Sme)
92             * Providers Functions - Files/Sme/providers
93             * Service Api -  Files/Sme/serviceapis
94             * Invokers - Files/Sme/invokers
95       - .. figure:: ./images/rApp-package-1.png
96            :width: 200pt
97         .. figure:: ./images/rApp-package-2.png
98            :width: 150pt
99
100 **************
101 Implementation
102 **************
103
104 Implemented as a Java Spring Boot application.
105
106 *************
107 Configuration
108 *************
109
110 The component is configured by the usual Spring Boot application.yaml file.
111
112 An example application.yaml configuration file: ':download:`link <../rapp-manager-application/src/main/resources/application.yaml>`'
113