From c86b5aeaba70df89d89bdeec1f77ebea5a9efe7b Mon Sep 17 00:00:00 2001 From: JohnKeeney Date: Fri, 28 Jul 2023 19:25:14 +0100 Subject: [PATCH] Update documentation for London & into Montreal Issue-ID: CCSDK-3823 Signed-off-by: JohnKeeney Change-Id: I638969a7ffecc74c6837e0311179eae4af4b0222 --- docs/architecture/architecture.rst | 16 ++--- docs/consumedapis/consumedapis.rst | 11 ++- docs/guide/developer-guide.rst | 79 +++++++++++---------- docs/index.rst | 2 +- .../media/ONAP-A1ControllerArchitecture-London.png | Bin 0 -> 57021 bytes docs/releasenotes/release-notes.rst | 8 +-- 6 files changed, 59 insertions(+), 57 deletions(-) create mode 100644 docs/media/ONAP-A1ControllerArchitecture-London.png diff --git a/docs/architecture/architecture.rst b/docs/architecture/architecture.rst index edb9d346..d1e770be 100755 --- a/docs/architecture/architecture.rst +++ b/docs/architecture/architecture.rst @@ -1,5 +1,5 @@ .. SPDX-License-Identifier: CC-BY-4.0 -.. Copyright 2022 Nordix Foundation +.. Copyright 2023 Nordix Foundation .. _architecture: @@ -10,10 +10,9 @@ Architecture Introduction ************ - The CCSDK ORAN components add support for handling "A1 Policies" as defined for the O-RAN A1-P interface. -The O-RAN A1-P interface is defined by the `O-RAN Alliance `_ +The O-RAN A1-P interface is defined and specified by the `O-RAN Alliance `_ ******************* @@ -26,14 +25,13 @@ integration with other components and API resource/operation provided. .. image:: ../media/ONAP-A1ControllerArchitecture.png :width: 500pt -The A1 Policy Management Service provides an API for accessing of A1 Policies. The PMS -configures these in the traffical elements (NearRT-RICS). It also keeps a backup of these in case of restart of PMS. -On regular basis, it will check that the configured A1 Policices are consistent with the actual ones in the NearRT-RICS (and take action if not). +The A1 Policy Management Service provides an API for accessing of A1 Policies. The A1-PMS +configures A1-Policies in RAN nodes (near-RT RICs). It also keeps a synchronized copy of these in case the A1-PMS needs to restart. +Periodically A1-PMS will check that the configured A1 Policies and A1 Policy Types are consistent with those in the managed near-RT RICs (and take action if not). -The access to the NearRT-RIC may be tunneled through an A1 adapter in the CCSDK/SDNC controller. +Communications to near-RT RIC can be tunneled through a CCSDK/SDNC controller, using our SDNC A1-Adapter plugin. -The A1 PMS provides support for fine granied access control, which is implemented by delegating the granting of access of A1 Policies to an external -authorization provider. +The A1-PMS now also supports fine-grained access control checks, whereby access requests can be forwarded to an external authorization provider. More details can be found in :ref:`developer_guide`. diff --git a/docs/consumedapis/consumedapis.rst b/docs/consumedapis/consumedapis.rst index 515a2b55..edb2084a 100755 --- a/docs/consumedapis/consumedapis.rst +++ b/docs/consumedapis/consumedapis.rst @@ -1,5 +1,5 @@ .. SPDX-License-Identifier: CC-BY-4.0 -.. Copyright 2022 Nordix Foundation +.. Copyright 2023 Nordix Foundation Consumed APIs ============= @@ -12,12 +12,11 @@ The A1 Policy Management Service consumes two ONAP APIs and the A1-P API. 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 `_ +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 **Kohn** ONAP A1 Policy functions implement the *A1 Policy* parts (*A1-P*) of A1-AP versions *v1.1*, *v2.0* and *v3.0* +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*. -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*). - -An opensource implementation of an `A1 Simulator `_ is also available from the `O-RAN Software Community `_. It supports all versions of A1-AP. +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*). +An opensource implementation of an `A1 Simulator `_ is also available from the `O-RAN Software Community `_. It supports all versions of A1-AP. diff --git a/docs/guide/developer-guide.rst b/docs/guide/developer-guide.rst index ea726334..e9882a2d 100644 --- a/docs/guide/developer-guide.rst +++ b/docs/guide/developer-guide.rst @@ -1,6 +1,6 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 -.. Copyright (C) 2022 Nordix Foundation. +.. Copyright (C) 2023 Nordix Foundation. .. _developer_guide: @@ -9,32 +9,37 @@ Developer Guide This document provides a quickstart for developers of the CCSDK functions for O-RAN A1 Policies. +.. image:: ../media/ONAP-A1ControllerArchitecture-London.png + :width: 500pt + Source tree +++++++++++ -This provides CCSDK with "A1 Policy Management Service" and "A1 Adapter" functions. +This provides ONAP CCSDK with "A1 Policy Management Service" and "A1 Adapter" functions. Each resource is implemented independently in a sub-directory corresponding to its name. A1 Policy Management Service ++++++++++++++++++++++++++++ -The ONAP CCSDK A1 Policy Management Service is a Java 11 web application built using the Spring Framework. +The ONAP CCSDK A1 Policy Management Service (A1-PMS) is a Java 17 web application built using the Spring Framework. Using Spring Boot dependencies, it runs as a standalone application. -A1 Policy Management Service provides a REST API for management of policies. It provides support for: +A1 Policy Management Service provides a REST API for managing A1 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: + * Consistency monitoring of near-RT RIC capabilities (e.g. supported A1 Policy Types) + * Supervision of clients (e.g. 'rAPPs') that use the northbound interface, to help garbage-collect & remove un-owned policies (e.g. in case of failures) + * A1 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. + * One REST API towards all near-RT RICs in the network + * Query functions to discover A1 Policy Types supported by each near-RT RIC + * Query functions to find all A1 Policy instances in each near-RT RIC, all A1 Policies owned by a service (e.g. rAPP or client), all A1 Policies of certain A1 Policy Type etc. + * Create/Modify/Delete operations for A1 Policy Instances in each near-RT RIC + * Query functions to check the status of each near-RT RIC, and their A1 Policy Instances. -The Policy Management Service can be accessed over the REST API. See :ref:`pms_api` for more information about the API. +The A1 Policy Management Service can be accessed over the REST API. See :ref:`pms_api` for more information about the API. -The configured A1 policies are stored persistently to survive a service restart. This information can be stored in a persistent volume or in an S3 Object Store bucket. +The configured A1 Policies are stored persistently, and can survive service restart. This state information can be stored in a persistent volume or in an S3 Object Store bucket. Dependencies ------------ @@ -44,7 +49,7 @@ dependency management tool (see *pom.xml* file at root level) : - Swagger annotations - `Spring Framework `_ -- `Springfox `_ Automated JSON API documentation for APIs built with Spring +- `SpringDoc and OpenAPI `_ Automated JSON API documentation for APIs built with Spring - `Lombok `_ to generate code, such as getters and setters - `Awaitility `_ to test asynchronous functionality @@ -55,45 +60,45 @@ Configuration ------------- There are two configuration files for A1 Policy Management Service, *config/application_configuration.json* and *config/application.yaml* -The first (*config/application_configuration.json*) contains configuration needed by the application, such as which near-RT-RICs, or controller to use. +The first (*config/application_configuration.json*) contains application-specific configuration needed by the application, such as which near-RT RICs, or controller to use. The second (*config/application.yaml*) contains logging and security configurations. -For more information about these configuration files can be found as comments in the sample files provided with the source code, or on the `ONAP wiki `_ +For more information about these configuration files can be found as comments in the sample files provided with the source code, or on the `ONAP wiki `_ Static configuration - Settings that cannot be changed at runtime (*application.yaml*) -------------------------------------------------------------------------------------- The file *./config/application.yaml* is read by the application at startup. It provides the following configurable features: - * server; configuration for the WEB server + * *server*; configuration for the WEB server - * used port for HTTP/HTTPS, this is however not the port numbers visible outside the container + * used port for HTTP/HTTPS, this is however not the port number visible outside the container * SSL parameters for setting up using of key store and trust store databases. - * webclient; configuration parameters for a web client used by the component + * *webclient*; configuration parameters for a web client used by the component * SSL parameters for setting up using of key store and trust store databases. * Usage of HTTP(S) Proxy; if configured, the proxy will be used for southbound access to the NearRT-RICs - * logging; setting for which information is logged. - * auth-token; optional authorization token to use for REST call. - * filepath; the local path to a file used for dynamic configuration (if used). See next chapter. - * persistent storage of runtime information. Configuration of A1 policyinstances is stored persistently. The media for this can be either filesystem (a persistent volume) or Amazon S3 - Cloud Object Storage. + * *logging*; setting for which information is logged. + * *auth-token*; optional authorization token to use for REST call. + * *filepath*; the local path to a file used for dynamic configuration (if used). See next chapter. + * *persistent storage* of runtime information. Configuration of A1 Policy instances is stored persistently. The media for this can be either filesystem (a persistent volume) or Amazon S3 - Cloud Object Storage. For details about the parameters in this file, see documentation in the file. Dynamic configuration - Settings that can be changed at runtime (*application_configuration.json* or REST or ConfigMap) ----------------------------------------------------------------------------------------------------------------------- -The component has configuration that can be updated in runtime. This configuration can either be loaded from a file (accessible from the container), or using the Configuration REST API. The configuration is re-read and refreshed at regular intervals. +The component has configuration that can be updated in runtime. This configuration can either be loaded from a file (accessible from the container), or using the Configuration REST API. The configuration is re-read and refreshed at regular intervals if the file is changed (e.g. using K8s ConfigMap capabilities). The configuration includes: - * Optional Controller configuration, e.g. an SDNC instance (with A1-Adapter) + * Optional *Controller* configuration, e.g. an SDNC instance (with A1-Adapter) - * (If no 'Contoller' is configured, the A1 Policy Management Service will connect direct to near-RT-RICs, bypassing the SDNC controller) - * One entry for each near-RT-RIC, which includes: + * (If no 'Contoller' is configured, the A1 Policy Management Service will connect direct to near-RT RICs, bypassing the SDNC controller) + * One entry for each near-RT-RIC (*ric*), which includes: * The base URL of the near-RT-RIC - * A optional list of O1 identifiers that near-RT-RIC is controlling. An application can query this service which near-RT-RIC should be addressed for which component (e.g. cells, sectors, locations, etc.) . + * A optional list of O1 identifiers that near-RT-RIC is controlling. An application can query this service which near-RT-RIC should be addressed for which component (e.g. cells, sectors, locations, etc.). * An optional reference to the controller to use, or excluded if the near-RT-RIC should be accessed directly from the A1 Policy Management Service. For details about the syntax of the file, there is an example in source code repository */config/application_configuration.json*. This file is also included in the docker container */opt/app/policy-agent/data/application_configuration.json_example*. @@ -102,14 +107,14 @@ For details about the syntax of the file, there is an example in source code rep Configuring certificates ------------------------ -The A1 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, with an example is provided in the source code repository *a1-policy-management/config/application.yaml* +The A1 Policy Management Service uses the default security keystore and truststore that are included in the built container. The paths and +passwords for these stores are located in the static configuration file described above (*application.yaml*), with an example is provided in the source code repository *a1-policy-management/config/application.yaml* -There is also the A1 Policy Management Service's own cert in the default truststore for mocking purposes and unit-testing +A default cert and truststore is also included in the A1 Policy Management Service, but should only be used for *mocking* and *testing* purposes. (*ApplicationTest.java*). -The default keystore, truststore, and application.yaml files can be overridden by mounting new files using the the docker "volumes" -command for docker-compose or docker run command. Assuming that the keystore, truststore, and application.yaml files are located in the same directory as docker-compose, +The default keystore, truststore, and application.yaml files can be overridden by mounting new files using the the docker 'volumes' +command for 'docker-compose' or 'docker run' command. 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:` @@ -119,25 +124,25 @@ the volumes field should have these entries: :: The target paths in the container should not be modified. -Example docker run command for mounting new files (assuming they are located in the current directory): :: +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=policy-agent-container --network=nonrtric-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.4.2-SNAPSHOT + docker run -p 8081:8081 -p 8433:8433 --name=policy-agent-container --network=nonrtric-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.5.0 A1 Adapter (Internal) +++++++++++++++++++++ -The O-RAN A1 Adapter provides an **internal** RESTCONF API that is used by the A1 Policy Management System when accessing the A1 Interface. This API is useful for test and verification but should not used otherwise. +The O-RAN A1 Adapter provides an **internal** RESTCONF API that is used only by the A1 Policy Management System when accessing the A1 Interface via SDNC. This API is useful for test and verification but should not used otherwise. See :ref:`a1_adapter_api` for details of this internal API. Configuration of HTTP Proxy --------------------------- -In order to configure a HTTP Proxy for southbound connections: +In order to configure a HTTP Proxy for the A1-Adapter to use for southbound connections: * Modify file: *odlsli/src/main/properties/a1-adapter-api-dg.properties*. This file is found in CCSDK/distribution for SDNC. * In a running container this file is found at */opt/onap/ccsdk/data/properties/a1-adapter-api-dg.properties* - * Variable a1Mediator.proxy.url must contain the full Proxy URL + * Variable *a1Mediator.proxy.url* must contain the full Proxy URL After this configuration has been changed the A1 adapter needs to be either rebuilt, or restarted if the configuration is changed inside a container, or re-read by the container if externally accessible (e.g. K8s ConfigMap). diff --git a/docs/index.rst b/docs/index.rst index c5be7965..05132a74 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,6 +1,6 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 -.. Copyright 2022 Nordix Foundation. +.. Copyright 2023 Nordix Foundation. .. _master_index: ccsdk/oran diff --git a/docs/media/ONAP-A1ControllerArchitecture-London.png b/docs/media/ONAP-A1ControllerArchitecture-London.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 e8a12c37..cca6f553 100644 --- a/docs/releasenotes/release-notes.rst +++ b/docs/releasenotes/release-notes.rst @@ -1,7 +1,7 @@ .. This work is licensed under a Creative Commons Attribution .. 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 -.. Copyright (C) 2022 Nordix Foundation. +.. Copyright (C) 2023 Nordix Foundation. .. _release_notes: ============= @@ -590,8 +590,8 @@ Kohn, Release 1.4.2 | | | +-----------------------------+-----------------------------------------------------+ -London, RC ----------- +London, Release 1.5.0 +--------------------- +-----------------------------+-----------------------------------------------------+ | **Project** | CCSDK ORAN | | | | @@ -605,6 +605,6 @@ London, RC | **Release date** | 2023-04-26 | | | | +-----------------------------+-----------------------------------------------------+ -| **Purpose of the delivery** | Improvements, London RC 1.5.0 version | +| **Purpose of the delivery** | Improvements, London Release, 1.5.0 version | | | | +-----------------------------+-----------------------------------------------------+ -- 2.16.6