Welcome to O-RAN SC qp-driver Documentation

qp-driver Overview

QP Driver is an Xapp in the traffic steering O-RAN use case. There are four total Xapps:

  1. Traffic steering, which sends “prediction requests” to QP Driver (this)
  2. QP Driver (this) which fetches data from SDL[4] on behalf of traffic steering, both UE Data and Cell Data, merges that data together, then sends off the data to the QP Predictor
  3. QP Predictor which predicts (?) and sends that prediction back to Traffic Steering
  4. the fourth Xapp is called KPIMONN which populates SDL in the first place

So in summary, the QP Driver xapp is a helper function that sits between Traffic Steering and QP Predictor.

Release Notes

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

[1.1.0] - 2020-06-29

  • Send alarm on SDL failure (RICAPP-117)
  • Define configuration properties in xapp-descriptor controls section with JSON schema
  • Add configuration-change handler method that logs the event
  • Requires RMR at version 4.1.2 or later
  • Requires xapp-frame-py at version 1.3.0 or later

[1.0.9] - 2020-06-02

[1.0.8] - 2020-05-22

[1.0.7] - 2020-05-15

  • Include xapp descriptor json in repo (RICAPP-97)

[1.0.6] - 2020-05-12

[1.0.5] - 2020-05-08

  • Upgrade to RMR version 4.0.5
  • Upgrade to framework version 1.1.0
  • Use constants from rmr module instead of hardcoded strings
  • Add Dockerfile-Unit-Test to support testing

[1.0.4] - 2020-05-05

  • Upgrade to RMR version 4.0.2

[1.0.3] - 2020-04-22

  • Upgrade to RMR version 3.8.2

[1.0.2] - 4/8/2020

  • Upgrade to xapp frame 1.0.0 which includes rmr python

[1.0.1] - 4/3/2020

  • Docker now builds with an empty route file so rmr starts; it will not even start properly without this
  • Change how fake_sdl is activated for docker convienence
  • Create dev guide file
  • Add instructions on how to test the rmr healthcheck in a running container
  • Update to xapp frame 0.7.0 (which has rmr healthchecks)

[1.0.0] - 4/1/2020

  • This release is seen as the first complete implementation of QPD, although likely fixes and enhancements are needed
  • Implement the rmr messaging
  • Add tests for various bad scenarios like UE IDs not existing and Cell data not existing
  • Fix UE IDs to be strings as they are in the req slides

[0.2.0] - 3/27/2020

  • Implement SDL calls and testing
  • Small cleanups

[0.1.0] - 3/26/2020

  • Implement the core business logic of the data merge

[0.0.2] - 3/25/2020

  • Move to SI95
  • Move to Xapp frame 0.6.0
  • Move to py38
  • Remove unneeded stuff from setup.py since this is a docker component and not a pypi library
  • Add some mock data for future development

[0.0.1] - 3/17/2020

  • inital skeleton creation

Installation Guide

Installation

[to come]

Developers Guide

Version bumping the Xapp

This project follows semver. When changes are made, update the version strings in:

  1. container-tag.yaml
  2. docs/release-notes.rst
  3. setup.py
  4. xapp-descriptor/config.json

Testing RMR Healthcheck

The following instructions should deploy the QP Driver container in bare docker, and allow you to test that the RMR healthcheck is working.

docker build -t qpd:latest -f  Dockerfile .
docker run -d --net=host -e USE_FAKE_SDL=1 qpd:latest
docker exec -it CONTAINER_ID /usr/local/bin/rmr_probe -h 127.0.0.1:4560

Unit Testing

Running the unit tests requires the python packages tox and pytest.

The RMR library is also required during unit tests. If running directly from tox (outside a Docker container), install RMR according to its instructions.

Upon completion, view the test coverage like this:

tox
open htmlcov/index.html

Alternatively, if you cannot install RMR locally, you can run the unit tests in Docker. This is somewhat less nice because you don’t get the pretty HTML report on coverage.

docker build  --no-cache -f Dockerfile-Unit-Test .