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.
The ASD package contains the details required to create and integrate the required services/components. Each ASD package contains only one rApp and one rApp can have any number of rApp instances.
Source code repository : https://gerrit.o-ran-sc.org/r/gitweb?p=nonrtric%2Fplt%2Frappmanager.git;a=summary
The rApp Manager is integrated with the following components to support lifecycle managing the rApp.
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. More details about ACM can be found here.
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.
List of participants used by rApp manager sample rApp.
ACM composition and instance details can be provided as part of the rApp package and the package structure can be found here.
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. More details about DME can be found here.
It is integrated with rApp manager to enable the rApp to produce/consume specific type of data(Information Type in DME terms).
Information type, and Data producer/consumer information can be provided as part of rApp package and the package structure can be found here.
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. More details about SME can be found here.
It is integrated with rApp manager to enable the rApp to expose/access/discover endpoints.
Service exposure/access related configurations can be provided as part of rApp package and the package structure can be found here.
The rApp lifecycle contains 4 states. The state and transitions are as follows,
|
---|
The rApp Instance lifecycle contains 4 states. The state and transitions are as follows,
|
---|
Create rApp
Delete rApp
|
---|
Create rApp Instance
Deploy rApp Instance
Undeploy rApp Instance
Delete rApp Instance
|
---|
This packaging structure is a prototype and subject to change |
The sample rApp package structure shown below and the location of relevant files for each integration is provided.
ACM (Files/Acm)
DME (Files/Dme)
SME (Files/Sme)
|
---|
CSAR file generator is available in the rAppmanager repository here (master).
"rappmanager/sample-rapp-generator" folder contains sample rApp packages.
The contents of the rApp (Eg. rapp-all, rapp-hello-world...) directory can be modified as required and the package can be generated as shown below,
> ./generate.sh <FOLDER_NAME> |
> ./generate.bat <FOLDER_NAME> |
This will generate a package named " <FOLDER_NAME>.csar". It can be renamed as required.
This generated package can be used with rApp Manager to create rApp.
The scripts for the deployments of rApp Manager and its dependent components are available here (i-release).
These scripts are specifically designed for a fresh environment. Some tweaks may be required to run these in an environment where there are some existing installations |
The installation scripts shown here installs all the required components. It installs chart museum server where the installation script is running and it will get whitelisted in ACM. All sample rApps uses similar addresses for referring the charts in asd.yaml and Kubernetes instance configuration.
Separate chart museum can be used here and It should be whitelisted in ACM manually and the server IP/FQDN should be used in the rApp package configuration such as asd.yaml and Kubernetes instance configuration (Chart museum server should be reachable from rApp manager and Kubernetes-Participant).
ACM components should be configured with couple of other components for the participants to work.
In case some of the installation is already setup or not set by the installation scripts, the below environment variables can be used to set the configurations ACM through installation scripts.
Ignore the below variables if the entire environment is being setup by the following installation scripts |
Variable Name | Description | Default Value |
---|---|---|
A1PMS_HOST | Address of the A1PMS. It will be accessed from A1PMS participant. | http://policymanagementservice.nonrtric:9080 |
CHART_REPO_GET_URI | URI to get the charts. It will be used by Kubernetes participant and sample rApp generator. | http://IP_ADDRESS:8879/charts IP_ADDRESS: IP of the host in which the installation scripts are running. |
CHART_REPO_POST_URI | URI to upload the charts. It will be used by sample rApp generator. | http://IP_ADDRESS:8879/charts/api/charts IP_ADDRESS: IP of the host in which the installation scripts are running. |
All components can be installed using the command below,
>./install-all.sh |
Individual components can be installed using the commands below,
To install the tools required for other installer scripts.
>./install-base.sh |
To install the ACM, and it's related components.
>./install-acm.sh |
To install the Kserve, and it's related components.
>./install-kserve.sh |
To installs the NONRTRIC components.
>./install-nonrtric.sh |
Dev mode of installation can be done by providing an argument "dev" to the installation scripts above. Eg., install-all.sh dev Dev mode installation uses snapshot images for rApp manager and DME participant. |
The below components should be up and running for the rApp Manager integrations to work properly.
To uninstall all the components
>./uninstall-all.sh |