Policy Agent
============
+
The Policy Agent provides common functionality useful for R-Apps, for instance:
* A repository of available Near-T RICs, their policy types and policy instances.
* An A1 connection to he Near-RT RICs.
See the README.md file in the nonrtric/policy-agent repo for info about how to use it.
-API Functins
-------------
+API Functions
+-------------
+
See the following document for the Policy Agent API: nonrtric/policy-agent/docs/api.doc.
Near-RT RIC Simulator
=====================
+
A simulator that simulates a Near-RT RIC, with a termination of the A1 interface. It also provides an administrative API to manage types and instances so it can be programatically set up for use in tests.
See the README.md file in the nonrtric/near-rt-ric-simulator repo for info about how to use it.
API Functions
-------------
+
See the admnistrative API in: nonrtric/near-rt-ric-simulator/ric-plt/a1/main.py.
Sdnc A1 Controller
==================
+
An ONAP SDNC Controller for the A1 interface.
See the README.md file in the nonrtric/sdnc-a1-controller repo for info about how to use it.
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. SPDX-License-Identifier: CC-BY-4.0
-SDNC A1 Controller Developer Guide
-==================================
+Developer Guide
+===============
+This document provides a quickstart for developers of the Non-RT RIC.
-This document provides a quickstart for developers of the O-RAN SC A1 Controller SDNC Application
+SDNC A1 Controller
+==================================
Prerequisites
-------------
4. Docker, version 19.03.1 or later
5. Docker Compose, version 1.24.1 or later
+Build and run
+-------------
Go to the northbound directory and run this command ::
mvn clean install
Credentials: admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
Policy Agent
-=====================================
+============================
The O-RAN NonRT RIC PolicyAgent provides a REST API for management of policices. It provides support for:
* Supervision of clients (R-APPs) to eliminate stray policies in case of failure
* One REST API towards all RICs in the network
* Query functions that can find all policies in a RIC, all policies owned by a service (R-APP), all policies of a type etc.
* Maps O1 resources (ManagedElement) as defined in O1 to the controlling RIC.
-
-The PolicyAgent can be accessed over the REST API or through the DMaaP Interface. The REST API is documented in the *nonrtric/policy-agent/docs/api.yaml* file. Please Refer README file of PolicyAgent to know more about the API's.
+
+| The PolicyAgent can be accessed over the REST API or through the DMaaP Interface. The REST API is documented in the
+| *nonrtric/policy-agent/docs/api.yaml* file. Please refer to the README file of PolicyAgent to know more about the API's.
-Near-RT RIC Simulator Developer Guide
+Near-RT RIC Simulator
=====================================
+
Prerequisites
-------------
+ 1. Java development kit (JDK), version 8
+ 2. Maven dependency-management tool, version 3.4 or later
-1. Java development kit (JDK), version 8
-2. Maven dependency-management tool, version 3.4 or later
+Build and run
+-------------
-Go to the nearric-simulator/ directory and run this command ::
+Go to the near-rt-ric-simulator/ directory and run this command::
mvn clean install
+The docker image can be built using::
+ docker build -t {desiredImageName} .
+The image can be run using the command::
+ docker run -it -p {desiredPort}:8085 {desiredImageName}
-If you want to genereate the sources from A1 yaml file, Go to nearric-simulator/a1-med-api/ and run this command ::
- mvn generate-sources
-
-This will generate the A1PApi.java you need to call the generate-sources maven life cycle to generate the file
-
-The backend server listens for requests at this URL:
- http://localhost:8080
+The functions written in *a1.py* are the ones matching the requests listed in the A1 open api yaml file. The functions written in *main.py* are the ones used for development purpose.
-The backend server publishes live API documentation at the URL
- http://localhost:8080/swagger-ui.html
+Different error codes can be thrown back according to the yaml file. In order to simulate an error code, simply add the query ?code={desiredCodeNumber} at the end of the address in the curl request.
End-to-end call
===============
.. SPDX-License-Identifier: CC-BY-4.0
-..please write your project overview
-..please delete this content after editing
-
-
-Non-RT RIC Overview
-===================
+Requirements for the Non-RT RIC project
+==========================================
Find detailed description of what Non-RT RIC is on this `page`_.
.. _page: https://wiki.o-ran-sc.org/display/RICNR/
-A-release architecture
-----------------------
-
-The architecture is as shown on the following picture:
-
-.. image:: ./images/architecture.png
- :scale: 50 %
-
-The A1 controller is located in SDNC, an ONAP component. It communicates with ORAN via the A1 interface with the Near-RT RIC simulator.
-
-On the other end, it is accessible via a dashboard, that allows to interact with policies. The dashboard itself is split into the backend and the frontend, and can be deployed following the instructions on the `human interfaces page`_.
-
-.. _human interfaces page: ./human-interfaces.html
-
-Requirements for the Non-RT RIC project
----------------------------------------
-
There are functional requirements emitted by O-RAN WG2 for the Non-RT RIC, which are the following:
-1. Non-RT RIC shall support data retrieval and analysis; the data may include performance, configuration or other data related to the application (recommended data shown in required data section for different use cases).
-2. Non-RT RIC shall support relevant AI/ML model training based on the data in 1. for non-real-time optimization of configuration parameters in RAN or Near-RT RIC, as applicable for the use case.
-3. Non-RT RIC shall support relevant AI/ML model training based on the data in 1. for generating/optimizing policies and intents to guide the behavior of applications in Near-RT RIC or RAN, as applicable for the use case.
-4. Non-RT RIC shall support training of relevant AI/ML models based on the data in 1. to be deployed/updated in Near-RT RIC as required by the applications.
-5. Non-RT RIC shall support performance monitoring and evaluation.
-6. Non-RT RIC shall support a fallback mechanism to prevent drastic degradation/fluctuation of performance, e.g. to restore to the previous policy or configuration.
+#. Non-RT RIC shall support data retrieval and analysis; the data may include performance, configuration or other data related to the application (recommended data shown in required data section for different use cases).
+#. Non-RT RIC shall support relevant AI/ML model training based on the data in 1. for non-real-time optimization of configuration parameters in RAN or Near-RT RIC, as applicable for the use case.
+#. Non-RT RIC shall support relevant AI/ML model training based on the data in 1. for generating/optimizing policies and intents to guide the behavior of applications in Near-RT RIC or RAN, as applicable for the use case.
+#. Non-RT RIC shall support training of relevant AI/ML models based on the data in 1. to be deployed/updated in Near-RT RIC as required by the applications.
+#. Non-RT RIC shall support performance monitoring and evaluation.
+#. Non-RT RIC shall support a fallback mechanism to prevent drastic degradation/fluctuation of performance, e.g. to restore to the previous policy or configuration.
The non-functional requirements are the following ones:
-1. Non-RT RIC shall not update the same policy or configuration parameter for a given near-RT RIC or RAN function more often than once per second.
-2. Non-RT RIC shall be able to update policies in several near-RT RICs.
+#. Non-RT RIC shall not update the same policy or configuration parameter for a given near-RT RIC or RAN function more often than once per second.
+#. Non-RT RIC shall be able to update policies in several near-RT RICs.
Moreover, there are functional requirements regarding the A1 interface:
-1. A1 interface shall support communication of policies/intents from Non-RT RIC to Near-RT RIC.
-2. A1 interface shall support AI/ML model deployment and update from Non-RT RIC to Near-RT RIC.
-3. A1 interface shall support communication of enrichment information from Non-RT RIC to Near-RT RIC.
-4. A1 interface shall support feedback from Near-RT RIC for monitoring AI/ML model performance.
-5. A1 interface shall support the policy/intents feedback from Near-RT RIC to Non-RT RIC.
-
-.. _a1_policy_procedure:
+#. A1 interface shall support communication of policies/intents from Non-RT RIC to Near-RT RIC.
+#. A1 interface shall support AI/ML model deployment and update from Non-RT RIC to Near-RT RIC.
+#. A1 interface shall support communication of enrichment information from Non-RT RIC to Near-RT RIC.
+#. A1 interface shall support feedback from Near-RT RIC for monitoring AI/ML model performance.
+#. A1 interface shall support the policy/intents feedback from Near-RT RIC to Non-RT RIC.
A1 policy procedure
-------------------
+---------------------+--------------------------+--------------------------+
| Notify policy | POST | POST |
+---------------------+--------------------------+--------------------------+
+
+Policy Agent Overview
+=======================
+
+The Policy Agent maintains a transient ropository of the following items to support R-Apps:
+
+ * All NearRT RICs in the network. This information is configured using the ONAP CDS database (which is using the Cloudify Consul database).
+ * All Policy types for all NearRT RICs
+ * All configured Policy instances in the network
+
+It provides an NBI for the R-Apps (and for the dashboard) for policy management. This is a REST API.
+As an option, policy management can also be done via asynchronous messages through ONAP/Dmaap.
+The NBI provides support for an R-APP to locate the correct NearRT RIC based on identifiers as defined in O1.
+
+The agent monitors all Near-RT RICs and recovers from data inconsistencies, which may happen when (for instance) an Near-RT RIC restarts.
+
+The R-Apps can be monitored so that their Policies can be automatically removed when an R-App is stopped/removed.
+
+On its southbound side the agent can connect to a number of different A1 providers:
+
+ * Directly to the NonRT RIC:
+
+ - OSC API, which is influenced by the A1 standard
+ - The NonRT RIC simulator, which supports the A1 standard with a number of not yet CRs included.
+ * To an ONAP style controller.
+
+Amber release Policy Agent architecture
+-----------------------------------------
+
+.. image:: ./images/NonRtRicComponents.png
+ :scale: 50 %
+
+NonRT RIC components:
+
+ #. Non-RT RIC Dashboard
+ #. Policy agent
+ #. SDNC A1 Controller
+ #. Near-RT RIC Simulator
+
+Dashboard Overview
+===================
+
+The NonRT RIC Dashboard is a graphical user user interface that enables the user to manage the Policies in the network. The dashboard interacts with the Policy agent via a REST API.
+The dashboard generates its GUI from JSON schemas in a model driven fashion.
+
+The dashboards consists of a back end implemented as a Java Springboot application and a fronted developed using the Angular framework.
+
+Amber release Dashboard architecture
+-----------------------------------------
+
+The architecture of the dashboardis as shown on the following picture:
+
+.. image:: ./images/architecture.png
+ :scale: 50 %
+
+The dashboard itself is split
+into the backend and the frontend, and can be deployed following the instructions in the README.md file in the repo.
\ No newline at end of file
| 2019-11-12 | 1.7.3 | Maxime Bonneau | |
| | | | |
+--------------------+--------------------+--------------------+--------------------+
-| 2020-02-03 | 1.7.4 | Henrik Andersson | Amber Maintenance |
+| 2020-02-04 | 1.7.4 | Henrik Andersson | Amber Maintenance |
| | | | Release |
+--------------------+--------------------+--------------------+--------------------+
Amber
-----
-+--------------------------------------+--------------------------------------+
-| **Project** | Non-RT RIC |
-| | |
-+--------------------------------------+--------------------------------------+
-| **Repo/commit-ID** | nonrtric/ec382949 |
-| | |
-+--------------------------------------+--------------------------------------+
-| **Release designation** | Amber |
-| | |
-+--------------------------------------+--------------------------------------+
-| **Release date** | 2019-11-22 |
-| | |
-+--------------------------------------+--------------------------------------+
-| **Purpose of the delivery** | Introducing Non-RT RIC |
-| | |
-+--------------------------------------+--------------------------------------+
++--------------------------------------+--------------------------------------------------+
+| **Project** | Non-RT RIC |
+| | |
++--------------------------------------+--------------------------------------------------+
+| **Repo/commit-ID** | nonrtric/ec3829493c0b71c5e5908a430edd1e493504178e|
+| | |
++--------------------------------------+--------------------------------------------------+
+| **Release designation** | Amber |
+| | |
++--------------------------------------+--------------------------------------------------+
+| **Release date** | 2019-11-22 |
+| | |
++--------------------------------------+--------------------------------------------------+
+| **Purpose of the delivery** | Introducing Non-RT RIC |
+| | |
++--------------------------------------+--------------------------------------------------+
Amber Maintenance
-----------------
-+--------------------------------------+--------------------------------------+
-| **Project** | Non-RT RIC |
-| | |
-+--------------------------------------+--------------------------------------+
-| **Repo/commit-ID** | nonrtric/ |
-| | |
-+--------------------------------------+--------------------------------------+
-| **Release designation** | Amber Maintenance Release |
-| | |
-+--------------------------------------+--------------------------------------+
-| **Release date** | 2020-02-03 |
-| | |
-+--------------------------------------+--------------------------------------+
-| **Purpose of the delivery** | Introducing Policy Agent and |
-| | updating to latest A1 spec |
-+--------------------------------------+--------------------------------------+
++--------------------------------------+--------------------------------------------------+
+| **Project** | Non-RT RIC |
+| | |
++--------------------------------------+--------------------------------------------------+
+| **Repo/commit-ID** | nonrtric/08691d2192981c302a5528669fdb71e48cb3dcbc|
+| | |
++--------------------------------------+--------------------------------------------------+
+| **Release designation** | Amber Maintenance Release |
+| | |
++--------------------------------------+--------------------------------------------------+
+| **Release date** | 2020-02-03 |
+| | |
++--------------------------------------+--------------------------------------------------+
+| **Purpose of the delivery** | Introducing Policy Agent and |
+| | updating to latest A1 spec |
++--------------------------------------+--------------------------------------------------+
<properties>
<image.name>onap/sdnc-aaf-image</image.name>
<standalone.image.name>o-ran-sc/nonrtric-a1-controller</standalone.image.name>
+ <standalone.image.version>1.7.4-SNAPSHOT</standalone.image.version>
<sdnc.project.version>${project.version}</sdnc.project.version>
<sdnc.build.timestamp>${maven.build.timestamp}</sdnc.build.timestamp>
<sdnc.northbound.version>1.7.3-SNAPSHOT</sdnc.northbound.version>
<configuration>
<images>
<image>
- <name>${standalone.image.name}:${project.version}</name>
+ <name>${standalone.image.name}:${standalone.image.version}</name>
<build>
<cleanup>try</cleanup>
<dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
<dockerFile>standalone.Dockerfile</dockerFile>
<tags>
- <tag>${project.version}</tag>
+ <tag>${standalone.image.version}</tag>
</tags>
</build>
</image>
<pushRegistry>${env.CONTAINER_PUSH_REGISTRY}</pushRegistry>
<images>
<image>
- <name>${standalone.image.name}:${project.version}</name>
+ <name>${standalone.image.name}:${standalone.image.version}</name>
<build>
<cleanup>try</cleanup>
<dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
<dockerFile>standalone.Dockerfile</dockerFile>
<tags>
- <tag>${project.version}</tag>
+ <tag>${standalone.image.version}</tag>
</tags>
</build>
</image>
max-file: "5"
a1-controller:
- image: o-ran-sc/nonrtric-a1-controller:1.7.3-SNAPSHOT
+ image: o-ran-sc/nonrtric-a1-controller:1.7.4-SNAPSHOT
depends_on :
- db
container_name: a1-controller-container