"gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/models"
"gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/restapi"
"gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/restapi/operations"
+ "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/restapi/operations/a1_e_i_data_delivery"
"gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/restapi/operations/a1_mediator"
"gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/resthooks"
"github.com/go-openapi/loads"
return a1_mediator.NewA1ControllerDeletePolicyInstanceAccepted()
})
-
+
+ api.A1eiDataDeliveryA1ControllerDataDeliveryHandler = a1_e_i_data_delivery.A1ControllerDataDeliveryHandlerFunc(func(params a1_e_i_data_delivery.A1ControllerDataDeliveryParams) middleware.Responder {
+ a1.Logger.Debug("handler for EI data delivery")
+ if err = r.rh.DataDelivery(params.Body); err != nil {
+ return a1_e_i_data_delivery.NewA1ControllerDataDeliveryNotFound()
+ }
+ return a1_e_i_data_delivery.NewA1ControllerDataDeliveryOK()
+ })
+
return api
}
a1InstancePrefix = "a1.policy_instance."
a1InstanceMetadataPrefix = "a1.policy_inst_metadata."
a1HandlerPrefix = "a1.policy_handler."
+ a1PolicyRequest = 20010
+ a1EIDataDelivery = 20017
)
var typeAlreadyError = errors.New("Policy Type already exists")
a1.Logger.Error("error : %v", err)
return err
}
- isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage)
+ isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage, a1PolicyRequest)
if isSent {
a1.Logger.Debug("rmrSendToXapp : message sent")
} else {
a1.Logger.Error("error : %v", err)
return err
}
- isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage)
+ isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage, a1PolicyRequest)
if isSent {
a1.Logger.Debug("rmrSendToXapp : message sent")
} else {
return nil
}
+
+func (rh *Resthook) DataDelivery(httpBody interface{}) error {
+ a1.Logger.Debug("httpbody : %+v", httpBody)
+ mymap := httpBody.(map[string]interface{})
+ message := rmr.Message{}
+ rmrMessage, err := message.A1EIMessage(mymap["job"].(string), mymap["payload"].(string))
+ if err != nil {
+ a1.Logger.Error("error : %v", err)
+ return err
+ }
+ a1.Logger.Debug("rmrSendToXapp :rmrMessage %+v", rmrMessage)
+ isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage, a1EIDataDelivery)
+ if isSent {
+ a1.Logger.Debug("rmrSendToXapp : message sent")
+ } else {
+ a1.Logger.Error("rmrSendToXapp : message not sent")
+ }
+ return nil
+}
a1.Logger.Debug("metadatainstancekey : %+v", metadatainstancekey)
metadatainstancearr := []interface{}{metadatainstancekey, string(metadata)}
sdlInst.On("Set", "A1m_ns", metadatainstancearr).Return(nil)
- rmrSenderInst.On("RmrSendToXapp", "httpBodyString").Return(true)
+ rmrSenderInst.On("RmrSendToXapp", "httpBodyString", 20010).Return(true)
errresp := rh.CreatePolicyInstance(policyTypeId, policyInstanceID, instancedata)
httpBodyString := `{"operation":"DELETE","payload":"","policy_instance_id":"123456","policy_type_id":"20001"}`
- rmrSenderInst.On("RmrSendToXapp", httpBodyString).Return(true)
+ rmrSenderInst.On("RmrSendToXapp", httpBodyString, 20010).Return(true)
errresp := rh.DeletePolicyInstance(policyTypeId, policyInstanceID)
assert.Nil(t, errresp)
sdlInst.AssertExpectations(t)
}
+func TestDataDelivery(t *testing.T) {
+
+ httpBody := `{
+ "job":"1",
+ "payload":"payload"
+ }
+ `
+ var instancedata interface{}
+
+ json.Unmarshal([]byte(httpBody), &instancedata)
+ a1.Logger.Debug("Marshaled data : %+v", (instancedata))
+ httpBodyString := `{"ei_job_id":"1","payload":"payload"}`
+ rmrSenderInst.On("RmrSendToXapp", httpBodyString, 20017).Return(true)
+ errresp := rh.DataDelivery(instancedata)
+
+ assert.Nil(t, errresp)
+ sdlInst.AssertExpectations(t)
+}
type SdlMock struct {
mock.Mock
return args.Bool(0), args.Error(1)
}
-func (rmr *RmrSenderMock) RmrSendToXapp(httpBodyString string) bool {
- args := rmr.MethodCalled("RmrSendToXapp", httpBodyString)
- return args.Bool(0)
+func (rmr *RmrSenderMock) RmrSendToXapp(httpBodyString string, mtype int) bool {
+ if httpBodyString == `{"blocking_rate":20,"enforce":true,"trigger_threshold":10,"window_length":20}` {
+ args := rmr.MethodCalled("RmrSendToXapp", httpBodyString, mtype)
+ return args.Bool(0)
+ } else if httpBodyString == `{"ei_job_id":"1","payload":"payload"}` {
+ args := rmr.MethodCalled("RmrSendToXapp", httpBodyString, mtype)
+ return args.Bool(0)
+ }
+ return true
}
func (s *SdlMock) Remove(ns string, keys []string) error {
}
return string(data), nil
}
+
+func (m *Message) A1EIMessage(eiJobId string, httpBody string) (string, error) {
+ var datajson interface{}
+ datajson = map[string]string{
+ "ei_job_id": eiJobId,
+ "payload": httpBody}
+ data, err := json.Marshal(datajson)
+
+ if err != nil {
+ a1.Logger.Error("marshal error : %v", err)
+ return "", err
+ }
+ return string(data), nil
+}
)
const (
- a1PolicyRequest = 20010
- a1SourceName = "service-ricplt-a1mediator-http"
+ a1SourceName = "service-ricplt-a1mediator-http"
)
type RmrSender struct {
}
type IRmrSender interface {
- RmrSendToXapp(httpBodyString string) bool
+ RmrSendToXapp(httpBodyString string, messagetype int) bool
}
func NewRMRSender() IRmrSender {
}
}
-func (rmr *RmrSender) RmrSendToXapp(httpBodyString string) bool {
+func (rmr *RmrSender) RmrSendToXapp(httpBodyString string, messagetype int) bool {
params := &xapp.RMRParams{}
- params.Mtype = a1PolicyRequest
+ params.Mtype = messagetype
params.SubId = -1
params.Xid = ""
params.Meid = &xapp.RMRMeid{}