Uplift PMS source from ONAP
[nonrtric.git] / policy-agent / README.md
1 # O-RAN-SC Non-RT RIC Policy Agent
2
3 The O-RAN Non-RT RIC PolicyAgent provides a REST API for management of policices.
4 It provides support for:
5  -Supervision of clients (R-APPs) to eliminate stray policies in case of failure
6  -Consistency monitoring of the SMO view of policies and the actual situation in the RICs
7  -Consistency monitoring of RIC capabilities (policy types)
8  -Policy configuration. This includes:
9   -One REST API towards all RICs in the network
10   -Query functions that can find all policies in a RIC, all policies owned by a service (R-APP),
11    all policies of a type etc.
12   -Maps O1 resources (ManagedElement) as defined in O1 to the controlling RIC
13
14 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:
15 nonrtric/policy-agent/config/application.yaml
16
17 The default truststore includes a1simulator cert as a trusted cert which is located here:
18 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
19
20 The default truststore also includes a1controller cert as a trusted cert which is located here (keystore.jks file):
21 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
22
23 There is also Policy Agent's own cert in the default truststore for mocking purposes and unit-testing (ApplicationTest.java).
24
25 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.
26
27 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:
28
29 volumes:
30       - ./new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks:ro
31       - ./new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks:ro
32       - ./new_application.yaml:/opt/app/policy-agent/config/application.yaml:ro
33
34 The target paths in the container should not be modified.
35
36 Example docker run command for mounting new files (assuming they are located in the current directory):
37 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.2.0-SNAPSHOT
38
39
40 To Run Policy Agent in Local:
41 In the folder /opt/app/policy-agent/config/, create a soft link with below command,
42 ln -s <path to test_application_configuration.json> application_configuration.json
43
44 To Run Policy Agent in Local with the DMaaP polling turned on:
45 In the folder /opt/app/policy-agent/config/, create a soft link with below command,
46 ln -s <path to test_application_configuration_with_dmaap_config.json> application_configuration.json
47
48 The agent can be run stand alone in a simulated test mode. Then it simulates RICs.
49 The REST API is published on port 8081 and it is started by command:
50 mvn -Dtest=MockPolicyAgent test
51
52 The backend server publishes live API documentation at the
53 URL `http://your-host-name-here:8081/swagger-ui.html`
54
55 PolicyAgent uses A1-POLICY-AGENT-READ & A1-POLICY-AGENT-WRITE topic for subscribe & Publish to the DMaap.
56 Sample Request Message to DMaaP:
57 {
58   "type": "request",
59   "target": "policy-agent",
60   "timestamp": "2019-05-14T11:44:51.36Z",
61   "operation": "GET",
62   "correlationId": "c09ac7d1-de62-0016-2000-e63701125557-201",
63   "apiVersion": "1.0",
64   "originatorId": "849e6c6b420",
65   "requestId": "23343221",
66   "url": "/policies?type=type1&ric=ric1&service=service1"
67 }
68
69 Sample Response Message to DMaaP:
70 {
71   "type": "response",
72   "timestamp": "2019-05-14T11:44:51.36Z",
73   "correlationId": "c09ac7d1-de62-0016-2000-e63701125557-201",
74   "originatorId": "849e6c6b420",
75   "requestId": "23343221",
76   "status": "200 OK",
77   "message": []
78 }
79
80 ## License
81
82 Copyright (C) 2019 Nordix Foundation. All rights reserved.
83 Licensed under the Apache License, Version 2.0 (the "License");
84 you may not use this file except in compliance with the License.
85 You may obtain a copy of the License at
86
87      http://www.apache.org/licenses/LICENSE-2.0
88
89 Unless required by applicable law or agreed to in writing, software
90 distributed under the License is distributed on an "AS IS" BASIS,
91 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
92 See the License for the specific language governing permissions and
93 limitations under the License.