From 70fee1870d1c7d3e8bcf600118372363ef927df8 Mon Sep 17 00:00:00 2001 From: JohnKeeney Date: Mon, 22 Jan 2024 14:04:31 +0000 Subject: [PATCH] CCSDK-ORAN - Update Docs for/after Montreal Issue-ID: CCSDK-3966 Change-Id: I5caa987035788fdc6c03c0636922fc9d046644aa Signed-off-by: JohnKeeney --- LICENSE.txt | 11 ++-- README.md | 12 ++++- a1-policy-management/README.md | 41 ++++++++------ docs/architecture/architecture.rst | 3 +- docs/consumedapis/consumedapis.rst | 5 +- docs/guide/developer-guide.rst | 5 +- docs/humaninterfaces/humaninterfaces.rst | 3 +- .../ONAP-A1ControllerArchitecture-Montreal.png | Bin 0 -> 57021 bytes docs/releasenotes/release-notes.rst | 60 +++++++++++++++++++-- 9 files changed, 110 insertions(+), 30 deletions(-) create mode 100644 docs/media/ONAP-A1ControllerArchitecture-Montreal.png diff --git a/LICENSE.txt b/LICENSE.txt index 117bfdae..58a95690 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,8 +1,9 @@ /* -* ============LICENSE_START========================================== -* =================================================================== -* Copyright © 2020 Nordix Foundation. All rights reserved. -* =================================================================== +* ============LICENSE_START=============================================== +* ======================================================================== +* Copyright © 2020-2023 Nordix Foundation. All rights reserved. +* Copyright © 2023-2024 OpenInfra Foundation Europe. All rights reserved. +* ======================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -14,5 +15,5 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. -* ============LICENSE_END============================================ +* ============LICENSE_END================================================= * diff --git a/README.md b/README.md index d87b35fb..884631a1 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,14 @@ This source repository contains the code for the ORAN A1 related components. +More information on the CCSDK A1 Policy Management Service can be found in the 'a1-policy-management' sub-directory. + +More information on the CCSDK A1-Adapter controller extension can be found in the 'a1-adapter' subdirectory. + +See also additional information at: + - https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP + - https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/index.html + ## Prerequisits To compile this code: @@ -12,7 +20,9 @@ To compile this code: ## License -Copyright (C) 2022 Nordix Foundation. +Copyright (C) 2022-2023 Nordix Foundation. All rights reserved. +Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at diff --git a/a1-policy-management/README.md b/a1-policy-management/README.md index 1457d02b..3b784a4f 100644 --- a/a1-policy-management/README.md +++ b/a1-policy-management/README.md @@ -1,15 +1,21 @@ # ONAP ccsdk-oran A1 Policy Management Service -The A1 Policy Management Service provides a REST API for management of policies. -It provides support for: - -Supervision of clients (R-APPs) to eliminate stray policies in case of failure - -Consistency monitoring of the SMO view of policies and the actual situation in the RICs - -Consistency monitoring of RIC capabilities (policy types) - -Policy configuration. This includes: - -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 A1 Policy Management Service is a micro service which maintains a transient repository of: + - All A1 policies instances in the network. Each policy is targeted to a near-RT-RIC instance and is owned by a 'service' (or 'rApp'). + - All near-RT-RICs in the network. + - All Policy types supported by each near-RT-RIC. + +The service provides : + - Unified REST API for managing A1 Policies in all near-RT-RICs. + - Synchronized view of A1 Policy instances for each rApp/Client + - Synchronized view of A1 Policy instances in each near-RT-RIC + - Synchronized view of A1 Policy types supported by each near-RT-RIC + - Lookup service to find the near-RT-RIC to control resources in the RAN as defined in O1 (e.g. which near-RT-RIC should be accessed to control a certain CU or DU, which in turn controls a certain cell). + - Monitors all near-RT-RICs and maintains data consistency – e.g. recovery from near-RT-RIC restarts + - Support for different Southbound APIs to the near-RT-RICs (different versions of the A1-P application protocol and other similar APIs). + - HTTPS can be configured to use a supplied certificate/private key and to validate peers towards a list of trusted CAs/certs. + - HTTP proxy support for tunneling HTTP/HTTPS connections. + - Fine-grained access-control - with new optional callouts to an external auth function The Policy Management Service uses the default keystore and truststore that are built into the container. The paths and passwords for these stores are located in a yaml file: oran/a1-policy-management/config/application.yaml @@ -21,9 +27,9 @@ The default keystore, truststore, and application.yaml files can be overridden b Assuming that the keystore, truststore, and application.yaml files are located in the same directory as docker-compose, the volumes field should have these entries: volumes: - - ./new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks:ro - - ./new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks:ro - - ./new_application.yaml:/opt/app/policy-agent/config/application.yaml:ro + - ./new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks:ro + - ./new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks:ro + - ./new_application.yaml:/opt/app/policy-agent/config/application.yaml:ro The target paths in the container should not be modified. @@ -32,22 +38,27 @@ It is also possible to configure a HTTP(S) Proxy for southbound connections. Thi Example docker run command for mounting new files (assuming they are located in the current directory): docker run -p 8081:8081 -p 8433:8433 --name=PMS-container --network=oran-docker-net --volume "$PWD/new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks" --volume "$PWD/new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks" --volume "$PWD/new_application.yaml:/opt/app/policy-agent/config/application.yaml" onap/ccsdk-oran-a1policymanagementservice:1.0.0-SNAPSHOT -To Run Policy Management Service in Local: +To run A1 Policy Management Service in a local environment: In the folder /opt/app/policy-agent/config/, create a soft link with below command, ln -s application_configuration.json -The Policy Management Service can be run stand alone in a simulated test mode. Then it simulates RICs. +The A1 Policy Management Service can be run stand alone in a simulated test mode. Then it simulates RICs. The REST API is published on port 8081 and it is started by command: mvn -Dtest=MockPolicyManagementService test The backend server publishes live API documentation at the URL `http://your-host-name-here:8081/swagger-ui.html` +More information about the ONAP CCSDK A1 Policy Management Service can be found at: + - https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP + - https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/index.html + ## License ONAP : ccsdk oran Copyright (C) 2019-2023 Nordix Foundation. All rights reserved. +Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at diff --git a/docs/architecture/architecture.rst b/docs/architecture/architecture.rst index d1e770be..bf47c91c 100755 --- a/docs/architecture/architecture.rst +++ b/docs/architecture/architecture.rst @@ -1,5 +1,6 @@ .. SPDX-License-Identifier: CC-BY-4.0 -.. Copyright 2023 Nordix Foundation +.. Copyright 2023 Nordix Foundation. All rights reserved. +.. Copyright 2024 OpenInfra Foundation Europe. All rights reserved. .. _architecture: diff --git a/docs/consumedapis/consumedapis.rst b/docs/consumedapis/consumedapis.rst index edb2084a..4f9fea4e 100755 --- a/docs/consumedapis/consumedapis.rst +++ b/docs/consumedapis/consumedapis.rst @@ -1,5 +1,6 @@ .. SPDX-License-Identifier: CC-BY-4.0 -.. Copyright 2023 Nordix Foundation +.. Copyright 2023 Nordix Foundation. All rights reserved. +.. Copyright 2024 OpenInfra Foundation Europe. All rights reserved. Consumed APIs ============= @@ -15,7 +16,7 @@ O-RAN A1 Interface for A1 Policies (A1-P) Southbound, the ONAP A1 Policy functions communicate with *near-RT RIC* RAN functions using the **A1** interface, as defined by the `O-RAN Alliance `_ The *A1 Interface - Application Protocol Specification (A1-AP)* describes this interface. The specification can be viewed from the `O-RAN Alliance `_ website. -The **London** ONAP A1 Policy functions implement the *A1 Policy* (*A1-P*) parts of A1-AP, supporting versions *v1.1*, *v2.0* and *v3.0*. +The **Montreal** ONAP A1 Policy functions implement the *A1 Policy* (*A1-P*) parts of A1-AP, supporting versions *v1.1*, *v2.0* and *v3.0*. An opensource implementation of a `near-RT RIC `_ is available from the `O-RAN Software Community `_. It supports a pre-spec version of the A1-AP. The ONAP A1 Policy functions described here also supports this A1 version (*A1-OSC*). diff --git a/docs/guide/developer-guide.rst b/docs/guide/developer-guide.rst index e9882a2d..2230c0f4 100644 --- a/docs/guide/developer-guide.rst +++ b/docs/guide/developer-guide.rst @@ -1,6 +1,7 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 -.. Copyright (C) 2023 Nordix Foundation. +.. Copyright 2023 Nordix Foundation. All rights reserved. +.. Copyright 2024 OpenInfra Foundation Europe. All rights reserved. .. _developer_guide: @@ -9,7 +10,7 @@ Developer Guide This document provides a quickstart for developers of the CCSDK functions for O-RAN A1 Policies. -.. image:: ../media/ONAP-A1ControllerArchitecture-London.png +.. image:: ../media/ONAP-A1ControllerArchitecture-Montreal.png :width: 500pt Source tree diff --git a/docs/humaninterfaces/humaninterfaces.rst b/docs/humaninterfaces/humaninterfaces.rst index be271b43..a68962b8 100644 --- a/docs/humaninterfaces/humaninterfaces.rst +++ b/docs/humaninterfaces/humaninterfaces.rst @@ -1,5 +1,6 @@ .. SPDX-License-Identifier: CC-BY-4.0 -.. Copyright 2022 Nordix Foundation +.. Copyright 2022-2023 Nordix Foundation. All rights reserved. +.. Copyright 2024 OpenInfra Foundation Europe. All rights reserved. Human Interfaces diff --git a/docs/media/ONAP-A1ControllerArchitecture-Montreal.png b/docs/media/ONAP-A1ControllerArchitecture-Montreal.png new file mode 100644 index 0000000000000000000000000000000000000000..f2d4c602eaf8b2c4cc0670c483ace59adfae1e3a GIT binary patch literal 57021 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 literal 0 HcmV?d00001 diff --git a/docs/releasenotes/release-notes.rst b/docs/releasenotes/release-notes.rst index cca6f553..0690800c 100644 --- a/docs/releasenotes/release-notes.rst +++ b/docs/releasenotes/release-notes.rst @@ -2,6 +2,8 @@ .. 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 .. Copyright (C) 2023 Nordix Foundation. +.. Copyright (C) 2024 OpenInfra Foundation Europe. + .. _release_notes: ============= @@ -9,14 +11,14 @@ Release-Notes ============= This document provides the release notes for the release of the different parts -of the ORAN project. +of the CCSDK ORAN project. .. contents:: :depth: 3 :local: -Version history Policy Management Service -========================================= +Version history A1 Policy Management Service +============================================ +------------+----------+-------------+-------------------+ | **Date** | **Ver.** | **Author** | **Comment** | @@ -91,6 +93,12 @@ Version history Policy Management Service | 2023-04-26 | 1.5.0 | Dan Timoney | RC version, | | | | | London Release | +------------+----------+-------------+-------------------+ +| 2023-11-10 | 1.6.0 | Dan Timoney | RC version, | +| | | | Montreal Release | ++------------+----------+-------------+-------------------+ +| 2023-11-27 | 1.6.1 | Dan Timoney | Release version, | +| | | | Montreal Release | ++------------+----------+-------------+-------------------+ Version history A1 Adapter ========================== @@ -168,6 +176,12 @@ Version history A1 Adapter | 2023-04-26 | 1.5.0 | Dan Timoney | RC version, | | | | | London Release | +------------+----------+-------------+-------------------+ +| 2023-11-10 | 1.6.0 | Dan Timoney | RC version, | +| | | | Montreal Release | ++------------+----------+-------------+-------------------+ +| 2023-11-27 | 1.6.1 | Dan Timoney | Release version, | +| | | | Montreal Release | ++------------+----------+-------------+-------------------+ Release Data ============ @@ -608,3 +622,43 @@ London, Release 1.5.0 | **Purpose of the delivery** | Improvements, London Release, 1.5.0 version | | | | +-----------------------------+-----------------------------------------------------+ + + +Montreal, Release 1.6.0 +----------------------- ++-----------------------------+-----------------------------------------------------+ +| **Project** | CCSDK ORAN | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Repo/commit-ID** | ccsdk-oran/376ac6d1d25fa69016a92ddf47794ad3e3691a8b | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release designation** | Montreal, RC | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release date** | 2023-11-10 | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Purpose of the delivery** | Improvements, Montreal RC, 1.6.0 version | +| | | ++-----------------------------+-----------------------------------------------------+ + + +Montreal, Release 1.6.1 +----------------------- ++-----------------------------+-----------------------------------------------------+ +| **Project** | CCSDK ORAN | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Repo/commit-ID** | ccsdk-oran/80e8366498e34302afe7e85db6d345e148571712 | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release designation** | Montreal, RC | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release date** | 2023-11-27 | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Purpose of the delivery** | Improvements, Montreal Release, 1.6.1 version | +| | | ++-----------------------------+-----------------------------------------------------+ -- 2.16.6