maximesson | 94978f4 | 2019-11-13 11:53:26 +0100 | [diff] [blame] | 1 | .. This work is licensed under a Creative Commons Attribution 4.0 International License. |
| 2 | .. SPDX-License-Identifier: CC-BY-4.0 |
elinuxhenrik | 0a4c38b | 2020-04-14 10:59:36 +0200 | [diff] [blame] | 3 | .. Copyright (C) 2020 Nordix |
Lathish | 1279d19 | 2019-10-10 13:30:07 +0100 | [diff] [blame] | 4 | |
elinuxhenrik | c7a0d73 | 2020-02-04 14:49:59 +0100 | [diff] [blame] | 5 | Developer Guide |
| 6 | =============== |
Lathish | 1279d19 | 2019-10-10 13:30:07 +0100 | [diff] [blame] | 7 | |
elinuxhenrik | c7a0d73 | 2020-02-04 14:49:59 +0100 | [diff] [blame] | 8 | This document provides a quickstart for developers of the Non-RT RIC. |
| 9 | |
| 10 | SDNC A1 Controller |
maximesson | eaaee91 | 2020-03-26 16:43:27 +0100 | [diff] [blame] | 11 | ================== |
Lathish | 1279d19 | 2019-10-10 13:30:07 +0100 | [diff] [blame] | 12 | |
| 13 | Prerequisites |
| 14 | ------------- |
| 15 | |
maximesson | b17ae67 | 2020-07-07 10:17:58 +0200 | [diff] [blame] | 16 | 1. Java development kit (JDK), version 8 |
gautamk189 | 9c84195 | 2020-06-16 15:23:46 +0530 | [diff] [blame] | 17 | 2. Maven dependency-management tool, version 3.6 or later |
gautamk189 | 35550cc | 2020-06-17 20:15:44 +0530 | [diff] [blame] | 18 | 3. Python, version 2 |
gautamk189 | 9c84195 | 2020-06-16 15:23:46 +0530 | [diff] [blame] | 19 | 4. Docker, version 19.03.1 or latest |
| 20 | 5. Docker Compose, version 1.24.1 or latest |
Lathish | 1279d19 | 2019-10-10 13:30:07 +0100 | [diff] [blame] | 21 | |
elinuxhenrik | c7a0d73 | 2020-02-04 14:49:59 +0100 | [diff] [blame] | 22 | Build and run |
| 23 | ------------- |
Lathish | 1279d19 | 2019-10-10 13:30:07 +0100 | [diff] [blame] | 24 | Go to the northbound directory and run this command :: |
gautamk189 | 35550cc | 2020-06-17 20:15:44 +0530 | [diff] [blame] | 25 | mvn clean install |
Lathish | 1279d19 | 2019-10-10 13:30:07 +0100 | [diff] [blame] | 26 | |
| 27 | This will build the project and create artifcats in maven repo |
| 28 | |
| 29 | Go to oam/installation directory and run this command :: |
| 30 | mvn clean install -P docker |
maximesson | e6b4d27 | 2019-10-31 13:26:13 +0100 | [diff] [blame] | 31 | |
gautamk189 | 35550cc | 2020-06-17 20:15:44 +0530 | [diff] [blame] | 32 | This will create the docker images required for A1 controller. |
Lathish | 1279d19 | 2019-10-10 13:30:07 +0100 | [diff] [blame] | 33 | |
| 34 | After this step check for the docker images created by the maven build with this command :: |
maximesson | 4d8b567 | 2020-06-04 12:12:59 +0200 | [diff] [blame] | 35 | docker images | grep a1-controller |
Lathish | 1279d19 | 2019-10-10 13:30:07 +0100 | [diff] [blame] | 36 | |
| 37 | Go to oam/installation/src/main/yaml and run this command :: |
maximesson | 4d8b567 | 2020-06-04 12:12:59 +0200 | [diff] [blame] | 38 | docker-compose up -d a1-controller |
Lathish | 1279d19 | 2019-10-10 13:30:07 +0100 | [diff] [blame] | 39 | |
gautamk189 | 35550cc | 2020-06-17 20:15:44 +0530 | [diff] [blame] | 40 | This will create the docker containers with the A1 controller image, you can check the status of the docker container using :: |
maximesson | 4d8b567 | 2020-06-04 12:12:59 +0200 | [diff] [blame] | 41 | docker-compose logs -f a1-controller |
Lathish | 1279d19 | 2019-10-10 13:30:07 +0100 | [diff] [blame] | 42 | |
gautamk189 | 35550cc | 2020-06-17 20:15:44 +0530 | [diff] [blame] | 43 | The SDNC url to access the Northbound API, |
Lathish | 1279d19 | 2019-10-10 13:30:07 +0100 | [diff] [blame] | 44 | http://localhost:8282/apidoc/explorer/index.html |
| 45 | |
maximesson | e6b4d27 | 2019-10-31 13:26:13 +0100 | [diff] [blame] | 46 | Credentials: admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U |
Lathish | 1279d19 | 2019-10-10 13:30:07 +0100 | [diff] [blame] | 47 | |
RehanRaza | c079452 | 2020-07-23 18:35:50 +0200 | [diff] [blame^] | 48 | Configuration of certs |
| 49 | ---------------------- |
| 50 | The SDNC-A1 controller uses the default keystore and truststore that are built into the container. |
| 51 | |
| 52 | The paths and passwords for these stores are located in a properties file: |
| 53 | nonrtric/sdnc-a1-controller/oam/installation/src/main/properties/https-props.properties |
| 54 | |
| 55 | The default truststore includes the a1simulator cert as a trusted cert which is located here: |
| 56 | https://gerrit.o-ran-sc.org/r/gitweb?p=sim/a1-interface.git;a=tree;f=near-rt-ric-simulator/certificate;h=172c1e5aacd52d760e4416288dc5648a5817ce65;hb=HEAD |
| 57 | |
| 58 | The default keystore, truststore, and https-props.properties files can be overridden by mounting new files using the "volumes" field of docker-compose. Uncommment the following lines in docker-compose to do this, and provide paths to the new files: |
| 59 | |
| 60 | :: |
| 61 | |
| 62 | #volumes: |
| 63 | # - <path_to_keystore>:/etc/ssl/certs/java/keystore.jks:ro |
| 64 | # - <path_to_truststore>:/etc/ssl/certs/java/truststore.jks:ro |
| 65 | # - <path_to_https-props>:/opt/onap/sdnc/data/properties/https-props.properties:ro |
| 66 | |
| 67 | The target paths in the container should not be modified. |
| 68 | |
| 69 | For example, assuming that the keystore, truststore, and https-props.properties files are located in the same directory as docker-compose: |
| 70 | |
| 71 | `volumes:` |
| 72 | `- ./new_keystore.jks:/etc/ssl/certs/java/keystore.jks:ro` |
| 73 | |
| 74 | `- ./new_truststore.jks:/etc/ssl/certs/java/truststore.jks:ro` |
| 75 | |
| 76 | `- ./new_https-props.properties:/opt/onap/sdnc/data/properties/https-props.properties:ro` |
| 77 | |
Lathish | e1041aa | 2020-01-31 14:01:45 +0000 | [diff] [blame] | 78 | Policy Agent |
maximesson | eaaee91 | 2020-03-26 16:43:27 +0100 | [diff] [blame] | 79 | ============ |
| 80 | |
| 81 | The O-RAN Non-RT RIC Policy Agent provides a REST API for management of policices. It provides support for: |
elinuxhenrik | 7106105 | 2020-02-03 11:11:37 +0100 | [diff] [blame] | 82 | |
| 83 | * Supervision of clients (R-APPs) to eliminate stray policies in case of failure |
| 84 | * Consistency monitoring of the SMO view of policies and the actual situation in the RICs |
| 85 | * Consistency monitoring of RIC capabilities (policy types) |
| 86 | * Policy configuration. This includes: |
| 87 | |
| 88 | * One REST API towards all RICs in the network |
| 89 | * Query functions that can find all policies in a RIC, all policies owned by a service (R-APP), all policies of a type etc. |
| 90 | * Maps O1 resources (ManagedElement) as defined in O1 to the controlling RIC. |
elinuxhenrik | c7a0d73 | 2020-02-04 14:49:59 +0100 | [diff] [blame] | 91 | |
maximesson | eaaee91 | 2020-03-26 16:43:27 +0100 | [diff] [blame] | 92 | | The Policy Agent can be accessed over the REST API or through the DMaaP Interface. The REST API is documented in the |
| 93 | | *nonrtric/policy-agent/docs/api.yaml* file. Please refer to the README file of Policy Agent to know more about the API's. |
maximesson | e3954c4 | 2020-02-24 17:15:50 +0100 | [diff] [blame] | 94 | |
RehanRaza | c079452 | 2020-07-23 18:35:50 +0200 | [diff] [blame^] | 95 | Configuration of certs |
| 96 | ---------------------- |
| 97 | The Policy Agent 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: |
| 98 | nonrtric/policy-agent/config/application.yaml |
| 99 | |
| 100 | The default truststore includes a1simulator cert as a trusted cert which is located here: |
| 101 | https://gerrit.o-ran-sc.org/r/gitweb?p=sim/a1-interface.git;a=tree;f=near-rt-ric-simulator/certificate;h=172c1e5aacd52d760e4416288dc5648a5817ce65;hb=HEAD |
| 102 | |
| 103 | The default truststore also includes a1controller cert as a trusted cert which is located here (keystore.jks file): |
| 104 | https://gerrit.o-ran-sc.org/r/gitweb?p=nonrtric.git;a=tree;f=sdnc-a1-controller/oam/installation/sdnc-a1/src/main/resources;h=17fdf6cecc7a866c5ce10a35672b742a9f0c4acf;hb=HEAD |
| 105 | |
| 106 | There is also Policy Agent's own cert in the default truststore for mocking purposes and unit-testing (ApplicationTest.java). |
| 107 | |
| 108 | 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. |
| 109 | |
| 110 | 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: |
| 111 | |
| 112 | `volumes:` |
| 113 | `- ./new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks:ro` |
| 114 | |
| 115 | `- ./new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks:ro` |
| 116 | |
| 117 | `- ./new_application.yaml:/opt/app/policy-agent/config/application.yaml:ro` |
| 118 | |
| 119 | The target paths in the container should not be modified. |
| 120 | |
| 121 | Example docker run command for mounting new files (assuming they are located in the current directory): |
| 122 | |
| 123 | `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" o-ran-sc/nonrtric-policy-agent:2.0.0-SNAPSHOT` |
| 124 | |
maximesson | e6b4d27 | 2019-10-31 13:26:13 +0100 | [diff] [blame] | 125 | End-to-end call |
maximesson | 780b2bf | 2019-11-12 16:09:02 +0100 | [diff] [blame] | 126 | =============== |
maximesson | e6b4d27 | 2019-10-31 13:26:13 +0100 | [diff] [blame] | 127 | |
| 128 | In order to make a complete end-to-end call, follow the instructions given in this `guide`_. |
| 129 | |
maximesson | eaaee91 | 2020-03-26 16:43:27 +0100 | [diff] [blame] | 130 | .. _guide: https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=12157166 |