b438613ab6bdf478a8875d4d6a2c14b8c898a8d6
[nonrtric/plt/a1policymanagementservice.git] / README.md
1 # O-RAN-SC Non-RT RIC Policy Agent
2
3 The O-RAN Non-RT RIC Policy Agent provides a REST API for the management of policies within the O-RAN architecture. This README provides details on the features, configuration, and running instructions for the Policy Agent.
4 For detailed API documentation and further information, refer to the NONRTRIC documentation at [NONRTRIC Wiki](https://wiki.o-ran-sc.org/display/RICNR).
5
6 ## Features
7
8 The Policy Agent offers various functionalities to manage and monitor policies and RIC capabilities:
9
10 - **Client Supervision**: Monitors clients (R-APPs) to eliminate stray policies in case of client failure.
11 - **Consistency Monitoring**: Ensures the SMO view of policies and RIC capabilities is consistent with the actual situation in the RICs.
12 - **Policy Configuration**:
13   - Single REST API for all RICs in the network.
14   - Query functions to find all policies in a RIC, all policies owned by a service (R-APP), all policies of a specific type, etc.
15   - Maps O1 resources (ManagedElement) to the controlling RIC.
16
17 ## Configuration
18
19 The Policy Agent uses default keystore and truststore files included in the container. The paths and passwords for these stores are specified in a YAML configuration file located at:
20
21
22
23 ### Default Truststore Certificates
24
25 The default truststore includes the following trusted certificates:
26 - **A1 Simulator Certificate**: [a1simulator cert](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)
27 - **A1 Controller Certificate**: [a1controller cert (keystore.jks)](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)
28 - **Policy Agent's Own Certificate**: Used for mocking and unit-testing purposes (ApplicationTest.java).
29
30 ### Overriding Default Configuration
31
32 You can override the default keystore, truststore, and application.yaml files by mounting new files using the `volumes` field in Docker Compose or the `docker run` command.
33
34 Assuming the new keystore, truststore, and application.yaml files are located in the same directory as your Docker Compose file, the `volumes` field should include these entries:
35
36 ```yaml
37 volumes:
38   - ./new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks:ro
39   - ./new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks:ro
40   - ./new_application.yaml:/opt/app/policy-agent/config/application.yaml:ro
41 ```
42
43 The target paths in the container should remain unchanged.
44
45 Example Docker Run Command
46 To run the Policy Agent container and mount the new configuration files, use the following docker run command:
47
48 ```sh
49 docker run -p 8081:8081 -p 8433:8433 --name=policy-agent-container --network=nonrtric-docker-net \
50   --volume "$PWD/new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks" \
51   --volume "$PWD/new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks" \
52   --volume "$PWD/new_application.yaml:/opt/app/policy-agent/config/application.yaml" \
53   o-ran-sc/nonrtric-policy-agent:2.2.0-SNAPSHOT
54 ```
55
56 ### Running Policy Agent Locally
57 To run the Policy Agent locally in a simulated test mode, follow these steps:
58
59 1. In the folder /opt/app/policy-agent/config/, create a soft link to your test configuration file:
60
61 ```sh
62 ln -s <path to test_application_configuration.json> application_configuration.json
63 ```
64
65 2. Start the Policy Agent with the following Maven command:
66
67 ```sh
68 mvn -Dtest=MockPolicyAgent test
69 ```
70
71 This will start the agent in a simulated mode, where it mimics the behavior of RICs. The REST API will be available on port 8081.
72
73 ### API Documentation
74 The backend server publishes live API documentation, which can be accessed at:
75
76 ```bash
77 http://your-host-name-here:8081/swagger-ui.html
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.