Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This page describes how to get the release B version of NonRTRIC Non-RT RIC up and running locally with two separate NearRTNear-RT RIC simulator docker containers providing OSC_2.1.0 version of A1 interface.

All four components of the NonRTRIC the Non-RT RIC (from three different repos) run inside docker containers and communicate via a docker network. Details of the architecture can be found from Release B page.

Table of Contents

Project Requirements

  • Java 11 (make sure that JAVA_HOME environment variable points to correct Java version)

  • Maven 3.6

  • Docker and docker-compose (latest)

Build Code

Build nonrtric containers

...

To support local test with two separate NearRTNear-RT RIC simulator instances the following modifications must be done:  

  • change the 'a1ControllerBaseUrl' in create a new nonrtric/policy-agent/config/application.yaml_configuration.json with the configuration below
  • The controller  file of policy-agent to http://a1-controller-container:8181 The above hostname and port values come from and must match those defined in nonrtric/sdnc-a1-controller/oam/installation/src/main/yaml/docker-compose.ymlThe default URL to be replaced (http://sdnc.onap:8282) is used in Kubernetes-based ONAP deployment
  • The following step is required only if you want to run more than the default ric1 nearRT-RIC simulator instance
  • replace the content of nonrtric/policy-agent/config/application_configuration.yaml with the configuration below
  • any defined ric names must match the given docker container names in nearRTnear-RT RIC simulator startup - port is always the simulator's internal 8085
Code Block
languageyml
titleapplication_configuration.yaml
{
     "config": {
         "//description": "Application configuration",
           "controller": [
         {
            "name": "controller1",
            "baseUrl": "http://a1-controller-container:8181",
            "userName": "admin",
            "password": "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"
         }
      ],
      "ric": [
              {
                        "name": "ric1",
                        "baseUrl": "http://ric1:8085/",  
            
            "controller": "controller1",
            "managedElementIds": [
                             "kista_1",
                             "kista_2"
            ]
         },
         {
                        ]
         },
                  {
            "name": "ric2",
                        "baseUrl": "http://ric2:8085/",
            "controller": "controller1",
                        "managedElementIds": [
                             "kista_3",
                             "kista_4"
            ]
         }
      ]
   }
}            ]
         }
      ]
   }
}

update policy-agent/Dockerfile: 

ADD /config/application_configuration.json /opt/app/policy-agent/data/application_configuration.json_example

to

ADD /config/application_configuration.json /opt/app/policy-agent/data/application_configuration.json


Build the code and create docker images

...

Code Block
languagebash
cd a1-interface/near-rt-ric-simulator
docker build -t near-rt-ric-simulator:latest .

Build

...

NONRTRIC / A1 Policy control panel container

Download the nonrtric repo (defaults to master branch): 

     git clone "https://gerrit.o-ran-sc.org/r/portal/nonrtric-controlpanel"

Verify

...

controlpanel configuration

(warning) Note that nonrtric-controlpanel/dashboard/webapp-backend/src/main/resources/application.properties default property value policycontroller.url.prefix = http://policy-agent-container:8081 assumes that policy agent is started with name policy-agent-container and exposes port 8081 (as is done below)! 

...

Code Block
languagebash
cd nonrtric-controlpanel
mvn clean install -Dmaven.test.skip=true

Run A1 Controller Docker Container

  • A1 Controller must be started first to set up docker network
  • Change directory to
    cd nonrtric/sdnc-a1-controller/oam/installation/src/main/yaml
  • Run docker container using the command below  
    docker-compose up a1-controller
    • the container is ready once message "Healthcheck Passed in XX seconds." appears
    • note that certificate-related errors "cp: can't stat '/opt/opendaylight/current/certs/*': No such file or directory" and "Error: File not found in path entered" can be ignored 
  • The Karaf logs of A1 controller can be seen using the following commands: followed e.g. by using command 
    docker exec -it a1-controller-container sh
    cd -c "tail -f /opt/opendaylight/data/log/
    tail -f karaf.logkaraf.log"

