X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fresthooks%2Fresthooks.go;h=733726fa1800cbe6d9a60840e77d9e8de0fba67d;hb=b17b136303aae9a45e9794a7655cec1e09b18c88;hp=dcffe2ab787cf3a65ed9acfd7db1794cf971a0ce;hpb=b7a743adb64d9a737e505d54fbdbe46777551d06;p=ric-plt%2Fa1.git diff --git a/pkg/resthooks/resthooks.go b/pkg/resthooks/resthooks.go index dcffe2a..733726f 100644 --- a/pkg/resthooks/resthooks.go +++ b/pkg/resthooks/resthooks.go @@ -102,12 +102,13 @@ func createResthook(sdlInst iSdl, rmrSenderInst rmr.IRmrSender) *Resthook { } func (rh *Resthook) GetA1Health() bool { - data, _ := rh.db.GetAll(a1MediatorNs) - if data != nil { - a1.Logger.Debug("Database connected and A1 is healthy") - return true + _, err := rh.db.GetAll("A1m_ns") + if err != nil { + a1.Logger.Error("error in connecting to the database. err: %v", err) + return false } - return false + a1.Logger.Debug("A1 is healthy") + return true } func (rh *Resthook) GetAllPolicyType() []models.PolicyTypeID { @@ -399,7 +400,7 @@ func (rh *Resthook) CreatePolicyInstance(policyTypeId models.PolicyTypeID, polic a1.Logger.Error("error : %v", err) return err } - isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage, a1PolicyRequest) + isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage, a1PolicyRequest, int(policyTypeId)) if isSent { a1.Logger.Debug("rmrSendToXapp : message sent") } else { @@ -414,7 +415,7 @@ func (rh *Resthook) CreatePolicyInstance(policyTypeId models.PolicyTypeID, polic return nil } -func (rh *Resthook) GetPolicyInstance(policyTypeId models.PolicyTypeID, policyInstanceID models.PolicyInstanceID) (interface{}, error) { +func (rh *Resthook) GetPolicyInstance(policyTypeId models.PolicyTypeID, policyInstanceID models.PolicyInstanceID) (map[string]interface{}, error) { a1.Logger.Debug("GetPolicyInstance1") var keys [1]string @@ -427,17 +428,17 @@ func (rh *Resthook) GetPolicyInstance(policyTypeId models.PolicyTypeID, policyIn valmap, err := rh.db.Get(a1MediatorNs, keys[:]) if len(valmap) == 0 { a1.Logger.Debug("policy type Not Present for policyid : %v", policyTypeId) - return "{}", policyTypeNotFoundError + return map[string]interface{}{}, policyTypeNotFoundError } if err != nil { a1.Logger.Error("error in retrieving policy type. err: %v", err) - return "{}", err + return map[string]interface{}{}, err } if valmap[typekey] == nil { a1.Logger.Debug("policy type Not Present for policyid : %v", policyTypeId) - return "{}", policyTypeNotFoundError + return map[string]interface{}{}, policyTypeNotFoundError } a1.Logger.Debug("keysmap : %+v", valmap[typekey]) @@ -453,10 +454,15 @@ func (rh *Resthook) GetPolicyInstance(policyTypeId models.PolicyTypeID, policyIn if instanceMap[instancekey] == nil { a1.Logger.Debug("policy instance Not Present for policyinstaneid : %v", policyInstanceID) - return "{}", policyInstanceNotFoundError + return map[string]interface{}{}, policyInstanceNotFoundError } - valStr := fmt.Sprint(instanceMap[instancekey]) + var valStr map[string]interface{} + err = json.Unmarshal([]byte(instanceMap[instancekey].(string)), &valStr) + if err != nil { + fmt.Println("error:", err) + } + fmt.Println(valStr) return valStr, nil } @@ -543,7 +549,7 @@ func (rh *Resthook) instanceValidity(policyTypeId models.PolicyTypeID, policyIns a1.Logger.Error("policy instance error : %v", err) return err } - if len(policyTypeInstances.(string)) == 0 { + if policyTypeInstances == nil { a1.Logger.Debug("policy instance Not Present ") return policyInstanceNotFoundError } @@ -567,18 +573,34 @@ func (rh *Resthook) getMetaData(policyTypeId models.PolicyTypeID, policyInstance return instanceMetadataMap, nil } +func (rh *Resthook) getPolicyInstanceStatus(policyTypeId models.PolicyTypeID, policyInstanceID models.PolicyInstanceID) (bool, error) { + instancehandlerKey := a1HandlerPrefix + strconv.FormatInt((int64(policyTypeId)), 10) + "." + string(policyInstanceID) + var keys [1]string + keys[0] = instancehandlerKey + resp, err := rh.db.Get(a1MediatorNs, keys[:]) + if err != nil { + a1.Logger.Error("error1 :%+v", err) + return false, err + } + for _, key := range resp { + if key == "OK" { + return true, nil + } + } + return false, nil +} + func (rh *Resthook) GetPolicyInstanceStatus(policyTypeId models.PolicyTypeID, policyInstanceID models.PolicyInstanceID) (*a1_mediator.A1ControllerGetPolicyInstanceStatusOKBody, error) { err := rh.instanceValidity(policyTypeId, policyInstanceID) policyInstanceStatus := a1_mediator.A1ControllerGetPolicyInstanceStatusOKBody{} + policyInstanceStatus.InstanceStatus = "NOT IN EFFECT" if err != nil && err == policyInstanceNotFoundError || err == policyTypeNotFoundError { - policyInstanceStatus.InstanceStatus = "NOT IN EFFECT" return &policyInstanceStatus, err } metadata, err := rh.getMetaData(policyTypeId, policyInstanceID) a1.Logger.Debug(" metadata %v", metadata) if err != nil { a1.Logger.Error("policy instance error : %v", err) - policyInstanceStatus.InstanceStatus = "NOT IN EFFECT" return &policyInstanceStatus, err } jsonbody, err := json.Marshal(metadata) @@ -592,10 +614,12 @@ func (rh *Resthook) GetPolicyInstanceStatus(policyTypeId models.PolicyTypeID, po //this error maps to 503 error but can be mapped to 500: internal error return &policyInstanceStatus, err } - if policyInstanceStatus.HasBeenDeleted == false { + resp, err := rh.getPolicyInstanceStatus(policyTypeId, policyInstanceID) + if err != nil || (err == nil && resp == false) { + a1.Logger.Error("marshal error : %v", err) + return &policyInstanceStatus, err + } else if policyInstanceStatus.HasBeenDeleted == true { policyInstanceStatus.InstanceStatus = "IN EFFECT" - } else { - policyInstanceStatus.InstanceStatus = "NOT IN EFFECT" } return &policyInstanceStatus, nil } @@ -670,7 +694,10 @@ func (rh *Resthook) DeletePolicyInstance(policyTypeId models.PolicyTypeID, polic instanceMetadataKey := a1InstanceMetadataPrefix + strconv.FormatInt((int64(policyTypeId)), 10) + "." + string(policyInstanceID) creation_metadata := createdmetadata[instanceMetadataKey] var metadata map[string]interface{} - if err = json.Unmarshal([]byte(creation_metadata.(string)), &metadata); err != nil { + creation_metadata_string := creation_metadata.(string) + creation_metadata_string = strings.TrimRight(creation_metadata_string, "]") + creation_metadata_string = strings.TrimLeft(creation_metadata_string, "[") + if err = json.Unmarshal([]byte(creation_metadata_string), &metadata); err != nil { a1.Logger.Error("unmarshal error : %v", err) return err } @@ -690,7 +717,7 @@ func (rh *Resthook) DeletePolicyInstance(policyTypeId models.PolicyTypeID, polic a1.Logger.Error("error : %v", err1) return err1 } - isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage, a1PolicyRequest) + isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage, a1PolicyRequest, int(policyTypeId)) if isSent { a1.Logger.Debug("rmrSendToXapp : message sent") } else { @@ -711,7 +738,7 @@ func (rh *Resthook) DataDelivery(httpBody interface{}) error { return err } a1.Logger.Debug("rmrSendToXapp :rmrMessage %+v", rmrMessage) - isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage, a1EIDataDelivery) + isSent := rh.iRmrSenderInst.RmrSendToXapp(rmrMessage, a1EIDataDelivery, rmr.DefaultSubId) if isSent { a1.Logger.Debug("rmrSendToXapp : message sent") } else {