Deployment Artifacts

Docker Container

E2sim docker image needs to be generated locally for different RIC instance, will improve in the Cherry maintenance window. 

KPIMON needs CI jobs for image releasing

QPdriver image 1.0.9 in staging is different than the 1.0.9 image in release repo

Need to release QP and TS xApp images

xApp Descriptors

Need to update TS, QP, QP driver descriptors to release version

Need to create a descriptor for KPMMON

E2E FlowsE2 setup

E2 Subscription

E2 Indication

KPMMON write to SDL

Create A1 Policy

TS read from SDL 

TS sends triggers to QP driver

QP driver gets data from SDL

QP driver send data to QP

QP provide prediction

TS make control decision

MWC LA Demo Video

Test Manual

Deploy E2Simulator

There are several steps below that need to be taken to run this successfully. Sorry it is not yet as smooth as it should be. Some of these need to be automated properly, and some have to do with platform issues. If someone could take some of these on it would be helpful.

1. Deploy RIC platform

2. kubectl rollout restart deployment --namespace ricplt deployment-ricplt-e2mgr deployment-ricplt-e2term-alpha (The e2mgr and e2term need to be restarted; this is due to some issues with health check; I don’t know whether it has been resolved by that team)

3. clone sim/e2-interface

4. In the root directory of e2sim: Follow directions in README to produce the deb files

5. Since the deb files are not yet pushed to package cloud, we need to copy them

6. cp e2sim*deb ../e2sm_examples/kpm_e2sm

7. cd ../e2sm_examples/kpm_e2sm

8. Edit the Dockerfile at the bottom to have IP address of service-ricplt-e2term-sctp-alpha service

9. docker build .

10. docker tag <tag just built> e2simul:0.0.2

11. helm install –namespace ricplt helm

Once deployed, kubectl logs will show:

  1. An E2 Setup Request from E2 Simulator to E2 Term
  2. An E2 Setup Response from E2 Term to E2 Simulator

Onboarding and Deployment of xApps

The Use case involves four different xApps:

  • Traffic Steering (TS) xApp (AT&T)
  • QoE Prediction Driver (QPDriver) xApp (AT&T)
  • QoE Prediction (QP) xApp (AT&T)
  • KPIMON xApp (Samsung)

The first step is to deploy KPIMON xApp

Since KPIMON xApp does not yet have a CI job to create an image in Nexus and also does not have an xApp descriptor,

currently KPIMON deployment must be done in the following way:

  1. clone scp/ric-app/kpimon (note it is different than the ric-app/kpimon repo)
  2. docker build .
  3. docker tag <image tag just created> nexus3.o-ran-sc.org:10002/ric-app-kpimon:1.0.0
  4. curl -X POST --data-binary @xappkpimon-0.2.0.tgz http://<vm-name>:32080/helmrepo/api/charts (Push hand-crafted helm chart to appmgr chart museum)

We include the helm chart tarball here:


Now deploy the other three xApps

Each of these three xApps have a descriptor in their gerrit repo under the xapp-descriptor/ directory.

None of them have xapp specific controls and therefore no individual json schema 

(Update Nov 23, QPDriver needs a separate schema file)

Here are the URLs for each which can be included in HTTP POST call to onboard tool

TS xApp:


QPDriver xApp:





QP xApp


Here is the URL for the Xapp Onboarder in your environment.  The values 'ingress_host', 'ingress_port_http' and 'xapp_onboarder_path' refer to the hostname and port for reaching Kong ingress controller, and the ingress path assigned to xapp onboarder (likely the path is set to 'onboard').


As an example, the message body for the TS xapp is below.  This needs to be sent in a POST request with Content-Type equal to 'application/json'


To subsequently deploy any of these xapps, use the following command:

curl --location --request POST "http://{{ingress_host}}:{{ingress_port_http}}/{{xapp_onboarder_path}}/ric/v1/xapps" --header 'Content-Type: application/json' --data-raw '{"xappName": "trafficxapp"}'

(where xappName would be later set to 'qpdriver' and 'qp' to deploy the QP Driver and QP xapps respectively)

Creation of Traffic Steering Policy Type and Policy Instance

TS xApp consumes an A1 Policy

Below are the steps for providing it with a policy.

Policy Type Create 

Copy the following into a file called create.json -
Policy Type Create

{"name" : "tsapolicy", "description" : "tsa parameters", "policy_type_id" : 20008, "create_schema" : { "$schema" : "http://json-schema.org/draft-07/schema#", "type" : "object", "properties" : { "threshold" : { "type" : "integer", "default" : 0 } }, "additionalProperties" : false } }

Then run:

curl -X PUT --header "Content-Type: application/json"  --data-binary @create.json   http://<Base URL for Kong>/a1mediator/a1-p/policytypes/20008

Policy Create

Run command:

