diff options
Diffstat (limited to 'docs/guide/developer-guide.rst')
-rw-r--r-- | docs/guide/developer-guide.rst | 75 |
1 files changed, 45 insertions, 30 deletions
diff --git a/docs/guide/developer-guide.rst b/docs/guide/developer-guide.rst index 29c9f91d..866f6212 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) 2021 Nordix Foundation. +.. Copyright (C) 2022 Nordix Foundation. .. _developer_guide: @@ -13,7 +13,7 @@ Source tree +++++++++++ This provides CCSDK with "A1 Policy Management Service" and "A1 Adapter" functions. -Each resource is implemented independently in a package corresponding to its name. +Each resource is implemented independently in a sub-directory corresponding to its name. A1 Policy Management Service ++++++++++++++++++++++++++++ @@ -34,7 +34,7 @@ A1 Policy Management Service provides a REST API for management of policies. It The Policy Management Service can be accessed over the REST API, and with an equivalent interface using DMaaP. See :ref:`pms_api` for more information about the API. -The configured A1 policies are stored presistently to survive a service restart. +The configured A1 policies are stored persistently to survive a service restart. Dependencies ------------ @@ -42,19 +42,28 @@ Dependencies This project uses various frameworks which are managed with Maven dependency management tool (see *pom.xml* file at root level) : +- Swagger annotations +- `Spring Framework <https://github.com/spring-projects/spring-boot>`_ +- `Springfox <https://github.com/springfox/springfox>`_ Automated JSON API documentation for APIs built with Spring +- `Immutable <https://immutables.github.io/>`_ to generate simple, safe and consistent value objects +- `JSON in Java <https://github.com/stleary/JSON-java>`_ to parse JSON documents into Java objects +- `Apache Commons Net <https://github.com/apache/commons-net>`_ for network utilities and protocol implementations +- `Lombok <https://github.com/rzwitserloot/lombok>`_ to generate code, such as getters and setters +- `Awaitility <https://github.com/awaitility/awaitility>`_ to test asynchronous functionality + To get a complete list of all dependencies, use command "mvn dependency:tree". Configuration ------------- There are two configuration files for A1 Policy Management Service, *config/application_configuration.json* and *config/application.yaml* -The first one contains configuration of data needed by the application, such as which Near-RT RICs -that are available. The second contains logging and security configurations. +The first (*config/application_configuration.json*) contains configuration needed by the application, such as which near-RT-RICs, controller, or DMaaP topic 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 <https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP+Honolulu>`_ +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 <https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP+Jakarta>`_ -Static configuration (application.yaml) ---------------------------------------- +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: @@ -67,18 +76,27 @@ The file *./config/application.yaml* is read by the application at startup. It p * 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 of of which information that is logged. + * 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. For details about the parameters in this file, see documentation in the file. -Dynamic configuration ---------------------- - -The component has configuration that can be updated in runtime. This configuration is loaded from a file (accessible from the container). The configuration is re-read and refreshed at regular intervals. This file based configuration can be updated or read via the REST API, See :ref:`pms_api`. +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 from a CBS/Consul database (Cloudify), or using the Configuration REST API. The configuration is re-read and refreshed at regular intervals. The configuration includes: + * Optional Controller configuration, e.g. an SDNC instance (with A1-Adapter) + * One entry for each near-RT-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.) . + * 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. + + * Optional configuration for using of DMaaP. There can be one stream for requests to the component and an other stream for responses. + * Controller configuration, which includes information on how to access the a1-adapter * One entry for each NearRT-RIC, which includes: @@ -86,40 +104,34 @@ The configuration includes: * A list of O1 identifiers that the NearRT RIC is controlling. An application can query this service which NearRT RIC should be addressed for controlling (for instance) a given Cell. * An optional reference to the controller to use, or excluded if the NearRT-RIC can be accessed directly from this component. - * Optional configuration for using of DMAAP. There can be one stream for requests to the component and an other stream for responses. + * Optional configuration for using of DMaaP. There can be one stream for requests to the component and an other stream for responses. 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*. -Configuration of certs ----------------------- - -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: :: +Configuring certificates +------------------------ - oran/a1-policy-management/config/application.yaml +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* There is also Policy Management Service's own cert in the default truststore for mocking purposes and unit-testing -(ApplicationTest.java). +(*ApplicationTest.java*). -The default keystore, truststore, and application.yaml files can be overridden by mounting new files using the "volumes" -field of 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:` `- ./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. 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.2.0-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.4.0-SNAPSHOT A1 Adapter (Internal) +++++++++++++++++++++ @@ -132,8 +144,11 @@ Configuration of HTTP Proxy --------------------------- In order to configure a HTTP Proxy for southbound connections: - * Modify file: odlsli/src/main/properties/a1-adapter-api-dg.properties in CCSDK/distribution - * Variable a1Mediator.proxy.url must contain Proxy URL + * 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 + +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). |