})
+ api.A1MediatorA1ControllerDeletePolicyTypeHandler = a1_mediator.A1ControllerDeletePolicyTypeHandlerFunc(func(params a1_mediator.A1ControllerDeletePolicyTypeParams) middleware.Responder {
+ a1.Logger.Debug("handler for delete policy type")
+ if err := r.rh.DeletePolicyType(models.PolicyTypeID(params.PolicyTypeID)); err != nil {
+ if r.rh.CanPolicyTypeBeDeleted(err) {
+ return a1_mediator.NewA1ControllerDeletePolicyTypeBadRequest()
+ }
+ return a1_mediator.NewA1ControllerDeletePolicyTypeServiceUnavailable()
+ }
+
+ return a1_mediator.NewA1ControllerDeletePolicyTypeNoContent()
+
+ })
+
return api
}
"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/rmr"
"gerrit.o-ran-sc.org/r/ric-plt/sdlgo"
- "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
"github.com/santhosh-tekuri/jsonschema/v5"
"gopkg.in/yaml.v2"
)
var invalidJsonSchema = errors.New("Invalid Json ")
var policyInstanceNotFoundError = errors.New("Policy Instance Not Found")
var policyTypeNotFoundError = errors.New("Policy Type Not Found")
+var policyTypeCanNotBeDeletedError = errors.New("tried to delete a type that isn't empty")
+
+func (rh *Resthook) CanPolicyTypeBeDeleted(err error) bool {
+ return err == policyTypeCanNotBeDeletedError
+}
func (rh *Resthook) IsPolicyTypePresent(err error) bool {
return err == policyTypeNotFoundError
a1.Logger.Debug("return : %+v", policyTypeInstances)
return policyTypeInstances, nil
}
+
+func (rh *Resthook) DeletePolicyType(policyTypeId models.PolicyTypeID) error {
+ a1.Logger.Debug("DeletePolicyType")
+
+ policyinstances, err := rh.GetAllPolicyInstance(policyTypeId)
+ if err != nil {
+ a1.Logger.Error("error in retrieving policy. err: %v", err)
+ return err
+ }
+
+ var keys [1]string
+ key := a1PolicyPrefix + strconv.FormatInt((int64(policyTypeId)), 10)
+ keys[0] = key
+ if len(policyinstances) == 0 {
+ err := rh.db.Remove(a1MediatorNs, keys[:])
+ if err != nil {
+ a1.Logger.Error("error in deleting policy type err: %v", err)
+ return err
+ }
+ } else {
+ a1.Logger.Error("tried to delete a type that isn't empty")
+ return policyTypeCanNotBeDeletedError
+ }
+ return nil
+}
assert.Equal(t, 2, len(resp))
}
+func TestDeletePolicyType(t *testing.T) {
+
+ policyTypeId := models.PolicyTypeID(20001)
+ key := a1PolicyPrefix + strconv.FormatInt((int64(policyTypeId)), 10)
+ var keys [1]string
+ keys[0] = key
+
+ //Setup Expectations
+ sdlInst.On("Remove", a1MediatorNs, keys[:]).Return(nil)
+
+ errresp := rh.DeletePolicyType(policyTypeId)
+
+ assert.Nil(t, errresp)
+ sdlInst.AssertExpectations(t)
+}
+
type SdlMock struct {
mock.Mock
}
args := rmr.MethodCalled("RmrSendToXapp", httpBodyString)
return args.Bool(0)
}
+
+func (s *SdlMock) Remove(ns string, keys []string) error {
+ args := s.MethodCalled("Remove", ns, keys)
+ return args.Error(0)
+}
Get(string, []string) (map[string]interface{}, error)
SetIf(ns string, key string, oldData, newData interface{}) (bool, error)
Set(ns string, pairs ...interface{}) error
+ Remove(ns string, keys []string) error
}
type iRMRClient interface {