"gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/a1"
"gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/models"
+ "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/policy"
+ "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/restapi/operations/a1_mediator"
"gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/rmr"
"gerrit.o-ran-sc.org/r/ric-plt/sdlgo"
"github.com/santhosh-tekuri/jsonschema/v5"
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")
return err == invalidJsonSchema
}
func NewResthook() *Resthook {
- return createResthook(sdlgo.NewSyncStorage(), rmr.NewRMRSender())
+ sdl := sdlgo.NewSyncStorage()
+ policyManager := policy.NewPolicyManager(sdl)
+ return createResthook(sdl, rmr.NewRMRSender(policyManager))
}
func createResthook(sdlInst iSdl, rmrSenderInst rmr.IRmrSender) *Resthook {
- return &Resthook{
+ rh := &Resthook{
db: sdlInst,
iRmrSenderInst: rmrSenderInst,
}
+
+ return rh
+}
+
+func (rh *Resthook) GetA1Health() bool {
+ data, _ := rh.db.GetAll(a1MediatorNs)
+ if data != nil {
+ a1.Logger.Debug("Database connected and A1 is healthy")
+ return true
+ }
+ return false
}
func (rh *Resthook) GetAllPolicyType() []models.PolicyTypeID {
}
message := rmr.Message{}
- rmrMessage, err = message.PolicyMessage(strconv.FormatInt((int64(policyTypeId)), 10), string(policyInstanceID), httpBodyString, operation)
+ rmrMessage, err := message.PolicyMessage(strconv.FormatInt((int64(policyTypeId)), 10), string(policyInstanceID), httpBodyString, operation)
if err != nil {
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 {
rh.storeDeletedPolicyInstanceMetadata(policyTypeId, policyInstanceID, creation_timestamp.(string))
message := rmr.Message{}
- rmrMessage, err = message.PolicyMessage(strconv.FormatInt((int64(policyTypeId)), 10), string(policyInstanceID), "", "DELETE")
+ rmrMessage, err1 := message.PolicyMessage(strconv.FormatInt((int64(policyTypeId)), 10), string(policyInstanceID), "", "DELETE")
+ if err1 != nil {
+ a1.Logger.Error("error : %v", err1)
+ return err1
+ }
+ isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage, a1PolicyRequest)
+ if isSent {
+ a1.Logger.Debug("rmrSendToXapp : message sent")
+ } else {
+ //TODO:if message not sent need to return error or just log it or retry sending
+ a1.Logger.Error("rmrSendToXapp : message not sent")
+ }
+
+ 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
}
- isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage)
+ a1.Logger.Debug("rmrSendToXapp :rmrMessage %+v", rmrMessage)
+ isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage, a1EIDataDelivery)
if isSent {
a1.Logger.Debug("rmrSendToXapp : message sent")
} else {
- //TODO:if message not sent need to return error or just log it or retry sending
a1.Logger.Error("rmrSendToXapp : message not sent")
}
-
return nil
}