API update 20/2920/1
authorMohamed Abukar <abukar.mohamed@nokia.com>
Mon, 23 Mar 2020 06:55:05 +0000 (08:55 +0200)
committerMohamed Abukar <abukar.mohamed@nokia.com>
Mon, 23 Mar 2020 12:14:13 +0000 (14:14 +0200)
Change-Id: I1ad0d7202227b01ff14d8433f27bead15d8c5a99
Signed-off-by: Mohamed Abukar <abukar.mohamed@nokia.com>
13 files changed:
api/xapp_rest_api.yaml
pkg/clientapi/common/common_client.go
pkg/clientapi/policy/subscribe_policy_responses.go
pkg/clientapi/report/subscribe_report_responses.go
pkg/clientmodel/subscription_instance.go [new file with mode: 0644]
pkg/clientmodel/subscription_response.go
pkg/models/subscription_instance.go [new file with mode: 0644]
pkg/models/subscription_response.go
pkg/restapi/embedded_spec.go
pkg/restapi/operations/policy/subscribe_policy_responses.go
pkg/restapi/operations/report/subscribe_report_responses.go
pkg/xapp/subscription.go
pkg/xapp/subscription_test.go

index 373fc7a..efd5b8c 100755 (executable)
@@ -82,6 +82,10 @@ paths:
       - "common"
       summary: Unsubscribe X2AP events from Subscription Manager
       operationId: Unsubscribe
+      consumes:
+        - application/json
+      produces:
+        - application/json
       parameters:
         - name: subscriptionId
           in: path
@@ -242,23 +246,28 @@ definitions:
         type: integer
       PolicyParameterValue:
         type: integer
-  SubscriptionResponseItem:
+  SubscriptionInstance:
     type: object
     required:
-      - SubscriptionId
       - RequestorId
       - InstanceId
     properties:
-      SubscriptionId:
-        type: string
       RequestorId:
         type: integer
       InstanceId:
         type: integer
   SubscriptionResponse:
-    type: array
-    items:
-      $ref: '#/definitions/SubscriptionResponseItem'
+    type: object
+    required:
+      - SubscriptionId
+      - SubscriptionInstances
+    properties:
+      SubscriptionId:
+        type: string
+      SubscriptionInstances:
+        type: array
+        items:
+          $ref: '#/definitions/SubscriptionInstance'
   SubscriptionData:
     type: object
     properties:
