8abc92cccf149d906b441489f959082a3aae2257
[nonrtric.git] / docs / developer-guide.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. SPDX-License-Identifier: CC-BY-4.0
3 .. Copyright (C) 2020 Nordix
4
5 Developer Guide
6 ===============
7
8 This document provides a quickstart for developers of the Non-RT RIC.
9
10 SDNC A1 Controller
11 ==================
12
13 Prerequisites
14 -------------
15
16 1. Java development kit (JDK), version 8
17 2. Maven dependency-management tool, version 3.6 or later
18 3. Python, version 2
19 4. Docker, version 19.03.1 or latest
20 5. Docker Compose, version 1.24.1 or latest
21
22 Build and run
23 -------------
24 Go to the northbound directory and run this command ::
25     mvn clean install
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
31
32 This will create the docker images required for A1 controller.
33
34 After this step check for the docker images created by the maven build with this command ::
35     docker images | grep a1-controller
36
37 Go to oam/installation/src/main/yaml and run this command ::
38     docker-compose up -d a1-controller
39
40 This will create the docker containers with the A1 controller image, you can check the status of the docker container using ::
41     docker-compose logs -f a1-controller
42
43 The SDNC url to access the Northbound API,
44     http://localhost:8282/apidoc/explorer/index.html
45
46 Credentials: admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
47
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
78 Policy Agent
79 ============
80
81 The O-RAN Non-RT RIC Policy Agent provides a REST API for management of policices. It provides support for:
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.
91
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.
94
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
125 End-to-end call
126 ===============
127
128 In order to make a complete end-to-end call, follow the instructions given in this `guide`_.
129
130 .. _guide: https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=12157166