Get All Policy Type Instance 50/8150/2
authornaman.gupta <naman.gupta@samsung.com>
Thu, 5 May 2022 10:29:51 +0000 (15:59 +0530)
committernaman.gupta <naman.gupta@samsung.com>
Thu, 5 May 2022 12:01:22 +0000 (17:31 +0530)
Api for Get All Policy Type Instance

Signed-off-by: naman.gupta <naman.gupta@samsung.com>
Issue-ID: RIC-831
Change-Id: I649dd94059263244645e7a8236ad058c3f0ef26e

a1-go/pkg/restful/restful.go
a1-go/pkg/resthooks/resthooks.go
a1-go/pkg/resthooks/resthooks_test.go

index deb2470..28efaaa 100644 (file)
@@ -95,6 +95,11 @@ func (r *Restful) setupHandler() *operations.A1API {
                return a1_mediator.NewA1ControllerGetPolicyInstanceServiceUnavailable
        })
 
+       api.A1MediatorA1ControllerGetAllInstancesForTypeHandler = a1_mediator.A1ControllerGetAllInstancesForTypeHandlerFunc(func(params a1_mediator.A1ControllerGetAllInstancesForTypeParams) middleware.Responder {
+               a1.Logger.Debug("handler for get all policy instance")
+               return a1_mediator.NewA1ControllerGetPolicyInstanceOK().WithPayload(r.rh.GetAllPolicyInstance(models.PolicyTypeID(params.PolicyTypeID)))
+       })
+
        return api
 
 }
index c09fb14..ea02562 100644 (file)
@@ -376,3 +376,27 @@ func (rh *Resthook) GetPolicyInstance(policyTypeId models.PolicyTypeID, policyIn
        valStr := fmt.Sprint(instanceMap[instancekey])
        return valStr, nil
 }
+
+func (rh *Resthook) GetAllPolicyInstance(policyTypeId models.PolicyTypeID) []models.PolicyInstanceID {
+       a1.Logger.Debug("GetAllPolicyInstance")
+       var policyTypeInstances []models.PolicyInstanceID
+
+       keys, err := rh.db.GetAll("A1m_ns")
+
+       if err != nil {
+               a1.Logger.Error("error in retrieving policy. err: %v", err)
+               return policyTypeInstances
+       }
+       a1.Logger.Debug("keys : %+v", keys)
+       typekey := a1InstancePrefix + strconv.FormatInt((int64(policyTypeId)), 10) + "."
+       for _, key := range keys {
+               if strings.HasPrefix(strings.TrimLeft(key, " "), typekey) {
+                       pti := strings.Split(strings.Trim(key, " "), typekey)[1]
+                       a1.Logger.Debug("pti %+v", pti)
+                       policyTypeInstances = append(policyTypeInstances, models.PolicyInstanceID(pti))
+               }
+       }
+
+       a1.Logger.Debug("return : %+v", policyTypeInstances)
+       return policyTypeInstances
+}
index 50a7fe2..98d4f8c 100644 (file)
@@ -39,6 +39,8 @@ func TestMain(m *testing.M) {
        sdlInst = new(SdlMock)
 
        sdlInst.On("GetAll", "A1m_ns").Return([]string{"a1.policy_instance.1006001.qos",
+               "a1.policy_instance.20005.123456",
+               "a1.policy_instance.20005.234567",
                "a1.policy_type.1006001",
                "a1.policy_type.20000",
                "a1.policy_inst_metadata.1006001.qos",
@@ -161,6 +163,13 @@ func TestGetPolicyInstance(t *testing.T) {
        sdlInst.AssertExpectations(t)
 }
 
+func TestGetAllPolicyIntances(t *testing.T) {
+       var policyTypeId models.PolicyTypeID
+       policyTypeId = 20005
+       resp := rh.GetAllPolicyInstance(policyTypeId)
+       assert.Equal(t, 2, len(resp))
+}
+
 type SdlMock struct {
        mock.Mock
 }