Introduction
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
Architecture
rApp Data Model
Integrations
The rApp Manager is integrated with the following components to support lifecycle managing the rApp.
ACM
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.
A1PMS Participant - It interacts with A1PMS of NONRTRIC. It is capable of lifecycle managing A1PMS service.
Kserve Participant - It interacts with Kserve. It is capable of lifecycle managing Kserve inference service.
Kubernetes Participant - 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.
DME Participant - It interacts with DME(ICS) of NONRTRIC. It is capable of lifecycle managing DME entities.
ACM composition and instance details can be provided as part of the rApp package and the package structure can be found here.
DME
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.
SME
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.
State Transitions
rApp States
The rApp lifecycle contains 4 states. The state and transitions are as follows,
COMMISSIONED
rApp get created in this state and once the
DEPRIMING is completed
PRIMING
This is a transition state. rApp will be in this
state once the PRIMING requested for rApp
PRIMED
rApp will be in this state once the PRIMING is
completed. In this state rApp instances can be
created
DEPRIMING
This is a transition state. rApp will be
in this state once the DEPRIMING requested for rApp
| |
|---|
COMMISSIONED
rApp get created in this state and once the
DEPRIMING is completed
PRIMING
This is a transition state. rApp will be in this
state once the PRIMING requested for rApp
PRIMED
rApp will be in this state once the PRIMING is
completed. In this state rApp instances can be
created
DEPRIMING
This is a transition state. rApp will be
in this state once the DEPRIMING requested for rApp
| |
|---|
rApp Instance States
The rApp Instance lifecycle contains 4 states. The state and transitions are as follows,
UNDEPLOYED
rApp instance gets created in this state and
once the rApp Instance undeploy is completed
DEPLOYING
This is the transition state. rApp instance will
be in this state once DEPLOY is requested
DEPLOYED
rApp instance will be in this state once the
rapp instance deployment is completed.
UNDEPLOYING
This is a transition state. rApp instance will
be in this state once UNDEPLOY requested for
rApp instance
| |
|---|
UNDEPLOYED
rApp instance gets created in this state and
once the rApp Instance undeploy is completed
DEPLOYING
This is the transition state. rApp instance will
be in this state once DEPLOY is requested
DEPLOYED
rApp instance will be in this state once the
rapp instance deployment is completed.
UNDEPLOYING
This is a transition state. rApp instance will
be in this state once UNDEPLOY requested for
rApp instance
| |
|---|
Flows
rApp flow
Create rAppAPI user creates rApp by sending rApp package
rApp Manager validates the rApp
rApp Manager stores the rApp in the file system if the rApp is valid
API user provided with the status of rApp creation.
API user request to Prime the rApp
rApp Manager fetches the ACM composition from rApp package and
creates the ACM composition in ACM-R
rApp Manager gets the ACM composition creation status from ACM-R
rApp Manager request ACM-R to prime the ACM composition
rApp Manager gets the ACM composition priming status from ACM-R
rApp Manager checks with DME for the unknown information type from rApp package
rApp Manager get the information type availability from DME
API user provided with the status of rApp priming
Delete rAppAPI user request to Deprime rApp
rApp Manager request ACM-R to deprime the ACM composition
rApp Manager get the status of ACM composition depriming.
rApp Manager requests ACM-R to delete the ACM composition
rApp Manager gets the status of ACM composition deletion
API user provided with the deprime rApp status.
API user request to delete the rApp
rApp Manager validates that the rApp is in COMMISSIONED state and
there is no rApp Instances are available.
API User provided with delete rApp status
| |
|---|
Create rAppAPI user creates rApp by sending rApp package
rApp Manager validates the rApp
rApp Manager stores the rApp in the file system if the rApp is valid
API user provided with the status of rApp creation.
API user request to Prime the rApp
rApp Manager fetches the ACM composition from rApp package and
creates the ACM composition in ACM-R
rApp Manager gets the ACM composition creation status from ACM-R
rApp Manager request ACM-R to prime the ACM composition
rApp Manager gets the ACM composition priming status from ACM-R
rApp Manager checks with DME for the unknown information type from rApp package
rApp Manager get the information type availability from DME
API user provided with the status of rApp priming
Delete rAppAPI user request to Deprime rApp
rApp Manager request ACM-R to deprime the ACM composition
rApp Manager get the status of ACM composition depriming.
rApp Manager requests ACM-R to delete the ACM composition
rApp Manager gets the status of ACM composition deletion
API user provided with the deprime rApp status.
API user request to delete the rApp
rApp Manager validates that the rApp is in COMMISSIONED state and
there is no rApp Instances are available.
API User provided with delete rApp status
| |
|---|
rApp Instance flow
Create rApp InstanceAPI user request to create rApp Instance with the resource details from rApp package
API user get the rApp instance creation response
Deploy rApp InstanceAPI user request to deploy rApp instance
rApp Manager fetches the rApp package from file system and fetches the
resources mentioned in the rApp instance.
rApp Manager request ACM-R with the necessary details from rApp package to
Instantiate ACM instance
rApp Manager gets instantiate ACM instance response
rApp Manager request ACM-R to deploy ACM instance
ACM-R deploys the A1PMS instance if it is configured in the ACM instance
ACM-R gets the A1PMS deployment status
ACM-R deploys the Kserve instance if it is configured in the ACM instance
ACM-R gets the Kserve deployment status
ACM-R deploys the Kubernetes instance if it is configured in the ACM instance
ACM-R gets the Kubernetes deployment status
ACM-R deploys the DME instance if it is configured in the ACM instance
ACM-R gets the DME deployment status
rApp Manager gets ACM deployment status
rApp Manager request SME to create the entities in rApp instance
SME creates the entities provided by rApp Manager
rApp manager get the response of SME entities creation
API user provided with the status of rApp instance deployment. rApp Manager combines
the status of ACM deployment and SME deployment to provide the rApp instance status.
Undeploy rApp InstanceAPI user request to undeploy rApp instance
rApp Manager fetches the rApp and rApp instance details
rApp Manager request ACM-R to undeploy the ACM instance
ACM-R undeploy the A1PMS instance if it is already deployed
ACM-R gets the A1PMS undeploy status
ACM-R undeploy the Kserve instance if it is already deployed
ACM-R gets the Kserve undeploy status
ACM-R undeploy the Kubernetes instance if it is already deployed
ACM-R gets the Kubernetes undeploy status
ACM-R undeploy the DME instance if it is already deployed
ACM-R gets the DME undeploy status
rApp Manager get ACM undeploy status
rApp Manager request ACM-R to delete the ACM instance
rApp Manager get response of ACM instance deletion
rApp Manager request SME to delete SME entities
SME deletes the entities created as part of rApp
rApp Manager get the response of SME entities deletion
API user get the status of undeploy rApp instance
Delete rApp InstanceAPI user request rApp Manager to delete rApp Instance
API user gets delete rApp instance response
| |
|---|
Create rApp InstanceAPI user request to create rApp Instance with the resource details from rApp package
API user get the rApp instance creation response
Deploy rApp InstanceAPI user request to deploy rApp instance
rApp Manager fetches the rApp package from file system and fetches the
resources mentioned in the rApp instance.
rApp Manager request ACM-R with the necessary details from rApp package to
Instantiate ACM instance
rApp Manager gets instantiate ACM instance response
rApp Manager request ACM-R to deploy ACM instance
ACM-R deploys the A1PMS instance if it is configured in the ACM instance
ACM-R gets the A1PMS deployment status
ACM-R deploys the Kserve instance if it is configured in the ACM instance
ACM-R gets the Kserve deployment status
ACM-R deploys the Kubernetes instance if it is configured in the ACM instance
ACM-R gets the Kubernetes deployment status
ACM-R deploys the DME instance if it is configured in the ACM instance
ACM-R gets the DME deployment status
rApp Manager gets ACM deployment status
rApp Manager request SME to create the entities in rApp instance
SME creates the entities provided by rApp Manager
rApp manager get the response of SME entities creation
API user provided with the status of rApp instance deployment. rApp Manager combines
the status of ACM deployment and SME deployment to provide the rApp instance status.
Undeploy rApp InstanceAPI user request to undeploy rApp instance
rApp Manager fetches the rApp and rApp instance details
rApp Manager request ACM-R to undeploy the ACM instance
ACM-R undeploy the A1PMS instance if it is already deployed
ACM-R gets the A1PMS undeploy status
ACM-R undeploy the Kserve instance if it is already deployed
ACM-R gets the Kserve undeploy status
ACM-R undeploy the Kubernetes instance if it is already deployed
ACM-R gets the Kubernetes undeploy status
ACM-R undeploy the DME instance if it is already deployed
ACM-R gets the DME undeploy status
rApp Manager get ACM undeploy status
rApp Manager request ACM-R to delete the ACM instance
rApp Manager get response of ACM instance deletion
rApp Manager request SME to delete SME entities
SME deletes the entities created as part of rApp
rApp Manager get the response of SME entities deletion
API user get the status of undeploy rApp instance
Delete rApp InstanceAPI user request rApp Manager to delete rApp Instance
API user gets delete rApp instance response
| |
|---|
Sample rApp package structure
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)Consumer Information Types - Files/Dme/consumerinfotypes
Producer information Types - Files/Dme/producerinfotypes
Information Consumers - Files/Dme/infoconsumers
Information Producers - Files/Dme/infoproducers
SME (Files/Sme)Providers Functions - Files/Sme/providers
Service Api - Files/Sme/serviceapis
Invokers - Files/Sme/invokers
| | |
|---|
ACM (Files/Acm)DME (Files/Dme)Consumer Information Types - Files/Dme/consumerinfotypes
Producer information Types - Files/Dme/producerinfotypes
Information Consumers - Files/Dme/infoconsumers
Information Producers - Files/Dme/infoproducers
SME (Files/Sme)Providers Functions - Files/Sme/providers
Service Api - Files/Sme/serviceapis
Invokers - Files/Sme/invokers
| | |
|---|
CSAR File Generation
CSAR file generator is available in the rAppmanager repository here (i-release).
"rappmanager/csar-generator/resources" folder contains the resources to build the rApp package.
The contents of the "resources" directory can be modified as required and the package can be generated as shown below,
Linux: Generate rApp package
Windows: Generate rApp package
This will generate a package named "rapp.csar". It can be renamed as required.
This generated package can be used with rApp Manager to create rApp.
Deployment Instructions
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
Pre-requisites
Environment setup
The installation scripts shown here installs all the required components.
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
| | |
|---|
A1PMS_HOST
| Address of the A1PMS.
It will be accessed from A1PMS participant.
| http://policymanagementservice.nonrtric:9080
|
|---|
CHART_REPO_HOST
| Address of the chart repository.
It will be used by Kubernetes participant.
| http://IP_ADDRESS:8879/charts
IP_ADDRESS: IP of the host in which
the installation scripts are running.
|
|---|
Installation
All components can be installed using the command below,
Individual components can be installed using the commands below,
To install the tools required for other installer scripts.
To install the ACM, and it's related components.
To install the Kserve, and it's related components.
To installs the NONRTRIC components.
Installed Components
The below components should be up and running for the rApp Manager integrations to work properly.
Istio components
Cert Manager components
Kserve components
ACM Components
NONRTRIC Components
Troubleshooting
If Kserve installation failed or end up in the below state after "install-all.sh", Try run "patch-kserve.sh" script after "install-all.sh"
Uninstallation
To uninstall all the components