From: naman.gupta Date: Sat, 3 Dec 2022 15:57:36 +0000 (+0530) Subject: RMR handler for A1-EI Job Creation X-Git-Tag: 3.0.0~13 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=53c0270966d180078358c23fa5e5aa465455c317;p=ric-plt%2Fa1.git RMR handler for A1-EI Job Creation RMR handler for A1-EI Job Creation (messagetype 20015) Signed-off-by: naman.gupta Change-Id: I091bf291fe83600cece54f520315b9d024854976 --- diff --git a/a1-go/pkg/rmr/rmr.go b/a1-go/pkg/rmr/rmr.go index 2bb2f1b..b7cac0e 100644 --- a/a1-go/pkg/rmr/rmr.go +++ b/a1-go/pkg/rmr/rmr.go @@ -22,7 +22,9 @@ package rmr import ( + "bytes" "encoding/json" + "fmt" "io/ioutil" "net/http" "strconv" @@ -34,11 +36,14 @@ import ( ) const ( - a1SourceName = "service-ricplt-a1mediator-http" - a1PolicyRequest = 20010 - ecsServiceHost = "http://ecs-service:8083" - ecsEiTypePath = ecsServiceHost + "/A1-EI/v1/eitypes" - a1EiQueryAllResp = 20014 + a1SourceName = "service-ricplt-a1mediator-http" + a1PolicyRequest = 20010 + ecsServiceHost = "http://ecs-service:8083" + ecsEiTypePath = ecsServiceHost + "/A1-EI/v1/eitypes" + ecsEiJobPath = ecsServiceHost + "/A1-EI/v1/eijobs/" + a1EiQueryAllResp = 20014 + a1EiCreateJobResp = 20016 + jobCreationData = `{"ei_job_id": %s.}` ) type RmrSender struct { @@ -193,6 +198,58 @@ func (rmr *RmrSender) Consume(msg *xapp.RMRParams) (err error) { } else { a1.Logger.Error("rmrSendToXapp : message not sent") } + case "A1_EI_CREATE_JOB": + payload := msg.Payload + a1.Logger.Debug("message recieved : %s", payload) + + var result map[string]interface{} + + err := json.Unmarshal([]byte(payload), &result) + if err != nil { + a1.Logger.Error("Unmarshal error : %+v", err) + return err + } + a1.Logger.Debug("Unmarshaled message recieved : %s ", result) + + jobIdStr := strconv.FormatInt((int64(result["job-id"].(float64))), 10) + jsonReq, err := json.Marshal(result) + if err != nil { + a1.Logger.Error("marshal error : %v", err) + return err + } + + a1.Logger.Debug("url to send to :", ecsEiJobPath+jobIdStr) + req, err := http.NewRequest(http.MethodPut, ecsEiJobPath+jobIdStr, bytes.NewBuffer(jsonReq)) + if err != nil { + a1.Logger.Error("http error : %v", err) + return err + } + + req.Header.Set("Content-Type", "application/json; charset=utf-8") + client := &http.Client{} + resp, err3 := client.Do(req) + if err3 != nil { + a1.Logger.Error("error:", err3) + return err + } + + defer resp.Body.Close() + + a1.Logger.Debug("response status : ", resp.StatusCode) + if resp.StatusCode == 200 || resp.StatusCode == 201 { + a1.Logger.Debug("received successful response for ei-job-id : ", jobIdStr) + rmrData := fmt.Sprintf(jobCreationData, jobIdStr) + a1.Logger.Debug("rmr_Data to send: ", rmrData) + + isSent := rmr.RmrSendToXapp(rmrData, a1EiCreateJobResp) + if isSent { + a1.Logger.Debug("rmrSendToXapp : message sent") + } else { + a1.Logger.Error("rmrSendToXapp : message not sent") + } + } else { + a1.Logger.Warning("failed to create EIJOB ") + } default: xapp.Logger.Error("Unknown message type '%d', discarding", msg.Mtype)