From: naman.gupta Date: Tue, 13 Dec 2022 12:01:17 +0000 (+0530) Subject: Fixing the status of policy instance X-Git-Tag: 3.0.0^0 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=c28a0f5b8812d67786a600932ecf877762e344cd;p=ric-plt%2Fa1.git Fixing the status of policy instance Fixing the status of policy instance after recieving the OK status from southbound message. Signed-off-by: naman.gupta Change-Id: I42b5c87c41a2efc25ac1cd63bc53e969882de13f --- diff --git a/pkg/resthooks/resthooks.go b/pkg/resthooks/resthooks.go index b76e982..cf7a2d1 100644 --- a/pkg/resthooks/resthooks.go +++ b/pkg/resthooks/resthooks.go @@ -572,18 +572,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) @@ -597,10 +613,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 } diff --git a/pkg/resthooks/resthooks_test.go b/pkg/resthooks/resthooks_test.go index ac3dc25..01d11e7 100644 --- a/pkg/resthooks/resthooks_test.go +++ b/pkg/resthooks/resthooks_test.go @@ -229,7 +229,11 @@ func TestGetPolicyInstanceStatus(t *testing.T) { var keys [1]string keys[0] = instancekey sdlInst.On("Get", a1MediatorNs, keys[:]).Return(httpBody) - + instancekey = a1HandlerPrefix + strconv.FormatInt(20001, 10) + "." + string(policyInstanceID) + var instancekeys [1]string + instancekeys[0] = instancekey + instancearr := []interface{}{instancekey, "OK"} + sdlInst.On("Get", a1MediatorNs, instancekeys[:]).Return(instancearr, nil) resp, errresp := rh.GetPolicyInstanceStatus(policyTypeId, policyInstanceID) assert.Nil(t, errresp)