blob: 8abc92cccf149d906b441489f959082a3aae2257 [file] [log] [blame]
maximesson94978f42019-11-13 11:53:26 +01001.. This work is licensed under a Creative Commons Attribution 4.0 International License.
2.. SPDX-License-Identifier: CC-BY-4.0
elinuxhenrik0a4c38b2020-04-14 10:59:36 +02003.. Copyright (C) 2020 Nordix
Lathish1279d192019-10-10 13:30:07 +01004
elinuxhenrikc7a0d732020-02-04 14:49:59 +01005Developer Guide
6===============
Lathish1279d192019-10-10 13:30:07 +01007
elinuxhenrikc7a0d732020-02-04 14:49:59 +01008This document provides a quickstart for developers of the Non-RT RIC.
9
10SDNC A1 Controller
maximessoneaaee912020-03-26 16:43:27 +010011==================
Lathish1279d192019-10-10 13:30:07 +010012
13Prerequisites
14-------------
15
maximessonb17ae672020-07-07 10:17:58 +0200161. Java development kit (JDK), version 8
gautamk1899c841952020-06-16 15:23:46 +0530172. Maven dependency-management tool, version 3.6 or later
gautamk18935550cc2020-06-17 20:15:44 +0530183. Python, version 2
gautamk1899c841952020-06-16 15:23:46 +0530194. Docker, version 19.03.1 or latest
205. Docker Compose, version 1.24.1 or latest
Lathish1279d192019-10-10 13:30:07 +010021
elinuxhenrikc7a0d732020-02-04 14:49:59 +010022Build and run
23-------------
Lathish1279d192019-10-10 13:30:07 +010024Go to the northbound directory and run this command ::
gautamk18935550cc2020-06-17 20:15:44 +053025 mvn clean install
Lathish1279d192019-10-10 13:30:07 +010026
27This will build the project and create artifcats in maven repo
28
29Go to oam/installation directory and run this command ::
30 mvn clean install -P docker
maximessone6b4d272019-10-31 13:26:13 +010031
gautamk18935550cc2020-06-17 20:15:44 +053032This will create the docker images required for A1 controller.
Lathish1279d192019-10-10 13:30:07 +010033
34After this step check for the docker images created by the maven build with this command ::
maximesson4d8b5672020-06-04 12:12:59 +020035 docker images | grep a1-controller
Lathish1279d192019-10-10 13:30:07 +010036
37Go to oam/installation/src/main/yaml and run this command ::
maximesson4d8b5672020-06-04 12:12:59 +020038 docker-compose up -d a1-controller
Lathish1279d192019-10-10 13:30:07 +010039
gautamk18935550cc2020-06-17 20:15:44 +053040This will create the docker containers with the A1 controller image, you can check the status of the docker container using ::
maximesson4d8b5672020-06-04 12:12:59 +020041 docker-compose logs -f a1-controller
Lathish1279d192019-10-10 13:30:07 +010042
gautamk18935550cc2020-06-17 20:15:44 +053043The SDNC url to access the Northbound API,
Lathish1279d192019-10-10 13:30:07 +010044 http://localhost:8282/apidoc/explorer/index.html
45
maximessone6b4d272019-10-31 13:26:13 +010046Credentials: admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
Lathish1279d192019-10-10 13:30:07 +010047
RehanRazac0794522020-07-23 18:35:50 +020048Configuration of certs
49----------------------
50The SDNC-A1 controller uses the default keystore and truststore that are built into the container.
51
52The 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
55The 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
58The 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
67The target paths in the container should not be modified.
68
69For 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
Lathishe1041aa2020-01-31 14:01:45 +000078Policy Agent
maximessoneaaee912020-03-26 16:43:27 +010079============
80
81The O-RAN Non-RT RIC Policy Agent provides a REST API for management of policices. It provides support for:
elinuxhenrik71061052020-02-03 11:11:37 +010082
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.
elinuxhenrikc7a0d732020-02-04 14:49:59 +010091
maximessoneaaee912020-03-26 16:43:27 +010092| 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.
maximessone3954c42020-02-24 17:15:50 +010094
RehanRazac0794522020-07-23 18:35:50 +020095Configuration of certs
96----------------------
97The 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
100The 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
103The 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
106There is also Policy Agent's own cert in the default truststore for mocking purposes and unit-testing (ApplicationTest.java).
107
108The 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
110Assuming 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
119The target paths in the container should not be modified.
120
121Example 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
maximessone6b4d272019-10-31 13:26:13 +0100125End-to-end call
maximesson780b2bf2019-11-12 16:09:02 +0100126===============
maximessone6b4d272019-10-31 13:26:13 +0100127
128In order to make a complete end-to-end call, follow the instructions given in this `guide`_.
129
maximessoneaaee912020-03-26 16:43:27 +0100130.. _guide: https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=12157166