X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=docs%2Fdeveloper-guide.rst;h=9aac33c273417dc2a50d4e15460b213bde9249d9;hb=13c62d122c38b98cbdc76a4a775c6f6187e40e39;hp=63829e260dee06a6fa5cb6c5bcb7c0ed30e8d536;hpb=780b2bff6684aa0b514088f9e291441692f29b3e;p=nonrtric.git diff --git a/docs/developer-guide.rst b/docs/developer-guide.rst index 63829e26..9aac33c2 100644 --- a/docs/developer-guide.rst +++ b/docs/developer-guide.rst @@ -1,39 +1,26 @@ -.. ============LICENSE_START======================================================= -.. Copyright (C) 2019 Nordix Foundation. -.. ================================================================================ -.. Licensed under the Apache License, Version 2.0 (the "License"); -.. you may not use this file except in compliance with the License. -.. You may obtain a copy of the License at -.. -.. http://www.apache.org/licenses/LICENSE-2.0 -.. -.. Unless required by applicable law or agreed to in writing, software -.. distributed under the License is distributed on an "AS IS" BASIS, -.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -.. See the License for the specific language governing permissions and -.. limitations under the License. -.. -.. SPDX-License-Identifier: Apache-2.0 -.. ============LICENSE_END========================================================= - -A1 Mediation: -1. SDNC Controller -2. Near-RT RIC Simulator - -SDNC A1 Controller Developer Guide -================================== - -This document provides a quickstart for developers of the O-RAN SC A1 Controller SDNC Application +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. SPDX-License-Identifier: CC-BY-4.0 +.. Copyright (C) 2020 Nordix + +Developer Guide +=============== + +This document provides a quickstart for developers of the Non-RT RIC. + +SDNC A1 Controller +================== Prerequisites ------------- 1. Java development kit (JDK), version 8 -2. Maven dependency-management tool, version 3.4 or later +2. Maven dependency-management tool, version 3.6 or later 3. Python, version 2 -4. Docker, version 19.03.1 or later -5. Docker Compose, version 1.24.1 or later +4. Docker, version 19.03.1 or latest +5. Docker Compose, version 1.24.1 or latest +Build and run +------------- Go to the northbound directory and run this command :: mvn clean install @@ -42,48 +29,102 @@ This will build the project and create artifcats in maven repo Go to oam/installation directory and run this command :: mvn clean install -P docker -This will create the docker images required for sdnc +This will create the docker images required for A1 controller. After this step check for the docker images created by the maven build with this command :: - docker images | grep sdnc + docker images | grep a1-controller Go to oam/installation/src/main/yaml and run this command :: - docker-compose up -d sdnc + docker-compose up -d a1-controller -This will create the docker containers with the sdnc image, you can check the status of the docker container using :: - docker-compose logs -f sdnc +This will create the docker containers with the A1 controller image, you can check the status of the docker container using :: + docker-compose logs -f a1-controller The SDNC url to access the Northbound API, http://localhost:8282/apidoc/explorer/index.html Credentials: admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U -Near-RT RIC Simulator Developer Guide -===================================== +Configuration of certs +---------------------- +The SDNC-A1 controller uses the default keystore and truststore that are built into the container. -Prerequisites -------------- +The paths and passwords for these stores are located in a properties file: + nonrtric/sdnc-a1-controller/oam/installation/src/main/properties/https-props.properties -1. Java development kit (JDK), version 8 -2. Maven dependency-management tool, version 3.4 or later +The default truststore includes the a1simulator cert as a trusted cert which is located here: + 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 + +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: + +:: + +#volumes: +# - :/etc/ssl/certs/java/keystore.jks:ro +# - :/etc/ssl/certs/java/truststore.jks:ro +# - :/opt/onap/sdnc/data/properties/https-props.properties:ro + +The target paths in the container should not be modified. + +For example, assuming that the keystore, truststore, and https-props.properties files are located in the same directory as docker-compose: + +`volumes:` + `- ./new_keystore.jks:/etc/ssl/certs/java/keystore.jks:ro` + + `- ./new_truststore.jks:/etc/ssl/certs/java/truststore.jks:ro` + + `- ./new_https-props.properties:/opt/onap/sdnc/data/properties/https-props.properties:ro` + +Policy Agent +============ + +The O-RAN Non-RT RIC Policy Agent provides a REST API for management of policices. It provides support for: + + * Supervision of clients (R-APPs) to eliminate stray policies in case of failure + * Consistency monitoring of the SMO view of policies and the actual situation in the RICs + * Consistency monitoring of RIC capabilities (policy types) + * Policy configuration. This includes: + + * One REST API towards all RICs in the network + * Query functions that can find all policies in a RIC, all policies owned by a service (R-APP), all policies of a type etc. + * Maps O1 resources (ManagedElement) as defined in O1 to the controlling RIC. + +| The Policy Agent can be accessed over the REST API or through the DMaaP Interface. The REST API is documented in the +| *nonrtric/onap/oran/docs/offeredapis/swagger/pms-api.yaml* file. Please refer to the README file of Policy Agent to know more about the API's. + +Configuration of certs +---------------------- +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: + nonrtric/policy-agent/config/application.yaml + +The default truststore includes a1simulator cert as a trusted cert which is located here: + 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 + +The default truststore also includes a1controller cert as a trusted cert which is located here (keystore.jks file): + 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 + +There is also Policy Agent's own cert in the default truststore for mocking purposes and unit-testing (ApplicationTest.java). + +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. + +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: + +`volumes:` + `- ./new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks:ro` -Go to the nearric-simulator/ directory and run this command :: - mvn clean install + `- ./new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks:ro` -If you want to genereate the sources from A1 yaml file, Go to nearric-simulator/a1-med-api/ and run this command :: - mvn generate-sources + `- ./new_application.yaml:/opt/app/policy-agent/config/application.yaml:ro` -This will generate the A1PApi.java you need to call the generate-sources maven life cycle to generate the file +The target paths in the container should not be modified. -The backend server listens for requests at this URL: - http://localhost:8080 +Example docker run command for mounting new files (assuming they are located in the current directory): -The backend server publishes live API documentation at the URL - http://localhost:8080/swagger-ui.html +`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.1.0-SNAPSHOT` End-to-end call =============== In order to make a complete end-to-end call, follow the instructions given in this `guide`_. -.. _guide: https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=12157166 \ No newline at end of file +.. _guide: https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=12157166