.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

=============
Release-Notes
=============


This document provides the release notes for the release of the different parts of the Non-RT RIC.

.. contents::
   :depth: 3
   :local:


Version history Dashboard
=========================

+--------------------+--------------------+--------------------+--------------------+
| **Date**           | **Ver.**           | **Author**         | **Comment**        |
|                    |                    |                    |                    |
+--------------------+--------------------+--------------------+--------------------+
| 2019-11-12         | 0.1.0              | Maxime Bonneau     | First draft        |
|                    |                    |                    |                    |
+--------------------+--------------------+--------------------+--------------------+
|                    | 0.1.1              |                    |                    |
|                    |                    |                    |                    |
+--------------------+--------------------+--------------------+--------------------+
|                    | 1.0                |                    |                    |
|                    |                    |                    |                    |
+--------------------+--------------------+--------------------+--------------------+
| 2020-02-03         | 1.1                | Henrik Andersson   | Amber Maintenance  |
|                    |                    |                    | Release            |
+--------------------+--------------------+--------------------+--------------------+

Summary
-------

For Amber release, there is only a dashboard available. Non-RT RIC does not support R-apps yet.

The Non-RT RIC is not yet fully compliant with the A1 specifications for this release. Find out which methods are available `here`_.

.. _here: a1_policy_procedure

Version history Policy Agent
============================

+--------------------+--------------------+--------------------+--------------------+
| **Date**           | **Ver.**           | **Author**         | **Comment**        |
|                    |                    |                    |                    |
+--------------------+--------------------+--------------------+--------------------+
| 2020-02-03         | 1.0.0              | Henrik Andersson   | First version      |
|                    |                    |                    | Amber Maintenance  |
|                    |                    |                    | Release            |
+--------------------+--------------------+--------------------+--------------------+


Version history Near-RT RIC Simulator
=====================================

+--------------------+--------------------+--------------------+--------------------+
| **Date**           | **Ver.**           | **Author**         | **Comment**        |
|                    |                    |                    |                    |
+--------------------+--------------------+--------------------+--------------------+
| 2019-11-12         | 0.1.0              | Maxime Bonneau     | First draft        |
|                    |                    |                    |                    |
+--------------------+--------------------+--------------------+--------------------+
|                    | 0.1.1              |                    |                    |
|                    |                    |                    |                    |
+--------------------+--------------------+--------------------+--------------------+
|                    | 1.0                |                    |                    |
|                    |                    |                    |                    |
+--------------------+--------------------+--------------------+--------------------+
| 2020-02-03         | 1.1                | Henrik Andersson   | Amber Maintenance  |
|                    |                    |                    | Release            |
+--------------------+--------------------+--------------------+--------------------+

Summary
-------
First version with support for R-apps to register and send A1 commands to Near-RT RICs.


Version history SDNC A1 Controller
==================================

+--------------------+--------------------+--------------------+--------------------+
| **Date**           | **Ver.**           | **Author**         | **Comment**        |
|                    |                    |                    |                    |
+--------------------+--------------------+--------------------+--------------------+
| 2019-11-12         | 1.7.3              | Maxime Bonneau     |                    |
|                    |                    |                    |                    |
+--------------------+--------------------+--------------------+--------------------+
| 2020-02-03         | 1.7.4              | Henrik Andersson   | Amber Maintenance  |
|                    |                    |                    | Release            |
+--------------------+--------------------+--------------------+--------------------+


Release Data
============

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               |
|                                      |                                      |
+--------------------------------------+--------------------------------------+

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           |
+--------------------------------------+--------------------------------------+

