From cd3881b5ff11027ff543047306724d73b48ba0eb Mon Sep 17 00:00:00 2001 From: Balint Uveges Date: Wed, 2 Oct 2019 15:01:43 +0000 Subject: [PATCH] submgr 0.10.3 published Changes: * New troubeshooting tools available in the image during runtime (curl, ping, net-tools, tcpdump) * RMr version 1.9.0 in use * Bugfix related to concurrent read and write of internal hash maps Change-Id: Id6a2a1da69860e15662d20f2f20cacb2a2dc1a40 Signed-off-by: Balint Uveges --- Dockerfile | 8 +++++--- RELNOTES | 9 +++++++++ container-tag.yaml | 2 +- pkg/control/control.go | 36 +++++++++++++++++++++++------------- 4 files changed, 38 insertions(+), 17 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4ae45f0..e38c343 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,9 +25,9 @@ FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu18-c-go:1-u18.04-nng1.1.1 as submgrbui WORKDIR /tmp # Install RMr shared library -RUN wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr_1.6.0_amd64.deb/download.deb && dpkg -i rmr_1.6.0_amd64.deb && rm -rf rmr_1.6.0_amd64.deb +RUN wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr_1.9.0_amd64.deb/download.deb && dpkg -i rmr_1.9.0_amd64.deb && rm -rf rmr_1.9.0_amd64.deb # Install RMr development header files -RUN wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr-dev_1.6.0_amd64.deb/download.deb && dpkg -i rmr-dev_1.6.0_amd64.deb && rm -rf rmr-dev_1.6.0_amd64.deb +RUN wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr-dev_1.9.0_amd64.deb/download.deb && dpkg -i rmr-dev_1.9.0_amd64.deb && rm -rf rmr-dev_1.9.0_amd64.deb # "PULLING LOG and COMPILING LOG" RUN git clone "https://gerrit.o-ran-sc.org/r/com/log" /opt/log && cd /opt/log && \ @@ -66,10 +66,10 @@ RUN mkdir -p /root/go && \ /usr/local/go/bin/swagger generate client -f api/routing_manager.yaml -t pkg/ -m rtmgr_models -c rtmgr_client +RUN /usr/local/go/bin/go mod tidy COPY pkg pkg COPY cmd cmd -RUN /usr/local/go/bin/go mod tidy RUN git clone -b v0.0.8 "https://gerrit.o-ran-sc.org/r/ric-plt/xapp-frame" /tmp/xapp-frame COPY tmp/rmr.go /tmp/xapp-frame/pkg/xapp/rmr.go @@ -85,6 +85,8 @@ COPY config config FROM ubuntu:18.04 +RUN apt update && apt install -y iputils-ping net-tools curl tcpdump + COPY --from=submgrbuild /opt/bin/submgr /opt/submgr/config/submgr.yaml / COPY run_submgr.sh / COPY --from=submgrbuild /usr/local/include /usr/local/include diff --git a/RELNOTES b/RELNOTES index 72ef0b3..65553c9 100644 --- a/RELNOTES +++ b/RELNOTES @@ -1,3 +1,12 @@ +### v0.10.3 +* The following tools made available in the final docker image: iputils-ping, net-tools, curl and tcpdump + +### v0.10.2 +* Taking in use the most recent RMr version + +### v0.10.1 +* Sequential execution of message handling to avoid parallel read/write of internal hash maps + ### v0.10.0 * Tracking Mbuf in transaction table diff --git a/container-tag.yaml b/container-tag.yaml index 68891cd..4cc4c24 100644 --- a/container-tag.yaml +++ b/container-tag.yaml @@ -2,4 +2,4 @@ # By default this file is in the docker build directory, # but the location can configured in the JJB template. --- -tag: 0.10.0 +tag: 0.10.3 diff --git a/pkg/control/control.go b/pkg/control/control.go index ec6419e..291075d 100644 --- a/pkg/control/control.go +++ b/pkg/control/control.go @@ -46,6 +46,7 @@ type Control struct { registry *Registry rtmgrClient *RtmgrClient tracker *Tracker + rc_chan chan *xapp.RMRParams } type RMRMeid struct { @@ -90,26 +91,16 @@ func NewControl() Control { delete_handle := rtmgrhandle.NewDeleteXappSubscriptionHandleParamsWithTimeout(10 * time.Second) rtmgrClient := RtmgrClient{client, handle, delete_handle} - return Control{new(E2ap), registry, &rtmgrClient, tracker} + return Control{new(E2ap), registry, &rtmgrClient, tracker, make(chan *xapp.RMRParams)} } func (c *Control) Run() { + go c.controlLoop() xapp.Run(c) } func (c *Control) Consume(rp *xapp.RMRParams) (err error) { - switch rp.Mtype { - case C.RIC_SUB_REQ: - err = c.handleSubscriptionRequest(rp) - case C.RIC_SUB_RESP: - err = c.handleSubscriptionResponse(rp) - case C.RIC_SUB_DEL_REQ: - err = c.handleSubscriptionDeleteRequest(rp) - case C.RIC_SUB_DEL_RESP: - err = c.handleSubscriptionDeleteResponse(rp) - default: - err = errors.New("Message Type " + strconv.Itoa(rp.Mtype) + " is discarded") - } + c.rc_chan <- rp return } @@ -127,6 +118,25 @@ func (c *Control) rmrReplyToSender(params *xapp.RMRParams) (err error) { return } +func (c *Control) controlLoop() { + for { + msg := <-c.rc_chan + switch msg.Mtype { + case C.RIC_SUB_REQ: + c.handleSubscriptionRequest(msg) + case C.RIC_SUB_RESP: + c.handleSubscriptionResponse(msg) + case C.RIC_SUB_DEL_REQ: + c.handleSubscriptionDeleteRequest(msg) + case C.RIC_SUB_DEL_RESP: + c.handleSubscriptionDeleteResponse(msg) + default: + err := errors.New("Message Type " + strconv.Itoa(msg.Mtype) + " is discarded") + xapp.Logger.Error("Unknown message type: %v", err) + } + } +} + func (c *Control) handleSubscriptionRequest(params *xapp.RMRParams) (err error) { payload_seq_num, err := c.e2ap.GetSubscriptionRequestSequenceNumber(params.Payload) if err != nil { -- 2.16.6