Ref: NONRTRIC-487 - Getting issue details... STATUS

  • O-RU sends alarm as VES event to "unauthenticated.SEC_FAULT_OUTPUT"
  • Poll DMaaP for alarms from "unauthenticated.SEC_FAULT_OUTPUT"
  • Filter the alarms for "faultFields:alarmCondition" set to "28" ("C/U-plane logical Connection faulty"), with "faultFields:eventSeverity" anything but "NORMAL"
  • Find O-RU identity in the alarm, provided in "commonEventHeader:sourceName", and then find the corresponding O-DU through hard coded mapping (for now)
  • REST conf call to OAM Controller through SDNR, using endpoint:
    to set the administrative state of the O-DU to UNLOCKED, providing data:
    {"o-ran-sc-du-hello-world:du-to-ru-connection":  [{"name": "O-RU-ID", "administrative-state": "UNLOCKED"}]}
  • (Poll DMaaP and trace out the alarm clear, "faultFields:eventSeverity" "NORMAL")

The script version is now available as a docker image in the Nexus repo, see Docker image.

The script has default values for all data that can be modified at startup with the following parameters:

usage: PROG [-h] [--mrHost MRHOST] [--mrPort MRPORT] [--mrTopic MRTOPIC] [--sdnrHost SDNRHOST] [--sdnrPort SDNRPORT] [--oRuTooDuMapFile ORUTOODUMAPFILE] [--pollTime POLLTIME] [-v] [--version]

optional arguments:
-h, --help show this help message and exit
--mrHost MRHOST The URL of the MR host (default: http://message-router.onap)
--mrPort MRPORT The port of the MR host (default: 3904)
--mrTopic MRTOPIC The topic to poll messages from (default: unauthenticated.SEC_FAULT_OUTPUT)
--sdnrHost SDNRHOST The URL of the SNDR host (default: http://localhost)
--sdnrPort SDNRPORT The port of the SDNR host (default: 9990)
A file with the mapping between O-RU ID and O-DU ID as a dictionary (default: o-ru-to-o-du-map.txt)
--pollTime POLLTIME The time between polls (default: 10)
-v, --verbose Turn on verbose printing
--version show program's version number and exit

The container must be connected to the same network as the MR and SDNR are running in. The parameters to the application can be provided with the `-e PARAM_NAME=PARAM_VALUE` notation. Start the container by using the command, with available params listed:

docker run --network [NETWORK NAME] --name oru-app -e VERBOSE=on -e MR-HOST=[HOST NAME OF MR] -e MR-PORT=[PORT OF MR] -e SDNR-HOST=[HOST NAME OF SDNR] -e SDNR-PORT=[PORT OF SDNR] oru-app
  • No labels


  1. It would be good to know exactly which field to use to get the O-RU ID needed to find the corresponding O-RU. Could it be "reportingEntityId"? According to the documentation it should contain: "The OAM-Controller identifier with in the SMO - e.g. the fully qualified domain name or IP-Address."

  2. The REST endpoint to use towards the O-DU:

    "/rests/data/network-topology:network-topology/topology=topology-netconf/node=O-RAN-DU-01/yang-ext:mount/o-ran-sc-du-hello-world:network-function/du-to-ru-connection={name}": {
      "post": {
        "description": "A list of connection objects to O-RAN-SC radio units.",
        "summary": "POST - O-RAN-DU-01 - o-ran-sc-du-hello-world - du-to-ru-connection",
        "tags": [
          "mounted O-RAN-DU-01 o-ran-sc-du-hello-world"
         "requestBody": {
           "content": {
           "application/json": {
             "schema": {
               "$ref": "#/components/schemas/o-ran-sc-du-hello-world_network-function_config_du-to-ru-connection_post"
         "application/xml": {
           "schema": {
             "$ref": "#/components/schemas/o-ran-sc-du-hello-world_network-function_config_du-to-ru-connection_post_xml"
      "description": "du-to-ru-connection_config"
      "parameters": [
          "name": "name",
          "description": "It is proposed to use the network unique identifier of the remote\nnetwork function.\nNote: After discussion the string was not restricted by a
          'length'\nstatement of a 'pattern' statement. Please avoid leading and ending\nspaces and consecutive spaces and any character outside of UTF-8-",
          "schema": {
              "type": "string"
            "in": "path",
            "required": true
      "responses": {
        "201": {
          "description": "Created"

    The data:

      "o-ran-sc-du-hello-world_network-function_config_du-to-ru-connection_post": {
        "type": "object",
        "properties": {
          "administrative-state": {
            "description": "Administrative state of a connection.",
            "enum": [
            "default": "LOCKED",
            "type": "string",
            "xml": {
              "name": "administrative-state",
              "namespace": "urn:o-ran-sc:yang:o-ran-sc-du-hello-world"
          "title": "o-ran-sc-du-hello-world_network-function_config_du-to-ru-connection_post",
          "description": "A list of connection objects to O-RAN-SC radio units.",
          "xml": {
            "name": "du-to-ru-connection",
            "namespace": "urn:o-ran-sc:yang:o-ran-sc-du-hello-world"