index b88df18..8db6f11 100644 (file)
@@ -37,8 +37,8 @@ func (a *Client) Unsubscribe(params *UnsubscribeParams) (*UnsubscribeNoContent,
                ID:                 "Unsubscribe",
                Method:             "DELETE",
                PathPattern:        "/subscriptions/{subscriptionId}",
-               ProducesMediaTypes: []string{""},
-               ConsumesMediaTypes: []string{""},
+               ProducesMediaTypes: []string{"application/json"},
+               ConsumesMediaTypes: []string{"application/json"},
                Schemes:            []string{"http"},
                Params:             params,
                Reader:             &UnsubscribeReader{formats: a.formats},
index e9f52da..6241c82 100644 (file)
@@ -61,7 +61,7 @@ func NewSubscribePolicyCreated() *SubscribePolicyCreated {
 Subscription successfully created
 */
 type SubscribePolicyCreated struct {
-       Payload clientmodel.SubscriptionResponse
+       Payload *clientmodel.SubscriptionResponse
 }
 
 func (o *SubscribePolicyCreated) Error() string {
@@ -70,8 +70,10 @@ func (o *SubscribePolicyCreated) Error() string {
 
 func (o *SubscribePolicyCreated) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
 
+       o.Payload = new(clientmodel.SubscriptionResponse)
+
        // response payload
-       if err := consumer.Consume(response.Body(), &o.Payload); err != nil && err != io.EOF {
+       if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
                return err
        }
 
index f6dfefe..bace786 100644 (file)
@@ -61,7 +61,7 @@ func NewSubscribeReportCreated() *SubscribeReportCreated {
 Subscription successfully created
 */
 type SubscribeReportCreated struct {
-       Payload clientmodel.SubscriptionResponse
+       Payload *clientmodel.SubscriptionResponse
 }
 
 func (o *SubscribeReportCreated) Error() string {
@@ -70,8 +70,10 @@ func (o *SubscribeReportCreated) Error() string {
 
 func (o *SubscribeReportCreated) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
 
+       o.Payload = new(clientmodel.SubscriptionResponse)
+
        // response payload
-       if err := consumer.Consume(response.Body(), &o.Payload); err != nil && err != io.EOF {
+       if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
                return err
        }
 
diff --git a/pkg/clientmodel/subscription_instance.go b/pkg/clientmodel/subscription_instance.go
new file mode 100644 (file)
index 0000000..4606479
--- /dev/null
@@ -0,0 +1,81 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package clientmodel
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+       strfmt "github.com/go-openapi/strfmt"
+
+       "github.com/go-openapi/errors"
+       "github.com/go-openapi/swag"
+       "github.com/go-openapi/validate"
+)
+
+// SubscriptionInstance subscription instance
+// swagger:model SubscriptionInstance
+type SubscriptionInstance struct {
+
+       // instance Id
+       // Required: true
+       InstanceID *int64 `json:"InstanceId"`
+
+       // requestor Id
+       // Required: true
+       RequestorID *int64 `json:"RequestorId"`
+}
+
+// Validate validates this subscription instance
+func (m *SubscriptionInstance) Validate(formats strfmt.Registry) error {
+       var res []error
+
+       if err := m.validateInstanceID(formats); err != nil {
+               res = append(res, err)
+       }
+
+       if err := m.validateRequestorID(formats); err != nil {
+               res = append(res, err)
+       }
+
+       if len(res) > 0 {
+               return errors.CompositeValidationError(res...)
+       }
+       return nil
+}
+
+func (m *SubscriptionInstance) validateInstanceID(formats strfmt.Registry) error {
+
+       if err := validate.Required("InstanceId", "body", m.InstanceID); err != nil {
+               return err
+       }
+
+       return nil
+}
+
+func (m *SubscriptionInstance) validateRequestorID(formats strfmt.Registry) error {
+
+       if err := validate.Required("RequestorId", "body", m.RequestorID); err != nil {
+               return err
+       }
+
+       return nil
+}
+
+// MarshalBinary interface implementation
+func (m *SubscriptionInstance) MarshalBinary() ([]byte, error) {
+       if m == nil {
+               return nil, nil
+       }
+       return swag.WriteJSON(m)
+}
+
+// UnmarshalBinary interface implementation
+func (m *SubscriptionInstance) UnmarshalBinary(b []byte) error {
+       var res SubscriptionInstance
+       if err := swag.ReadJSON(b, &res); err != nil {
+               return err
+       }
+       *m = res
+       return nil
+}
index 58592c0..2714b5b 100644 (file)
@@ -12,25 +12,64 @@ import (
 
        "github.com/go-openapi/errors"
        "github.com/go-openapi/swag"
+       "github.com/go-openapi/validate"
 )
 
 // SubscriptionResponse subscription response
 // swagger:model SubscriptionResponse
-type SubscriptionResponse []*SubscriptionResponseItem
+type SubscriptionResponse struct {
+
+       // subscription Id
+       // Required: true
+       SubscriptionID *string `json:"SubscriptionId"`
+
+       // subscription instances
+       // Required: true
+       SubscriptionInstances []*SubscriptionInstance `json:"SubscriptionInstances"`
+}
 
 // Validate validates this subscription response
-func (m SubscriptionResponse) Validate(formats strfmt.Registry) error {
+func (m *SubscriptionResponse) Validate(formats strfmt.Registry) error {
        var res []error
 
-       for i := 0; i < len(m); i++ {
-               if swag.IsZero(m[i]) { // not required
+       if err := m.validateSubscriptionID(formats); err != nil {
+               res = append(res, err)
+       }
+
+       if err := m.validateSubscriptionInstances(formats); err != nil {
+               res = append(res, err)
+       }
+
+       if len(res) > 0 {
+               return errors.CompositeValidationError(res...)
+       }
+       return nil
+}
+
+func (m *SubscriptionResponse) validateSubscriptionID(formats strfmt.Registry) error {
+
+       if err := validate.Required("SubscriptionId", "body", m.SubscriptionID); err != nil {
+               return err
+       }
+
+       return nil
+}
+
+func (m *SubscriptionResponse) validateSubscriptionInstances(formats strfmt.Registry) error {
+
+       if err := validate.Required("SubscriptionInstances", "body", m.SubscriptionInstances); err != nil {
+               return err
+       }
+
+       for i := 0; i < len(m.SubscriptionInstances); i++ {
+               if swag.IsZero(m.SubscriptionInstances[i]) { // not required
                        continue
                }
 
-               if m[i] != nil {
-                       if err := m[i].Validate(formats); err != nil {
+               if m.SubscriptionInstances[i] != nil {
+                       if err := m.SubscriptionInstances[i].Validate(formats); err != nil {
                                if ve, ok := err.(*errors.Validation); ok {
-                                       return ve.ValidateName(strconv.Itoa(i))
+                                       return ve.ValidateName("SubscriptionInstances" + "." + strconv.Itoa(i))
                                }
                                return err
                        }
@@ -38,8 +77,23 @@ func (m SubscriptionResponse) Validate(formats strfmt.Registry) error {
 
        }
 
-       if len(res) > 0 {
-               return errors.CompositeValidationError(res...)
+       return nil
+}
+
+// MarshalBinary interface implementation
+func (m *SubscriptionResponse) MarshalBinary() ([]byte, error) {
+       if m == nil {
+               return nil, nil
+       }
+       return swag.WriteJSON(m)
+}
+
+// UnmarshalBinary interface implementation
+func (m *SubscriptionResponse) UnmarshalBinary(b []byte) error {
+       var res SubscriptionResponse
+       if err := swag.ReadJSON(b, &res); err != nil {
+               return err
        }
+       *m = res
        return nil
 }
diff --git a/pkg/models/subscription_instance.go b/pkg/models/subscription_instance.go
new file mode 100644 (file)
index 0000000..d619166
--- /dev/null
@@ -0,0 +1,81 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package models
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+       strfmt "github.com/go-openapi/strfmt"
+
+       "github.com/go-openapi/errors"
+       "github.com/go-openapi/swag"
+       "github.com/go-openapi/validate"
+)
+
+// SubscriptionInstance subscription instance
+// swagger:model SubscriptionInstance
+type SubscriptionInstance struct {
+
+       // instance Id
+       // Required: true
+       InstanceID *int64 `json:"InstanceId"`
+
+       // requestor Id
+       // Required: true
+       RequestorID *int64 `json:"RequestorId"`
+}
+
+// Validate validates this subscription instance
+func (m *SubscriptionInstance) Validate(formats strfmt.Registry) error {
+       var res []error
+
+       if err := m.validateInstanceID(formats); err != nil {
+               res = append(res, err)
+       }
+
+       if err := m.validateRequestorID(formats); err != nil {
+               res = append(res, err)
+       }
+
+       if len(res) > 0 {
+               return errors.CompositeValidationError(res...)
+       }
+       return nil
+}
+
+func (m *SubscriptionInstance) validateInstanceID(formats strfmt.Registry) error {
+
+       if err := validate.Required("InstanceId", "body", m.InstanceID); err != nil {
+               return err
+       }
+
+       return nil
+}
+
+func (m *SubscriptionInstance) validateRequestorID(formats strfmt.Registry) error {
+
+       if err := validate.Required("RequestorId", "body", m.RequestorID); err != nil {
+               return err
+       }
+
+       return nil
+}
+
+// MarshalBinary interface implementation
+func (m *SubscriptionInstance) MarshalBinary() ([]byte, error) {
+       if m == nil {
+               return nil, nil
+       }
+       return swag.WriteJSON(m)
+}
+
+// UnmarshalBinary interface implementation
+func (m *SubscriptionInstance) UnmarshalBinary(b []byte) error {
+       var res SubscriptionInstance
+       if err := swag.ReadJSON(b, &res); err != nil {
+               return err
+       }
+       *m = res
+       return nil
+}
index 8657177..c62b4f1 100644 (file)
@@ -12,25 +12,64 @@ import (
 
        "github.com/go-openapi/errors"
        "github.com/go-openapi/swag"
+       "github.com/go-openapi/validate"
 )
 
 // SubscriptionResponse subscription response
 // swagger:model SubscriptionResponse
-type SubscriptionResponse []*SubscriptionResponseItem
+type SubscriptionResponse struct {
+
+       // subscription Id
+       // Required: true
+       SubscriptionID *string `json:"SubscriptionId"`
+
+       // subscription instances
+       // Required: true
+       SubscriptionInstances []*SubscriptionInstance `json:"SubscriptionInstances"`
+}
 
 // Validate validates this subscription response
-func (m SubscriptionResponse) Validate(formats strfmt.Registry) error {
+func (m *SubscriptionResponse) Validate(formats strfmt.Registry) error {
        var res []error
 
-       for i := 0; i < len(m); i++ {
-               if swag.IsZero(m[i]) { // not required
+       if err := m.validateSubscriptionID(formats); err != nil {
+               res = append(res, err)
+       }
+
+       if err := m.validateSubscriptionInstances(formats); err != nil {
+               res = append(res, err)
+       }
+
+       if len(res) > 0 {
+               return errors.CompositeValidationError(res...)
+       }
+       return nil
+}
+
+func (m *SubscriptionResponse) validateSubscriptionID(formats strfmt.Registry) error {
+
+       if err := validate.Required("SubscriptionId", "body", m.SubscriptionID); err != nil {
+               return err
+       }
+
+       return nil
+}
+
+func (m *SubscriptionResponse) validateSubscriptionInstances(formats strfmt.Registry) error {
+
+       if err := validate.Required("SubscriptionInstances", "body", m.SubscriptionInstances); err != nil {
+               return err
+       }
+
+       for i := 0; i < len(m.SubscriptionInstances); i++ {
+               if swag.IsZero(m.SubscriptionInstances[i]) { // not required
                        continue
                }
 
-               if m[i] != nil {
-                       if err := m[i].Validate(formats); err != nil {
+               if m.SubscriptionInstances[i] != nil {
+                       if err := m.SubscriptionInstances[i].Validate(formats); err != nil {
                                if ve, ok := err.(*errors.Validation); ok {
-                                       return ve.ValidateName(strconv.Itoa(i))
+                                       return ve.ValidateName("SubscriptionInstances" + "." + strconv.Itoa(i))
                                }
                                return err
                        }
@@ -38,8 +77,23 @@ func (m SubscriptionResponse) Validate(formats strfmt.Registry) error {
 
        }
 
-       if len(res) > 0 {
-               return errors.CompositeValidationError(res...)
+       return nil
+}
+
+// MarshalBinary interface implementation
+func (m *SubscriptionResponse) MarshalBinary() ([]byte, error) {
+       if m == nil {
+               return nil, nil
+       }
+       return swag.WriteJSON(m)
+}
+
+// UnmarshalBinary interface implementation
+func (m *SubscriptionResponse) UnmarshalBinary(b []byte) error {
+       var res SubscriptionResponse
+       if err := swag.ReadJSON(b, &res); err != nil {
+               return err
        }
+       *m = res
        return nil
 }
index 79f7869..8cb57e1 100644 (file)
@@ -137,6 +137,12 @@ func init() {
     },
     "/subscriptions/{subscriptionId}": {
       "delete": {
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
         "tags": [
           "common"
         ],
@@ -390,6 +396,21 @@ func init() {
         }
       }
     },
+    "SubscriptionInstance": {
+      "type": "object",
+      "required": [
+        "RequestorId",
+        "InstanceId"
+      ],
+      "properties": {
+        "InstanceId": {
+          "type": "integer"
+        },
+        "RequestorId": {
+          "type": "integer"
+        }
+      }
+    },
     "SubscriptionList": {
       "description": "A list of subscriptions",
       "type": "array",
@@ -398,27 +419,20 @@ func init() {
       }
     },
     "SubscriptionResponse": {
-      "type": "array",
-      "items": {
-        "$ref": "#/definitions/SubscriptionResponseItem"
-      }
-    },
-    "SubscriptionResponseItem": {
       "type": "object",
       "required": [
         "SubscriptionId",
-        "RequestorId",
-        "InstanceId"
+        "SubscriptionInstances"
       ],
       "properties": {
-        "InstanceId": {
-          "type": "integer"
-        },
-        "RequestorId": {
-          "type": "integer"
-        },
         "SubscriptionId": {
           "type": "string"
+        },
+        "SubscriptionInstances": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/SubscriptionInstance"
+          }
         }
       }
     },
@@ -552,6 +566,12 @@ func init() {
     },
     "/subscriptions/{subscriptionId}": {
       "delete": {
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
         "tags": [
           "common"
         ],
@@ -805,6 +825,21 @@ func init() {
         }
       }
     },
+    "SubscriptionInstance": {
+      "type": "object",
+      "required": [
+        "RequestorId",
+        "InstanceId"
+      ],
+      "properties": {
+        "InstanceId": {
+          "type": "integer"
+        },
+        "RequestorId": {
+          "type": "integer"
+        }
+      }
+    },
     "SubscriptionList": {
       "description": "A list of subscriptions",
       "type": "array",
@@ -813,27 +848,20 @@ func init() {
       }
     },
     "SubscriptionResponse": {
-      "type": "array",
-      "items": {
-        "$ref": "#/definitions/SubscriptionResponseItem"
-      }
-    },
-    "SubscriptionResponseItem": {
       "type": "object",
       "required": [
         "SubscriptionId",
-        "RequestorId",
-        "InstanceId"
+        "SubscriptionInstances"
       ],
       "properties": {
-        "InstanceId": {
-          "type": "integer"
-        },
-        "RequestorId": {
-          "type": "integer"
-        },
         "SubscriptionId": {
           "type": "string"
+        },
+        "SubscriptionInstances": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/SubscriptionInstance"
+          }
         }
       }
     },
index 8092556..4a56d34 100644 (file)
@@ -25,7 +25,7 @@ type SubscribePolicyCreated struct {
        /*
          In: Body
        */
-       Payload models.SubscriptionResponse `json:"body,omitempty"`
+       Payload *models.SubscriptionResponse `json:"body,omitempty"`
 }
 
 // NewSubscribePolicyCreated creates SubscribePolicyCreated with default headers values
@@ -35,13 +35,13 @@ func NewSubscribePolicyCreated() *SubscribePolicyCreated {
 }
 
 // WithPayload adds the payload to the subscribe policy created response
-func (o *SubscribePolicyCreated) WithPayload(payload models.SubscriptionResponse) *SubscribePolicyCreated {
+func (o *SubscribePolicyCreated) WithPayload(payload *models.SubscriptionResponse) *SubscribePolicyCreated {
        o.Payload = payload
        return o
 }
 
 // SetPayload sets the payload to the subscribe policy created response
-func (o *SubscribePolicyCreated) SetPayload(payload models.SubscriptionResponse) {
+func (o *SubscribePolicyCreated) SetPayload(payload *models.SubscriptionResponse) {
        o.Payload = payload
 }
 
@@ -49,14 +49,11 @@ func (o *SubscribePolicyCreated) SetPayload(payload models.SubscriptionResponse)
 func (o *SubscribePolicyCreated) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) {
 
        rw.WriteHeader(201)
-       payload := o.Payload
-       if payload == nil {
-               // return empty array
-               payload = models.SubscriptionResponse{}
-       }
-
-       if err := producer.Produce(rw, payload); err != nil {
-               panic(err) // let the recovery middleware deal with this
+       if o.Payload != nil {
+               payload := o.Payload
+               if err := producer.Produce(rw, payload); err != nil {
+                       panic(err) // let the recovery middleware deal with this
+               }
        }
 }
 
index 9402089..9e9d18d 100644 (file)
@@ -25,7 +25,7 @@ type SubscribeReportCreated struct {
        /*
          In: Body
        */
-       Payload models.SubscriptionResponse `json:"body,omitempty"`
+       Payload *models.SubscriptionResponse `json:"body,omitempty"`
 }
 
 // NewSubscribeReportCreated creates SubscribeReportCreated with default headers values
@@ -35,13 +35,13 @@ func NewSubscribeReportCreated() *SubscribeReportCreated {
 }
 
 // WithPayload adds the payload to the subscribe report created response
-func (o *SubscribeReportCreated) WithPayload(payload models.SubscriptionResponse) *SubscribeReportCreated {
+func (o *SubscribeReportCreated) WithPayload(payload *models.SubscriptionResponse) *SubscribeReportCreated {
        o.Payload = payload
        return o
 }
 
 // SetPayload sets the payload to the subscribe report created response
-func (o *SubscribeReportCreated) SetPayload(payload models.SubscriptionResponse) {
+func (o *SubscribeReportCreated) SetPayload(payload *models.SubscriptionResponse) {
        o.Payload = payload
 }
 
@@ -49,14 +49,11 @@ func (o *SubscribeReportCreated) SetPayload(payload models.SubscriptionResponse)
 func (o *SubscribeReportCreated) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) {
 
        rw.WriteHeader(201)
-       payload := o.Payload
-       if payload == nil {
-               // return empty array
-               payload = models.SubscriptionResponse{}
-       }
-
-       if err := producer.Produce(rw, payload); err != nil {
-               panic(err) // let the recovery middleware deal with this
+       if o.Payload != nil {
+               payload := o.Payload
+               if err := producer.Produce(rw, payload); err != nil {
+                       panic(err) // let the recovery middleware deal with this
+               }
        }
 }
 
index ffc34fb..6ceabf9 100755 (executable)
@@ -45,7 +45,7 @@ import (
        "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/restapi/operations/report"
 )
 
-type SubscriptionHandler func(models.SubscriptionType, interface{}) (models.SubscriptionResponse, error)
+type SubscriptionHandler func(models.SubscriptionType, interface{}) (*models.SubscriptionResponse, error)
 type SubscriptionQueryHandler func() (models.SubscriptionList, error)
 type SubscriptionDeleteHandler func(string) error
 
@@ -135,22 +135,22 @@ func (r *Subscriber) Listen(add SubscriptionHandler, get SubscriptionQueryHandle
 }
 
 // Subscription interface for xApp: REPORT
-func (r *Subscriber) SubscribeReport(p *apimodel.ReportParams) (apimodel.SubscriptionResponse, error) {
+func (r *Subscriber) SubscribeReport(p *apimodel.ReportParams) (*apimodel.SubscriptionResponse, error) {
        params := apireport.NewSubscribeReportParamsWithTimeout(r.timeout).WithReportParams(p)
        result, err := r.CreateTransport().Report.SubscribeReport(params)
        if err != nil {
-               return apimodel.SubscriptionResponse{}, err
+               return &apimodel.SubscriptionResponse{}, err
        }
 
        return result.Payload, err
 }
 
 // Subscription interface for xApp: POLICY
-func (r *Subscriber) SubscribePolicy(p *apimodel.PolicyParams) (apimodel.SubscriptionResponse, error) {
+func (r *Subscriber) SubscribePolicy(p *apimodel.PolicyParams) (*apimodel.SubscriptionResponse, error) {
        params := apipolicy.NewSubscribePolicyParamsWithTimeout(r.timeout).WithPolicyParams(p)
        result, err := r.CreateTransport().Policy.SubscribePolicy(params)
        if err != nil {
-               return apimodel.SubscriptionResponse{}, err
+               return &apimodel.SubscriptionResponse{}, err
        }
 
        return result.Payload, err
index 2913246..b9713af 100755 (executable)
@@ -50,7 +50,7 @@ var policyParams = apimodel.PolicyParams{
        PolicyActionDefinitions: &apimodel.PolicyActionDefinition{},
 }
 
-func subscriptionHandler(stype models.SubscriptionType, params interface{}) (models.SubscriptionResponse, error) {
+func subscriptionHandler(stype models.SubscriptionType, params interface{}) (*models.SubscriptionResponse, error) {
        switch stype {
        case models.SubscriptionTypeReport:
                p := params.(*models.ReportParams)
@@ -68,9 +68,12 @@ func subscriptionHandler(stype models.SubscriptionType, params interface{}) (mod
        subId := "xapp-11"
        reqId := int64(11)
        instanceId := int64(22)
-       return models.SubscriptionResponse{
-               &models.SubscriptionResponseItem{SubscriptionID: &subId, RequestorID: &reqId, InstanceID: &instanceId}, 
-               &models.SubscriptionResponseItem{SubscriptionID: &subId, RequestorID: &reqId, InstanceID: &instanceId},
+       return &models.SubscriptionResponse{
+               SubscriptionID: &subId,
+               SubscriptionInstances: []*models.SubscriptionInstance{
+                       &models.SubscriptionInstance{RequestorID: &reqId, InstanceID: &instanceId}, 
+                       &models.SubscriptionInstance{RequestorID: &reqId, InstanceID: &instanceId},
+               },
        }, nil
 }
 
@@ -110,23 +113,23 @@ func TestSubscriptionQueryHandling(t *testing.T) {
 }
 
 func TestSubscriptionReportHandling(t *testing.T) {
-       result, err := Subscription.SubscribeReport(&reportParams)
+       resp, err := Subscription.SubscribeReport(&reportParams)
 
        assert.Equal(t, err, nil)
-       assert.Equal(t, len(result), 2)
-       assert.Equal(t, *result[0].RequestorID, int64(11))
-       assert.Equal(t, *result[0].InstanceID, int64(22))
-       assert.Equal(t, *result[1].RequestorID, int64(11))
-       assert.Equal(t, *result[1].InstanceID, int64(22))
+       assert.Equal(t, len(resp.SubscriptionInstances), 2)
+       assert.Equal(t, *resp.SubscriptionInstances[0].RequestorID, int64(11))
+       assert.Equal(t, *resp.SubscriptionInstances[0].InstanceID, int64(22))
+       assert.Equal(t, *resp.SubscriptionInstances[1].RequestorID, int64(11))
+       assert.Equal(t, *resp.SubscriptionInstances[1].InstanceID, int64(22))
 }
 
 func TestSubscriptionPolicytHandling(t *testing.T) {
-       result, err := Subscription.SubscribePolicy(&policyParams)
+       resp, err := Subscription.SubscribePolicy(&policyParams)
 
        assert.Equal(t, err, nil)
-       assert.Equal(t, len(result), 2)
-       assert.Equal(t, *result[0].RequestorID, int64(11))
-       assert.Equal(t, *result[0].InstanceID, int64(22))
+       assert.Equal(t, len(resp.SubscriptionInstances), 2)
+       assert.Equal(t, *resp.SubscriptionInstances[0].RequestorID, int64(11))
+       assert.Equal(t, *resp.SubscriptionInstances[0].InstanceID, int64(22))
 }
 
 func TestSubscriptionDeleteHandling(t *testing.T) {