curl -X PUT --header "Content-Type: application/json" --data "{\"threshold\" : 5}" http://<Base URL for Kong>/a1mediator/a1-p/policytypes/20008/policies/tsapolicy145

  • No labels


  1. When trying to deploy the E2 simulator, I get the following error: 

    root@riccherry:~/e2-interface/e2sim/e2sm_examples/kpm_e2sm# docker build .
    Sending build context to Docker daemon  5.014MB
    Step 1/16 : FROM nexus3.o-ran-sc.org:10004/o-ran-sc/bldr-ubuntu18-c-go:8-u18.02 as buildenv
    manifest for nexus3.o-ran-sc.org:10004/o-ran-sc/bldr-ubuntu18-c-go:8-u18.02 not found: manifest unknown: manifest unknown

    Is there any solution to this?

    1. I apparently solved this with this command:

      docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/bldr-ubuntu18-c-go:1.9.0

      but then got a Cmakelist not found in /playpen error, so I copied the Dockerfile to the e2sim folder and then removed the build folder... I'm not sure if that's the way to go, it just made it work (apparently). 

      But now, when I reached last step (helm install –namespace ricplt helm) I got this error:

      Error: This command needs 1 argument: chart name

      Any solution to this? Are the previous steps done correctly?

      1. It finally worked. 

        Now I have doubts on how to send the Schema file. Using this command "ttp://{{ingress_host}}:{{ingress_port_http}}/{{xapp_onboarder_path}}/api/v1/onboard/download" I get this error:

            "error_source": "config-file.json",
            "error_message": "'xapp_name' is a required property",
            "status": "Input payload validation failed"

        Is that the right command? 

        Another error I get, is when trying to deploy the xapps:

        root@riccherry:~/kpimon# curl --location --request POST "" --header 'Content-Type: application/json' --data-raw '{"xappName": "qp"}'
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
        <title>404 Not Found</title>
        <h1>Not Found</h1>
        <p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>

        Any help would be appreciated.

        1. I know this is a bit late.

          But for users who encounter the same issue in the future,

          1. First, prepare the descriptors  — 

            echo '{"config-file.json_url": "https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/qp.git;a=blob_plain;f=xapp-descriptor/config.json;hb=HEAD" }' > onboard.qp.url

          2. Next, Onboard the xApp — 
            sudo curl --location --request POST "" --header 'Content-Type: application/json' --data-binary "@./onboard.qp.url"
          3. You can verify if the helm chart exists using 
            sudo curl --location --request GET ""
          4. Finally, deploy the xApps
            sudo curl --location --request POST "" --header 'Content-Type: application/json' --data-raw '{"xappName": "qp"}' -v

          Remember to replace the IP address with the IP of your Kong ingress controller. This you can find out using
           sudo kubectl get service -A | grep 32080

          Note that I have illustrated the steps for only one xApp. You'll have to repeat this for the other two(qpdriver & trafficsteering). Refer to Zheng Gao's tutorial for more details – (https://blog.csdn.net/jeffyko/article/details/107426626?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242)

          1. Hi Pratheek,

            Do you know how the Schema url we see here is intended to be used?

      2. If someone encounters the "manifest unknown" error try following these steps (This worked for me):

        1.  Pull the dockerfile base image
          docker pull nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-ubuntu18-c-go:1.9.0
        2.  Set the appropriate tag - This can be found in the DockerFile
          docker tag nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-ubuntu18-c-go:1.9.0 nexus3.o-ran-sc.org:10004/o-ran-sc/bldr-ubuntu18-c-go:8-u18.04

        Run docker build . after following the above two steps.  

        P.S : If you are not able to pull the docker image(step 1), try logging into the o-ran docker registry server 

        docker login -u docker -p docker https://nexus3.o-ran-sc.org:10004

        docker login -u docker -p docker https://nexus3.o-ran-sc.org:10002

        Then continue with the steps mentioned above. 

        Hope this helps someone.

        1. in my case, change docker file line helped.

    2. I ran into this issue as well. I ended up building the bldr-ubuntu18-c-go image myself since I could not pull down any image with any tag. The steps to do this are: 

      git clone http://gerrit.o-ran-sc.org/r/it/dev

      cd dev/bldr-imgs/bldr-ubuntu18-c-go

      docker build -t bldr-ubuntu18-c-go:8-u18.04

      If you run into the issue where the "go get -v github.com/ory/go-acc" command returns with a non-zero code (hcl not found), I fixed this by changing line 80 of the Dockerfile


      && go get -v github.com/ory/go-acc \


      && GO111MODULE=on go get -v github.com/ory/go-acc \

      GO111MODULE=on is a way to force go to work in "modules mode" and will get the packages that are missing.

      I was then able to build the image in /kpm_e2sm with the locally built bldr-ubuntu18-c-go:8-u18.04 image rather than the one from nexus. You might need to change that line in the kpm_e2sm/Dockerfile to make sure it looks for the locally built one rather than the one from nexus. 

      As for your issue with helm install –namespace ricplt helm, when I copied the command from this page, there was only one space before namespace but there needs to be two (--namespace). This was the result:

      $ sudo helm install --namespace ricplt helm
      NAME: running-seagull
      LAST DEPLOYED: Mon Mar 22 23:45:36 2021
      NAMESPACE: ricplt

      ==> v1/Pod(related)
      e2sim-66c676d66b-mf77c 0/1 Pending 0 0s

      ==> v1/Deployment
      e2sim 1 0 0 0 0s

      Hope some of this helps.

  2. It looks like "bldr-ubuntu18-c-go" has a new tag "1.9.0" in nexus3.

    I updated it in the Dockerfiles for e2sim as part of this change request:


    The build works now, locally and in Jenkins.

  3. Hello,

    When onboarding the kpimon xApp and reviewing its logs, I get a constant "Waiting for RMR to be ready ..." message, the implication being that the RMR route table has not been read, since the int(C.rmr_redy(m.context)) portion within xapp_frame/pkg/xapp/rmr.go is not returning a 1. Fundamentally, even though the routes.txt file, which is meant to contain the routing table, does exist and is being passed as the RMR_SEED_RT environment variable in the Dockerfile, the file itself is empty. Even when I try to populate it with the appropriate routes, it still isn't read and as such the xApp never starts working since the RMR is never ready.

    For added context, within the example xApp that is found in the xapp_frame folder, the routing table file is populated, the file is correctly passed as the ENV in the Dockerfile, and the xApp correctly references it in order to start the RMR. When I remove the contents of the routing table file and rebuild the image, the same issue that exists with the KPIMON xApp happens, as you would expect.

    Could you advise me on how to proceed; what routes should exist within the routes.txt file and how can I modify rhe Dockerfile so that the building of the image properly reads it.

    1. Hello Stefan,

      Have you found any sollutions to this problem? What I have is somewhat similar to yours: 

      {"ts":1625734432909,"crit":"INFO","id":"kpimon","mdc":{"time":"2021-07-08T08:53:52"},"msg":"rmrClient: Waiting for RMR to be ready ..."}

      1625734433 1/RMR [INFO] endpoint: no counts: empty table

      However my pod is getting deployed. It is just the xapp not functioning properly, because it has no routing table. I also tried changing the routing file, but it didn't help. Also try commenting out the line, which copies the RMR_SEED_RT to routes.txt.

      1. Hi Yevhenii,

        Yes, same on my side. The pod is deployed and running but the xApp itself never reaches the RIC_SUB_REQ portion because the RMR is never reported as ready. Unfortunately, even after a lot of troubleshooting and testing with various RMR and xapp_frame versions, I have no solution. Maybe we should post our concern somewhere else

        1. Hi, is there any other way to access the UE and Cell metrics and be able to write something into it?

      2. hi,
        there is resolution for this issue below in comments.

  4. Hi everyone, 

    So i have successfully deployed the e2sim, but I am struggling with finding any manuals for it. 

    Also, has anyone managed to get hands on that e2-sim by viavi present into the video, if so could you please share the git link?

    Any help would be appreciated,


  5. Hello,

    The E2-sim by Viavi is not yet released to the open-source community. They have just released the data (https://github.com/o-ran-sc/sim-e2-interface-data/blob/master/VIAVI%20RIC%20Tester%20Demo%20dataset.md). This gives a short description of the data. The E2-Sim is called the RIC tester and you might have to buy it from Viavi (https://www.viavisolutions.com/en-us/products/teravm-o-ran-ric-tester#overview). As far as I know, they haven't made it open source yet.

    1. Hi Pratheek, 

      Thanks for your help. Do you have any clue on how to feed the particular emulation data into the E2 SIM? For example, let's say I want to have 3 cells and a few stationary UE. I looked through the entire e2-interface folder and have not found any guidance on this topic. 



    2. Hi Pratheek, do you know any open source simulator that can generate this kind of cell and UE reports?

      1. After successful deployment of KPIMON, KPIMON trigger e2sim(o-ran opensource) to send reports.
        Please note that xapps need to be deployed after e2sim (or do rollout restart deployment of xapp) to correctly send subsrcibe events to e2sim (observed on kpimon and hwxapp).

        please find example message:
        [E2AP ASN] Encoded succesfully, encoded size = 147
        in sctp send data func
        data.len is 147after getting sent_len
        De line is {"cellMeasReport":{"du-id":1010,"measTimeStampRf":"2020-11-05T15:39:58.859766","cellMeasReportList":[{"nrCellIdentity":10,"throughput":0.3,"pdcpByteMeasReport":{"measPeriodPdcpBytes":10,"pdcpBytesDl":307.2,"pdcpBytesUl":307.2},"prbMeasReport":{"measPeriodPrb":10,"availPrbDl":250,"availPrbUl":250}}]}}
        key is valid
        first key is cellMeasReport
        it is equal to cell meas report
        UE number 0
        Cell ID 10
        Bytes DL 307.200012
        Bytes UL 307.200012
        Avail PRB DL 250
        Avail PRB UL 250
        Encoding Style 5 Message body
        inner er encded is 14
        after encoding message
        error length 0
        error buf

  6. Hello Everyone,

    I got some error while building docker image kpimon xapp

    Step 27/36 : RUN go build ./cmd/kpimon.go && pwd && ls -lat
    ---> Running in 1c6ed14d9733
    # gerrit.o-ran-sc.org/r/ric-plt/sdlgo
    ../../../ric-plt/sdlgo/sdl.go:63:3: cannot use sdlgoredis.Create() (type *sdlgoredis.DB) as type iDatabase in field value:
    *sdlgoredis.DB does not implement iDatabase (wrong type for DelIEPub method)
    have DelIEPub(string, string, string, interface {}) (bool, error)
    want DelIEPub([]string, string, interface {}) (bool, error)
    ../../../ric-plt/sdlgo/sdl.go:306:19: too many arguments in call to s.iDatabase.SetIEPub
    have (string, string, string, interface {}, interface {})
    want ([]string, string, interface {}, interface {})
    ../../../ric-plt/sdlgo/sdl.go:327:19: too many arguments in call to s.iDatabase.SetNXPub
    have (string, string, string, interface {})
    want ([]string, string, interface {})
    ../../../ric-plt/sdlgo/sdl.go:386:19: too many arguments in call to s.iDatabase.DelIEPub
    have (string, string, string, interface {})
    want ([]string, string, interface {})
    ../../../ric-plt/sdlgo/syncstorage.go:66:34: s.db.instances undefined (type *Database has no field or method instances)
    ../../../ric-plt/sdlgo/syncstorage.go:68:13: s.db.instances undefined (type *Database has no field or method instances)
    ../../../ric-plt/sdlgo/syncstorage.go:112:25: s.db.instances undefined (type *Database has no field or method instances)
    ../../../ric-plt/sdlgo/syncstorage.go:320:36: not enough arguments in call to s.getDbBackend(ns).SetIEPub
    have ([]string, string, interface {}, interface {})
    want (string, string, string, interface {}, interface {})
    ../../../ric-plt/sdlgo/syncstorage.go:344:36: not enough arguments in call to s.getDbBackend(ns).SetNXPub
    have ([]string, string, interface {})
    want (string, string, string, interface {})
    ../../../ric-plt/sdlgo/syncstorage.go:614:6: iDatabase redeclared in this block
    previous declaration at ../../../ric-plt/sdlgo/sdl.go:609:6
    ../../../ric-plt/sdlgo/syncstorage.go:344:36: too many errors

    did anyone knows this error ?




    1. This might be due to pulling the SDL package from the master branch. I would say try pulling sdl from cherry branch. You will need to add "-b cherry" in the DockerFile where sdl package is being cloned.

      1. thank you, this helped in my case.

      2. This worked, but I'm getting a CrashLoopBackOff on the pod, and logs are empty. The image doesn't seem to do anything. Do you know what's going on?

        1. try installing like this:

          docker run --rm -u 0 -it -d -p 8090:8080 -e DEBUG=1 -e STORAGE=local -e STORAGE_LOCAL_ROOTDIR=/charts -v $(pwd)/charts:/charts chartmuseum/chartmuseum:latest
          export CHART_REPO_URL=
          curl -X POST --data-binary @xappkpimon-0.2.0.tgz http://localhost:8090/helmrepo/api/charts
          dms_cli install xappkpimon 0.2.0 ricxapp

          1. I was trying to install version 1.0.0 of kpimon xapp (https://gerrit.o-ran-sc.org/r/admin/repos/scp/ric-app/kpimon). The 0.2.0 is a different xapp, or just an older version?

            I finally  managed to install v1.0.0 

            1. Javier Renart Espi
              i tried to deploy 1.0.0 with your notes :

              "Add this below:
              ENV PATH $PATH:/usr/local/bin
              ENV GOPATH /go
              ENV GOBIN /go/bin
              ENV RMR_SEED_RT /opt/routes.txt
              COPY routes.txt /opt/routes.txt"
              "I solved this by adding this line to the end of the Dockerfile
              CMD ./kpimon -f /go/src/gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/config/config-file.yaml"

              my steps:

              1. change dockerfile by adding mentioned code
              2. i deployed version 1.0.0 using dms_cli (config and embbed schema)
              3. changed image to that one i locally deployed from Dockerfile with your line (using edit deploy)
              4. i faced crashloopbackoff 

              Before i used 0.2.0 file that is attached at this page and use mentioned by me instructions do get pod running but with rmr route errors.

              1. You shouldn't get the crashloopbackoff when you add the CMD line. Make sure you're deploying the correct image in dms_cli. you can also execute manually in the container bash this command to check if it works: ./kpimon -f /go/src/gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/config/config-file.yaml

                1. i run new container via docker and execute script and it looks like it working and routes are included.

                  now, i need to find out why pod crashing.

                2. can you share your Dockerfile and config.json?

                  1. Dockerfileconfig.json

                    I deployed it as 1.0.2, to make sure I was deploying the new image.

                    1. thank you very much, it already workin also on my side!
                      i just repeat whole process form begining and now its working.
                      thanks Javier Renart Espiand Federico Rossi.

                      i suggest to update this page with dms_cli install method + update Dockerfile and config.json in GitHub - o-ran-sc/scp-ric-app-kpimon: Mirror of the scp/ric-app/kpimon repo

  7. please correct this point:
    11. helm install –namespace ricplt helm

    11. helm install --namespace ricplt helm

  8. user-919ab

    Hi All,

    Can anyone get the solution for the below issue? How to resolve the Imagepullbackoff

    Thanks in advance

    1. please find solution below in comments.

  9. please find current install method for KPIMON that helped me with this process

    git clone https://github.com/o-ran-sc/scp-ric-app-kpimon

    edit routes.txt

    edit Docker file
    FROM nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-ubuntu20-c-go:1.0.0 as kpimonbuild
    RUN git clone "https://gerrit.o-ran-sc.org/r/ric-plt/sdlgo" -b cherry
    just before RUN go build ./cmd/kpimon.go && pwd && ls -lat add the line RUN go env -w GO111MODULE=off
    ENV PATH $PATH:/usr/local/bin
    ENV GOPATH /go
    ENV GOBIN /go/bin
    ENV RMR_SEED_RT /opt/routes.txt
    COPY routes.txt /opt/routes.txt
    (Add at the end)

    CMD ./kpimon -f /go/src/gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/config/config-file.yaml

    build docker image
    docker build .

    docker tag (container id) nexus3.o-ran-sc.org:10002/ric-app-kpimon:1.0.0

    edit scp-ric-app-kpimon/xapp-descriptor/config.json
    "name": "xappkpimon",
    "image": {
    "registry": "nexus3.o-ran-sc.org:10002",
    "name": "ric-app-kpimon",
    "tag": "1.0.0"

    Install xapp using dms_cli tool
    docker run --rm -u 0 -it -d -p 8090:8080 -e DEBUG=1 -e STORAGE=local -e STORAGE_LOCAL_ROOTDIR=/charts -v $(pwd)/charts:/charts chartmuseum/chartmuseum:latest
    export CHART_REPO_URL=
    dms_cli onboard config.json ~/dep/xapps/embedded-schema.json (here you need to insert your path to embedded-schema.json)
    dms_cli install xappkpimon 1.0.0 ricxapp

    1. what kind of config required at e2term for KPImon. The router.txt at e2-term doesn't contain any entry for kpimon

  10. I followed the steps above but I am getting the following error . 

    ricxapp ricxapp-xappkpimon-67779646d9-nbk9k 0/1 CrashLoopBackOff 7 14m

    Logs - 

    Type Reason Age From Message
    ---- ------ ---- ---- -------
    Normal Scheduled <unknown> default-scheduler Successfully assigned ricxapp/ricxapp-xappkpimon-67779646d9-nbk9k to instance-1
    Normal Pulled 14m (x5 over 15m) kubelet, instance-1 Container image "nexus3.o-ran-sc.org:10002/ric-app-kpimon:1.0.0" already present on machine
    Normal Created 14m (x5 over 15m) kubelet, instance-1 Created container xappkpimon
    Normal Started 14m (x5 over 15m) kubelet, instance-1 Started container xappkpimon
    Warning BackOff 35s (x71 over 15m) kubelet, instance-1 Back-off restarting failed container

  11. The following is the error I am getting for kubectl describe command - 

    Warning FailedCreatePodSandBox 63s kubelet, instance-1 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "2d2f7e9c31899ba825ff3b8568625c7be28fcc5c7bac45652489b7d8d27ad594" network for pod "ricxapp-xappkpimon-67779646d9-nbk9k": networkPlugin cni failed to set up pod "ricxapp-xappkpimon-67779646d9-nbk9k_ricxapp" network: open /run/flannel/subnet.env: no such file or directory
    Warning FailedCreatePodSandBox 59s kubelet, instance-1 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "6cda90607928afaea99b6b2175b085e5ec82e146f7fd86a47f411893e20699ac" network for pod "ricxapp-xappkpimon-67779646d9-nbk9k": networkPlugin cni failed to set up pod "ricxapp-xappkpimon-67779646d9-nbk9k_ricxapp" network: open /run/flannel/subnet.env: no such file or directory
    Normal SandboxChanged 57s (x3 over 65s) kubelet, instance-1 Pod sandbox changed, it will be killed and re-created.
    Normal Pulled 45s kubelet, instance-1 Container image "nexus3.o-ran-sc.org:10002/ric-app-kpimon:1.0.0" already present on machine
    Normal Created 40s kubelet, instance-1 Created container xappkpimon
    Normal Started 39s kubelet, instance-1 Started container xappkpimon
    Warning BackOff 37s kubelet, instance-1 Back-off restarting failed container

  12. Hi Everyone,

    I'm getting the following error during the docker build process

    Step 17/36 : RUN cd xapp-frame && GO111MODULE=on go mod vendor -v && cp -r vendor/* /go/src/ && rm -rf vendor
    ---> Running in 7a19e58669db
    Fetching https://golang.org/x/net?go-get=1
    go: finding github.com/go-openapi/swag v0.19.7
    go: finding github.com/go-openapi/errors v0.19.3
    go: finding github.com/go-openapi/validate v0.19.6
    go: finding github.com/spf13/viper v1.4.0
    go: finding github.com/go-openapi/runtime v0.19.4
    Parsing meta tags from https://golang.org/x/net?go-get=1 (status code 200)
    get "golang.org/x/net": found meta tag get.metaImport{Prefix:"golang.org/x/net", VCS:"git", RepoRoot:"https://go.googlesource.com/net"} at https://golang.org/x/net?go-get=1
    go: finding golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297
    go: finding gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.5.2
    go: finding gerrit.o-ran-sc.org/r/com/golog.git v0.0.0-20190604083303-aaffc8ebe3f1
    go: finding gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.35
    go: finding gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.35
    go: finding github.com/go-openapi/loads v0.19.4
    go: finding github.com/spf13/pflag v1.0.3
    go: finding github.com/go-openapi/loads v0.19.2
    go: finding gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.35
    go: finding gerrit.o-ran-sc.org/r/ric-plt/alarm-go.git/alarm v0.4.2
    go: finding github.com/gorilla/websocket v1.4.0
    Fetching https://go.uber.org/atomic?go-get=1
    go: finding github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77
    Fetching https://gopkg.in/check.v1?go-get=1
    go: finding github.com/stretchr/testify v1.3.0
    Parsing meta tags from https://go.uber.org/atomic?go-get=1 (status code 200)
    get "go.uber.org/atomic": found meta tag get.metaImport{Prefix:"go.uber.org/atomic", VCS:"git", RepoRoot:"https://github.com/uber-go/atomic"} at https://go.uber.org/atomic?go-get=1
    go: finding go.uber.org/atomic v1.4.0
    go: finding github.com/vektah/gqlparser v1.1.2
    go: finding github.com/golang/protobuf v1.3.4
    go: finding github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef
    Parsing meta tags from https://gopkg.in/check.v1?go-get=1 (status code 200)
    get "gopkg.in/check.v1": found meta tag get.metaImport{Prefix:"gopkg.in/check.v1", VCS:"git", RepoRoot:"https://gopkg.in/check.v1"} at https://gopkg.in/check.v1?go-get=1
    go: finding gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127
    go: finding github.com/go-openapi/analysis v0.19.2
    go: finding github.com/go-openapi/swag v0.19.5
    go: gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /go/pkg/mod/cache/vcs/7e5fa1eab4705eb80c9746632736cea906708d060702d529df6241d1c8c2c9f9: exit status 128:
    fatal: unable to access 'https://gopkg.in/check.v1/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
    go: finding github.com/stretchr/testify v1.5.1
    Fetching https://go.uber.org/multierr?go-get=1
    go: finding github.com/davecgh/go-spew v1.1.1
    go: finding github.com/gorilla/mux v1.7.1
    go: finding github.com/gogo/protobuf v1.2.1
    go: finding github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
    go: finding github.com/go-openapi/strfmt v0.19.3
    Parsing meta tags from https://go.uber.org/multierr?go-get=1 (status code 200)
    get "go.uber.org/multierr": found meta tag get.metaImport{Prefix:"go.uber.org/multierr", VCS:"git", RepoRoot:"https://github.com/uber-go/multierr"} at https://go.uber.org/multierr?go-get=1
    go: finding go.uber.org/multierr v1.1.0
    go: finding github.com/pkg/errors v0.8.1
    go: finding github.com/go-openapi/analysis v0.19.5
    go: finding github.com/magiconair/properties v1.8.0
    go: finding github.com/hashicorp/hcl v1.0.0
    Fetching https://go.uber.org/zap?go-get=1
    go: finding github.com/mitchellh/mapstructure v1.1.2
    Fetching https://gopkg.in/yaml.v2?go-get=1
    go: finding github.com/stretchr/testify v1.4.0
    Fetching https://google.golang.org/grpc?go-get=1
    Parsing meta tags from https://go.uber.org/zap?go-get=1 (status code 200)
    get "go.uber.org/zap": found meta tag get.metaImport{Prefix:"go.uber.org/zap", VCS:"git", RepoRoot:"https://github.com/uber-go/zap"} at https://go.uber.org/zap?go-get=1
    go: finding go.uber.org/zap v1.10.0
    go: finding github.com/go-openapi/swag v0.19.2
    Parsing meta tags from https://gopkg.in/yaml.v2?go-get=1 (status code 200)
    get "gopkg.in/yaml.v2": found meta tag get.metaImport{Prefix:"gopkg.in/yaml.v2", VCS:"git", RepoRoot:"https://gopkg.in/yaml.v2"} at https://gopkg.in/yaml.v2?go-get=1
    go: finding gopkg.in/yaml.v2 v2.2.2
    go: finding github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6
    Parsing meta tags from https://google.golang.org/grpc?go-get=1 (status code 200)
    get "google.golang.org/grpc": found meta tag get.metaImport{Prefix:"google.golang.org/grpc", VCS:"git", RepoRoot:"https://github.com/grpc/grpc-go"} at https://google.golang.org/grpc?go-get=1
    go: finding google.golang.org/grpc v1.21.0
    go: gopkg.in/yaml.v2@v2.2.2: unknown revision v2.2.2
    go: finding github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5
    go: finding github.com/spf13/jwalterweatherman v1.0.0
    go: finding github.com/dgrijalva/jwt-go v3.2.0+incompatible
    go: finding github.com/ugorji/go v1.1.4
    go: finding gopkg.in/yaml.v2 v2.2.4
    go: gopkg.in/yaml.v2@v2.2.4: unknown revision v2.2.4
    go: finding github.com/coreos/etcd v3.3.10+incompatible
    go: finding github.com/mailru/easyjson v0.7.0
    go: finding github.com/go-redis/redis v6.15.3+incompatible
    go: finding github.com/soheilhy/cmux v0.1.4
    go: finding github.com/jessevdk/go-flags v1.4.0
    go: finding github.com/grpc-ecosystem/grpc-gateway v1.9.0
    go: finding github.com/go-openapi/jsonpointer v0.19.3
    go: finding github.com/go-openapi/spec v0.19.3
    go: finding github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63
    Fetching https://go.etcd.io/bbolt?go-get=1
    go: finding github.com/go-openapi/strfmt v0.19.0
    go: finding github.com/spf13/cast v1.3.0
    Parsing meta tags from https://go.etcd.io/bbolt?go-get=1 (status code 200)
    get "go.etcd.io/bbolt": found meta tag get.metaImport{Prefix:"go.etcd.io/bbolt", VCS:"git", RepoRoot:"https://github.com/etcd-io/bbolt"} at https://go.etcd.io/bbolt?go-get=1
    go: finding go.etcd.io/bbolt v1.3.2
    go: finding github.com/stretchr/testify v1.2.2
    Fetching https://golang.org/x/sys?go-get=1
    Parsing meta tags from https://golang.org/x/sys?go-get=1 (status code 200)
    get "golang.org/x/sys": found meta tag get.metaImport{Prefix:"golang.org/x/sys", VCS:"git", RepoRoot:"https://go.googlesource.com/sys"} at https://golang.org/x/sys?go-get=1
    go: finding golang.org/x/sys v0.0.0-20190204203706-41f3e6584952
    go: finding github.com/go-openapi/errors v0.19.2
    go: finding github.com/grpc-ecosystem/go-grpc-middleware v1.0.0
    go: finding github.com/prometheus/client_golang v0.9.3
    Fetching https://golang.org/x/time?go-get=1
    Parsing meta tags from https://golang.org/x/time?go-get=1 (status code 200)
    get "golang.org/x/time": found meta tag get.metaImport{Prefix:"golang.org/x/time", VCS:"git", RepoRoot:"https://go.googlesource.com/time"} at https://golang.org/x/time?go-get=1
    go: finding golang.org/x/time v0.0.0-20190308202827-9d24e82272b4
    go: finding github.com/go-openapi/jsonreference v0.19.3
    go: finding github.com/google/btree v1.0.0
    go: finding github.com/go-openapi/spec v0.19.2
    go: finding github.com/docker/go-units v0.4.0
    go: finding github.com/spf13/afero v1.1.2
    go: finding github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f
    Fetching https://golang.org/x/crypto?go-get=1
    Fetching https://go.mongodb.org/mongo-driver?go-get=1
    Parsing meta tags from https://golang.org/x/crypto?go-get=1 (status code 200)
    get "golang.org/x/crypto": found meta tag get.metaImport{Prefix:"golang.org/x/crypto", VCS:"git", RepoRoot:"https://go.googlesource.com/crypto"} at https://golang.org/x/crypto?go-get=1
    go: finding golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56
    go: finding github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2
    go: finding golang.org/x/net v0.0.0-20190522155817-f3200d17e092
    go: finding github.com/go-openapi/validate v0.19.2
    Fetching https://golang.org/x/tools?go-get=1
    go: finding github.com/kr/pretty v0.1.0
    Parsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)
    get "golang.org/x/tools": found meta tag get.metaImport{Prefix:"golang.org/x/tools", VCS:"git", RepoRoot:"https://go.googlesource.com/tools"} at https://golang.org/x/tools?go-get=1
    go: finding golang.org/x/tools v0.0.0-20190617190820-da514acc4774
    go: finding github.com/go-openapi/strfmt v0.19.4
    Parsing meta tags from https://go.mongodb.org/mongo-driver?go-get=1 (status code 200)
    get "go.mongodb.org/mongo-driver": found meta tag get.metaImport{Prefix:"go.mongodb.org/mongo-driver", VCS:"git", RepoRoot:"https://github.com/mongodb/mongo-go-driver.git"} at https://go.mongodb.org/mongo-driver?go-get=1
    go: finding go.mongodb.org/mongo-driver v1.1.2
    go: finding github.com/coreos/go-semver v0.2.0
    go: finding github.com/pelletier/go-toml v1.2.0
    go: finding github.com/stretchr/objx v0.2.0
    go: finding github.com/fsnotify/fsnotify v1.4.7
    go: finding github.com/jonboulle/clockwork v0.1.0
    go: finding github.com/coreos/bbolt v1.3.2
    go: finding github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e
    go: error loading module requirements
    The command '/bin/sh -c cd xapp-frame && GO111MODULE=on go mod vendor -v && cp -r vendor/* /go/src/ && rm -rf vendor' returned a non-zero code: 1

    Has anyone else encountered this error?

    Thanks for your time,

    Dan Shmirer

    1. I'm getting the same error now... Did you solve it?

      1. No, I'm using the c++ version from older release.

          1. Dont work so any more solutions???

            1. This error is basically because of an outdated version of Go (Go 1.12) installed in the base image nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-ubuntu18-c-go:1.9.0. This version fails some of the certificate checks and has broken links to revisions of Github repositories (Similar to this gopkg.in/yaml.v2@v2.2.4: unknown revision v2.2.4). That's why I guess it's stuck in the finding state and not downloading the dependencies. The fix is to use Ubuntu 20.04 image hosted by O-RAN-SC, which comes with GO 1.16. You can also build the image on your own using the Dockerfile hosted on https://gerrit.o-ran-sc.org/r/gitweb?p=it/dev.git;a=blob;f=bldr-imgs/bldr-ubuntu20-c-go/Dockerfile;h=8ddeb231c1631c4d25812c3c9527a38c29f0ae16;hb=HEAD. Here, you can change the version of Go to 1.17 too and build the base bldr-ubuntu20-c-go:1.0.0 image.

              Change the 1st line of the Docker file to 

              FROM nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-ubuntu20-c-go:1.0.0 as kpimonbuild

              Since we will be using Go 1.16 after the above change and Go 1.16 builds packages in module-aware mode by default, we need to set the environment variable GO111MODULE to off. So, just before

              RUN go build ./cmd/kpimon.go && pwd && ls -lat add the line RUN go env -w GO111MODULE=off. So it basically looks like this,

              RUN mkdir pkg

              RUN go env -w GO111MODULE=off
              RUN go build ./cmd/kpimon.go && pwd && ls -lat

              FROM ubuntu:20.04       # The original Dockerfile uses an ubuntu 18.04 image. Change to 20.04

              If the GO111MODULE=off is not set, an error occurs, asking for the go.mod file. Also, don't modify the line  GO111MODULE=on go mod vendor -v. If you set the GO111MODULE=off here, then the package dependencies will not be resolved cleanly since the compiler will not identify gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp as a valid package.

              More information regarding GO111MODULE and go.mod can be found here: https://maelvls.dev/go111module-everywhere/.

              Hope this helps.



  13. hi,
    i met problem with lack of RIC_SUB_RESP for kpimon.
    There is no answer sended after e2sim receive correctly RIC_SUB_REQ from kpimon.

    e2sim get RIC_SUB_REQ correctly:

    e2sim not sending response, indication messages are generated with ue/cell metrics by sim.

    KPIMON fail due to not receiving response:
    RMR is ready now ...
    {"ts":1633007921471,"crit":"DEBUG","id":"kpimon","mdc":{"time":"2021-09-30T13:18:41"},"msg":"send RIC_SUB_REQ to gNodeB with cnt=1"}
    {"ts":1633007921471,"crit":"DEBUG","id":"kpimon","mdc":{"time":"2021-09-30T13:18:41"},"msg":"The RMR message to be sent is 12010 with SubId=1001"}
    {"ts":1633007921473,"crit":"DEBUG","id":"kpimon","mdc":{"time":"2021-09-30T13:18:41"},"msg":"RIC_SUB_REQ[gnb_734_733_b5c67788]: Waiting for RIC_SUB_RESP..."}
    {"ts":1633007926486,"crit":"DEBUG","id":"kpimon","mdc":{"time":"2021-09-30T13:18:46"},"msg":"RIC_SUB_REQ[gnb_734_733_b5c67788]: RIC Event Create Timer experied!"}
    1633007947 10/RMR [INFO] sends: ts=1633007947 src=service-ricxapp-xappkpimon-rmr.ricxapp:4560 target=service-ricplt-a1mediator-rmr.ricplt:4562 open=0 succ=0 fail=0 (hard=0 soft=0)

    1. Hi Kamil Kociszewski,
      we are also getting same issue in Our KPImon logs. If you found any solution please let us know.
      Thanks a lot

    2. Hi,

      Did you get solution for this? am also struck in this step. pls help

  14. Hi all,  Pratheek Upadhyaya, is this flow currently working? I can't manage to make it work on Dawn release, but, will it work with cherry or bronze release?

  15. At the end of the instructions, it is said that the TS xapp consumes an A1 policy. I have a policy just like in the example, but the TS Xapp doesn't show any comunication with the A1 mediator, eventhough there is callback, the TS xapp doesn't ask for the Policy at any time. How is this supposed to work?

    1. hi Javier,

      i'm also facing the same issue unable to get the A1 POLICY REQ being sent to TS xapp. i've created below policies 

      curl -X PUT --header "Content-Type: application/json" -d @create.json

      curl -X PUT --header "Content-Type: application/json" --data '{"threshold" : 12}'

      In the a1-mediator logs i see following 'RMR_ERR_NOENDPT', 

      {"ts": 1634839103375, "crit": "DEBUG", "id": "/home/a1user/.local/bin/run-a1", "mdc": {"PID": 1, "SYSTEM_NAME": "", "HOST_NAME": "", "SERVICE_NAME": "", "CONTAINER_NAME": "", "POD_NAME": ""},
      "msg": "_send_msg: sending: {'payload': b'{\"operation\": \"UPDATE\", \"policy_type_id\": 20008, \"policy_instance_id\": \"tsapolicy145\", \"payload\": {\"threshold\": 12}}', 'payload length': 116, 'message type': 20010, 'subscription id': 20008, 'transaction id': b'7bb83ea2329811ec83bf16552b9254e4', 'message state': 0, 'message status': 'RMR_OK', 'payload max size': 116, 'meid': b'', 'message source': 'service-ricplt-a1mediator-rmr.ricplt:4562', 'errno': 0}"}
      {"ts": 1634839103375, "crit": "WARNING", "id": "/home/a1user/.local/bin/run-a1", "mdc": {"PID": 1, "SYSTEM_NAME": "", "HOST_NAME": "", "SERVICE_NAME": "", "CONTAINER_NAME": "", "POD_NAME": ""},
      "msg": "RMR send failed; pre-send summary: {'payload': b'{\"operation\": \"UPDATE\", \"policy_type_id\": 20008, \"policy_instance_id\": \"tsapolicy145\", \"payload\": {\"threshold\": 12}}', 'payload length': 116, 'message type': 20010, 'subscription id': 20008, 'transaction id': b'7bb83ea2329811ec83bf16552b9254e4', 'message state': 0, 'message status': 'RMR_OK', 'payload max size': 116, 'meid': b'', 'message source': 'service-ricplt-a1mediator-rmr.ricplt:4562', 'errno': 0},
      post-send summary: {'payload': None, 'payload length': 116, 'message type': 20010, 'subscription id': 20008, 'transaction id': b'7bb83ea2329811ec83bf16552b9254e4', 'message state': 2, 'message status': 'RMR_ERR_NOENDPT', 'payload max size': 116, 'meid': b'', 'message source': 'service-ricplt-a1mediator-rmr.ricplt:4562', 'errno': 6}"}
      {"ts": 1634839103375, "crit": "DEBUG", "id": "/home/a1user/.local/bin/run-a1", "mdc": {"PID": 1, "SYSTEM_NAME": "", "HOST_NAME": "", "SERVICE_NAME": "", "CONTAINER_NAME": "", "POD_NAME": ""}, "msg": "_send_msg: result message state: 2"}
      {"ts": 1634839103375, "crit": "WARNING", "id": "/home/a1user/.local/bin/run-a1", "mdc": {"PID": 1, "SYSTEM_NAME": "", "HOST_NAME": "", "SERVICE_NAME": "", "CONTAINER_NAME": "", "POD_NAME": ""}, "msg": "_send_msg: failed after 20 retries"}
      ::ffff: - - [2021-10-21 17:58:24] "GET /a1-p/healthcheck HTTP/1.1" 200 110 0.002131.

      my route entries for a1-mediator are as below... Do we need to add the trafficsim route entry here explicitly ? Any pointers would greatly help..



      However, if i initiate a query from traffic SIM to A1 Policy query i'm able to get response. 



      1. Hello Javier and Deena Md, prior to Dawn release we had this functionality where via A1 policy and a threshold value users were being qualified for further investigation. But in Dawn release that has been suppressed for time being and might be used in later versions.

        1. thanks Deepanshu for the information, is there any way i can make it work...i need it only for a single flow..not for production enviornment. 

        2. If we deploy the Cherry RIC will it work? 

          1. Deena Md Javier Renart Espi Was anyone able to get A1 policy flow working? Running into the same issue. Even tried on cherry release of Near-RT RIC.

  16. I am new to this does anyone know why helm install --namespace ricplt helm failed??

    Step 17/18 : CMD kpm_sim 36422
    ---> Using cache
    ---> 63fbf3c986b3
    Step 18/18 : CMD service-ricplt-e2term-sctp-alpha
    ---> Using cache
    ---> cc2c2d5cec91
    Successfully built cc2c2d5cec91
    root@leo-VirtualBox:/home/leo/ric-app-hw/init/e2-interface/e2sim/e2sm_examples/kpm_e2sm# docker tag cc2c2d5cec91 e2simul:0.0.2
    root@leo-VirtualBox:/home/leo/ric-app-hw/init/e2-interface/e2sim/e2sm_examples/kpm_e2sm# helm install --namespace ricplt helm
    Error: INSTALLATION FAILED: must either provide a name or specify --generate-name

  17. I am new to this does anyone know why helm install --namespace ricplt helm failed??

    Step 17/18 : CMD kpm_sim 36422
    ---> Using cache
    ---> 63fbf3c986b3
    Step 18/18 : CMD service-ricplt-e2term-sctp-alpha
    ---> Using cache
    ---> cc2c2d5cec91
    Successfully built cc2c2d5cec91
    root@leo-VirtualBox:/home/leo/ric-app-hw/init/e2-interface/e2sim/e2sm_examples/kpm_e2sm# docker tag cc2c2d5cec91 e2simul:0.0.2
    root@leo-VirtualBox:/home/leo/ric-app-hw/init/e2-interface/e2sim/e2sm_examples/kpm_e2sm# helm install --namespace ricplt helm
    Error: INSTALLATION FAILED: must either provide a name or specify --generate-name

  18. Have the following errors anyone can help pls!!

    Step 18/18 : CMD service-ricplt-e2term-sctp-alpha
    ---> Using cache
    ---> 6b9fc8819b20
    Successfully built 6b9fc8819b20
    root@leo-VirtualBox:/home/leo/ric-app-hw/init/e2-interface/e2sim/e2sm_examples/kpm_e2sm# helm install --namespace ricplt helm --generate-name
    Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(Deployment.spec.template.spec.containers[0]): unknown field "restartPolicy" in io.k8s.api.core.v1.Container
    root@leo-VirtualBox:/home/leo/ric-app-hw/init/e2-interface/e2sim/e2sm_examples/kpm_e2sm# docker tag 6b9fc8819b20 e2simul:0.0.2
    root@leo-VirtualBox:/home/leo/ric-app-hw/init/e2-interface/e2sim/e2sm_examples/kpm_e2sm# helm install --namespace ricplt helm --generate-name
    Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(Deployment.spec.template.spec.containers[0]): unknown field "restartPolicy" in io.k8s.api.core.v1.Container

    1. Leo ZidaneEdit helm/templates/deployment.yaml and just remove the entry "restartPolicy: never", redeploy and it will work.

      For the release name go under the helm directory and then type: helm install (your-release-name) . -n ricplt


      helm install e2sim . -n ricplt

      helm list -n ricplt | grep e2sim
      e2sim ricplt 1 2022-02-11 17:09:30.135383065 -0500 EST deployed e2sim-3.0.0 1.0

      to uninstall:

      helm uninstall e2sim -n ricplt

      1. Hi Federico Rossiand Leo Zidane I got the same issue but after deployment E2sim goes to CrashLoopBackOff. please find code of docker file changes and deployment.yaml below
        I saw that when I cloned repo CMD service-ricplt-e2term-sctp-alpha is not present in Docker file. So I added as below and built e2simul:0.0.3 image.
        CMD kpm_sim 36422
        CMD service-ricplt-e2term-sctp-alpha

        After building image. Ran helm install --name e2sim ./helm -n ricplt command pod goes to crashloop.
                - name: e2sim
                   image: e2simul:0.0.3
                   imagePullPolicy: IfNotPresent
                   restartPolicy: OnFailure

        Type Reason Age From Message
        ---- ------ ---- ---- -------
        Normal Scheduled 98s default-scheduler Successfully assigned ricplt/e2sim-76c4444cd4-79lvt to [node_name]
        Normal Pulled 7s (x5 over 97s) kubelet, [node_name] Container image "e2simul:0.0.3" already present on machine
        Normal Created 6s (x5 over 97s) kubelet, [node_name] Created container e2sim
        Normal Started 6s (x5 over 97s) kubelet, [node_name] Started container e2sim
        Warning BackOff 5s (x8 over 95s) kubelet, [node_name] Back-off restarting failed container

        could please suggest on this?
        Thanks a lot

  19. this forum is it alive dont see any updates very sad...

  20. in case, you meet problem after deploying QP xApp (problem with redis.py, problem with import from redis._compat), just add 
    RUN pip install --force-reinstall redis==3.0.1
    RUN pip install ricxappframe
    in Dockerfile and rebuild image using
    docker build --network host --no-cache .

  21. I got this influx db issue but it appears no one can resolve it any expert out here??

    Hi All,
    while checking logs of AD pod, got below error

    requests.exceptions.ConnectionError: HTTPConnectionPool(host='r4-influxdb.ricplt', port=8086): Max retries exceeded with url: /query?q=DROP+DATABASE+%22UEData%22 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f4e94c0f890>: Failed to establish a new connection: [Errno -2] Name or service not known'))

    after installing InfluxDB using steps from https://docs.o-ran-sc.org/projects/o-ran-sc-it-dep/en/latest/installation-guides.html#ric-applications 

    kubectl get services -n ricinfra 

    nfs-release-1-nfs-server-provisioner ClusterIP <none> 

    I have modified host for 2 files in AD pod based on current page comment suggestion-

    From host = str (default='r4-influxdb.ricplt.svc.cluster.local') to host =
    & insert.py
    from host= 'r4-influxdb.ricplt.svc.cluster.local' to host =

    but still getting same error in the logs.

    could you please help me with next steps to resolve this error or new method to resolve it, Would be great.

    1. Why did you use NFS provisioner IP for influxDB IP?

      If you want to hardcode the IP then you need to get the IP of the correct service:

      kubectl get services -n ricplt | grep influxdb

      I think it is better to do what the other commenters mentioned, rename 'r4-influxdb.ricplt' to 'ricplt-influxdb.ricplt' in the required files. If this does not work then try out hardcoding the IPs.

  22. Hi

    I can deploy the AD xApp but cannot do for TS Xapp

    node-0:~> git clone "https://gerrit.o-ran-sc.org/r/ric-app/ts"
    Cloning into 'ts'...
    remote: Counting objects: 9, done
    remote: Total 396 (delta 0), reused 396 (delta 0)
    Receiving objects: 100% (396/396), 179.08 KiB | 2.21 MiB/s, done.
    Resolving deltas: 100% (187/187), done.

    node-0:~/ts/xapp-descriptor> curl --location --request POST "http://node-0.leonard-118064.fcp.emulab.net:32080/onboard/api/v1/onboard/download" --header 'Content-Type: application/json' --data-binary "@./onboard.ts.url"
    "errors": {
    "config-file.json_url": "'config-file.json_url' is a required property"
    "message": "Input payload validation failed"

    1. Seems like the json file "onboard.ts.url" you have prepared is missing the "config-file.json_url" attribute.

      If you are using the RIC platform from master branch why don't you try using the dms_cli for onboarding?

      dms_cli onboard xapp-descriptor/config.json xapp-descriptor/schema.json

  23. Dear all,
    do someone already upgrade kpimon with getting ranList from RNIB instead of getting it from env?
    str := os.Getenv("ranList")

    Now, im setting this parameter with fixed id in xApp config

    i see that hwxapp getting it using C code:

  24. Hi All,
    To bring up KPIMON there are two ways.
    one is following as below which is mentioned in this wiki page (please note I have done port forward)

    kubectl port-forward r4-infrastructure-kong-646b68bd88-xjxkb 32088:32080 -n ricplt &
    curl -X POST --data-binary @xappkpimon-0.2.0.tgz http://<<VM-IP>>:32088/helmrepo/api/charts
    curl: (28) Failed to connect to port 32088: Connection timed out

    and another way was given in comment section as below:
    Install xapp using dms_cli tool
    docker run --rm -u 0 -it -d -p 8090:8080 -e DEBUG=1 -e STORAGE=local -e STORAGE_LOCAL_ROOTDIR=/charts -v $(pwd)/charts:/charts chartmuseum/chartmuseum:latest
    export CHART_REPO_URL=
    dms_cli onboard config.json ~/dep/xapps/embedded-schema.json
    dms_cli: command not found

    dms_cli install xappkpimon 1.0.0 ricxapp

    I am Unable to find embedded-schema.json file 

    please note-we are using master branch.

    Please Help

  25. Hi,
    please find embedded-schema.json


    1. Thanks Kamil Kociszewski,
      But as you can see the error dms_cli: command not found
      could you please provide steps or wiki page to install dms_cli.

      it will be really grateful.

      1. i just used commands from:
        "xApp Onboarding using CLI tool called dms_cli"
        Installation Guides — oran master documentation (o-ran-sc.org)

  26. Hi all,
    We in the last step of deployment KPI Mon.

    curl -X GET http://localhost:8090/api/charts | jq .
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    100 292 100 292 0 0 97333 0 --:--:-- --:--:-- --:--:-- 97333
    "xappkpimon": [
    "name": "xappkpimon",
    "version": "1.0.0",
    "description": "Standard xApp Helm Chart",
    "apiVersion": "v1",
    "appVersion": "1.0",
    "urls": [
    "created": "2022-07-18T05:46:53.740094499Z",
    "digest": "c30d3f972fe34cdb469a0cf4b104f8fdae01f00be5bc57746a37f7bb344c2933"
    dms_cli install --xapp_chart_name=xappkpimon --version=1.0.0 --namespace=ricxapp
    Error: This command needs 1 argument: chart name

    status: NOT_OK

    could you please suggest here?
    Thank you so much

  27. I have clone this repo in VM and try to build Traffic Steering xApp. can anyone suggest that is this the right way to build TS xApp
    after cloning it I tried to build TS xApp But I'm facing some issues while running this command ./populate_db.sh 
    saying - Error: unknown flag: --purge
    Sending build context to Docker daemon 19.97kB
    Error: unknown flag: --name

    the logs are given below-

    ubuntu@5g-xapp-ric:~/O-RANSC/ts/test/populatedb$ sudo ./populate_db.sh 
    Error: unknown flag: --purge
    Sending build context to Docker daemon  19.97kB
    Step 1/18 : FROM nexus3.o-ran-sc.org:10004/o-ran-sc/bldr-ubuntu18-c-go:8-u18.04 as buildenv
     ---> cdcad96bd128
    Step 2/18 : RUN mkdir /playpen
     ---> Using cache
     ---> b67ef92cd96d
    Step 3/18 : RUN mkdir /playpen/src
     ---> Using cache
     ---> d5de2f65cda7
    Step 4/18 : ENV LD_LIBRARY_PATH=/usr/local/lib
     ---> Using cache
     ---> 590fe3eef328
    Step 5/18 : RUN sudo apt-get update
     ---> Using cache
     ---> 8975e68b4ff5
    Step 6/18 : RUN apt-get install -y cpputest
     ---> Using cache
     ---> 60f2f15039c3
    Step 7/18 : RUN apt-get remove -y libboost-all-dev
     ---> Using cache
     ---> c9bd95e154f4
    Step 8/18 : RUN apt-get install -y  libboost-all-dev
     ---> Using cache
     ---> 693da838608e
    Step 9/18 : RUN apt-get install -y libhiredis-dev
     ---> Using cache
     ---> 8256af2d1006
    Step 10/18 : RUN apt-get install -y valgrind
     ---> Using cache
     ---> 504611253431
    Step 11/18 : RUN git clone https://gerrit.o-ran-sc.org/r/ric-plt/sdl
     ---> Using cache
     ---> 46f40ba26c32
    Step 12/18 : RUN cd sdl &&     ./autogen.sh &&     ./configure &&     make all &&     make install
     ---> Using cache
     ---> d4e12c7ddfa2
    Step 13/18 : COPY src/* /playpen/src/
     ---> Using cache
     ---> d10a29c5bf89
    Step 14/18 : RUN cd /playpen/src; make
     ---> Using cache
     ---> 5033d0f7725e
    Step 15/18 : ENV DBAAS_HOSTNAME="6379"
     ---> Using cache
     ---> eb6d9a9a4d1a
    Step 16/18 : ENV DBAAS_SERVICE_HOST="service-ricplt-dbaas-tcp.ricplt"
     ---> Using cache
     ---> ae7db0f10b7b
    Step 17/18 : WORKDIR /playpen/src
     ---> Using cache
     ---> 125895ef61d2
    Step 18/18 : CMD ./write_sdl
     ---> Using cache
     ---> 18aa3e17bd80
    Successfully built 18aa3e17bd80
    Successfully tagged ts-write-sdl:0.0.1
    Error: unknown flag: --name

  28. Hi all,

    I met a issue when I try to run kpimon xapp to trigger RIC subscription.

    It seems that ric e2term does not send the RIC subscription to the right address. 

    The gnb-ID of e2 simulator should be b5c67788 (I had checked pcap), but it seems that e2term is trying to send the RIC subscription to gnb-ID 16b8cef1.

    Please check the log below.

    Does anyone have idea for the issue? Thanks.

    [E2term log when doing e2 setup]

    {"ts":1693454789722,"crit":"INFO","id":"E2Terminator","mdc":{"PID":"","POD_NAME":"deployment-ricplt-e2term-alpha-867f7484c5-stlxk","CONTAINER_NAME":"container-ricplt-e2term","SERVICE_NAME":"RIC_E2_TERM","HOST_NAME":"xxx","SYSTEM_NAME":"SEP"},"msg":"New connection request from sctp network "}
    {"ts":1693454789728,"crit":"INFO","id":"E2Terminator","mdc":{"PID":"140057063188224","POD_NAME":"deployment-ricplt-e2term-alpha-867f7484c5-stlxk","CONTAINER_NAME":"container-ricplt-e2term","SERVICE_NAME":"RIC_E2_TERM","HOST_NAME":"xxx","SYSTEM_NAME":"SEP"},"msg":"send message to gnb_734_733_16b8cef1 address"}

    [KPIMON xapp log]

    {"ts":1693452441278,"crit":"DEBUG","id":"kpimon","mdc":{"time":"2023-08-31T03:27:21"},"msg":"send RIC_SUB_REQ to gNodeB with cnt=1"}
    {"ts":1693452441278,"crit":"DEBUG","id":"kpimon","mdc":{"time":"2023-08-31T03:27:21"},"msg":"The RMR message to be sent is 12010 with SubId=1001"}
    {"ts":1693452441279,"crit":"DEBUG","id":"kpimon","mdc":{"time":"2023-08-31T03:27:21"},"msg":"RIC_SUB_REQ[gnb_734_733_b5c67788]: Waiting for RIC_SUB_RESP..."}
    {"ts":1693452446288,"crit":"DEBUG","id":"kpimon","mdc":{"time":"2023-08-31T03:27:26"},"msg":"RIC_SUB_REQ[gnb_734_733_b5c67788]: RIC Event Create Timer experied!"}

    [E2term log after run KPIMON xapp]

    {"ts":1693454476374,"crit":"ERROR","id":"E2Terminator","mdc":{"PID":"","POD_NAME":"deployment-ricplt-e2term-alpha-867f7484c5-stlxk","CONTAINER_NAME":"container-ricplt-e2term","SERVICE_NAME":"RIC_E2_TERM","HOST_NAME":"xxx","SYSTEM_NAME":"SEP"},"msg":"Failed to send message no CU entry gnb_734_733_b5c67788"}
    {"ts":1693454476374,"crit":"ERROR","id":"E2Terminator","mdc":{"PID":"","POD_NAME":"deployment-ricplt-e2term-alpha-867f7484c5-stlxk","CONTAINER_NAME":"container-ricplt-e2term","SERVICE_NAME":"RIC_E2_TERM","HOST_NAME":"xxx","SYSTEM_NAME":"SEP"},"msg":"Error handling Xapp message"}