Open Daylight GUI

Run Near-RT

...

RIC A1 Simulator Docker Containers

  • Start docker containers for each ric defined in nonrtric/policy-agent/config/application_configuration.yaml  json in previous steps (in this example for ric1 and ric2) and providing A1 interface version OSC_2.1.0 with the following commands:: 
    docker run -p 8085:8085 -p 8185:8185 -e A1_VERSION=OSC_2.1.0 -e ALLOW_HTTP=true --network=nonrtric-docker-net --name=ric1 near-rt-ric-simulator:latest
    docker run -p 8086:8085 -p 8185:8185 -e A1_VERSION=OSC_2.1.0 -e ALLOW_HTTP=true --network=nonrtric-docker-net --name=ric2 near-rt-ric-simulator:latest
  • Change directory to:  
    cd a1-interface/near-rt-ric-simulator/test/OSC_2.1.0/jsonfiles
  • Put an example policy_type into the started near-rt-ric-simulator instances by running these curl commands (in this example to ric1 exposed to port 8085 and ric2 exposed to port 8086):
    curl -X PUT -v "http://localhost:8085/a1-p/policytypes/123" -H "accept: application/json" \
    -H "Content-Type: application/json" --data-binary @pt1.json
    curl -X PUT -v "http://localhost:8086/a1-p/policytypes/123" -H "accept: application/json" \
    -H "Content-Type: application/json" --data-binary @pt1.json

...

  • Run docker container using this command once A1 Controller and simulators have been fully started
    docker run -p 8081:8081 --network=nonrtric-docker-net --name=policy-agent-container o-ran-sc/nonrtric-policy-agent:12.0.0-SNAPSHOT

(warning) Note on automatic A1 Client selection


  • Once policy-agent is up and running, it establishes connections to all configured

...

  • Near-RT RICs

...

  • (Note: In Bronze Maintenance veriosn it will be possible to point docker to use a different configuration file than the version included inside the container - e.g. to add additional near-RT-RICs)
  • If policy-agent-container is configured to log at DEBUG level, the following logs should appear to log to show that connection to the configured RICs has been established successfully via A1 Controller.
$ docker logs policy-agent | grep "protocol version" 2020-04-03 12:20:00.239 DEBUG 1 --- [or-http-epoll-1] o.o.policyagent.clients.A1ClientFactory : Established protocol version:STD_V1 for Ric: ric1 2020-04-03 12:20:00.248 DEBUG 1 --- [or-http-epoll-2] o.o.policyagent.clients.A1ClientFactory : Established protocol version:STD_V1 for Ric: ric2
Code Block
languagebash
titleSDNC A1 Client
$ docker logs policy-agent-container | grep "protocol version"
2020-04-0317 1211:2010:0011.239357 DEBUG 1 --- [or-http-epoll-1] o.o.policyagent.clients.A1ClientFactory  : Established protocol version:SDNC_OSC_OSC_V1 for Ric: ric1
2020-04-0317 1211:2010:0011.248387 DEBUG 1 --- [or-http-epoll-21] o.o.policyagent.clients.A1ClientFactory  : Established protocol version:SDNC_OSC_OSC_V1 for Ric: ric2
Code Block
languagebash
titleSTD A1 Client

policy-agent Swagger API

For troubleshooting/verification purposes you can view/access the policy-agent swagger API from url: http://localhost:8081/swagger-ui.html

Run Non-RT

...

RIC

...

Control Panel Docker Container

Run docker container using this command: 

docker run -p 8080:8080 --network=nonrtric-docker-net o-ran-sc/nonrtric-controlpanel:12.0.0-SNAPSHOT

Open

...

...

NONRTRIC / A1 Policy Control Panel UI

Dashboard UI can be accessed by pointing the web-browser to this URL: 

...