-swagger: "2.0"
+swagger: '2.0'
info:
description: This is the initial REST API for RIC subscription
- version: 0.0.1
+ version: 0.0.2
title: RIC subscription
license:
name: Apache 2.0
get:
summary: Returns list of subscriptions
tags:
- - "common"
+ - common
operationId: getAllSubscriptions
produces:
- application/json
description: Internal error
post:
tags:
- - "common"
+ - common
operationId: Subscribe
summary: Subscribe a list of X2AP event triggers to receive messages sent by RAN
consumes:
'/subscriptions/{subscriptionId}':
delete:
tags:
- - "common"
+ - common
summary: Unsubscribe X2AP events from Subscription Manager
operationId: Unsubscribe
consumes:
type: string
description: The type of the content
enum:
- - json
- - xml
- - other
+ - json
+ - xml
+ - other
XAppConfig:
type: object
required:
type: array
items:
$ref: '#/definitions/XAppConfig'
-
ActionDefinition:
type: object
description: E2SM Octet string. ActionDefinition is an OPTIONAL IE
SubscriptionDetail:
type: object
required:
- - RequestorId
- - InstanceId
+ - XappEventInstanceId
- EventTriggers
- ActionToBeSetupList
properties:
- RequestorId:
- type: integer
- minimum: 0
- maximum: 65535
- InstanceId:
+ XappEventInstanceId:
type: integer
minimum: 0
maximum: 65535
- SubscriptionDetails
properties:
SubscriptionId:
- type: string
- description: Optional subscription ID (Submgr allocates if not given)
+ type: string
+ description: Optional subscription ID (Submgr allocates if not given)
ClientEndpoint:
type: object
description: xApp service address and port
properties:
Host:
description: >-
- xApp service address name like 'service-ricxapp-xappname-http.ricxapp'
+ xApp service address name like
+ 'service-ricxapp-xappname-http.ricxapp'
type: string
HTTPPort:
description: xApp HTTP service address port
SubscriptionInstance:
type: object
required:
- - RequestorId
- - InstanceId
+ - XappEventInstanceId
+ - E2EventInstanceId
- ErrorCause
properties:
- RequestorId:
+ XappEventInstanceId:
type: integer
minimum: 0
maximum: 65535
- InstanceId:
+ E2EventInstanceId:
type: integer
minimum: 0
maximum: 65535
type: array
description: A list of subscriptions
items:
- $ref: '#/definitions/SubscriptionData'
\ No newline at end of file
+ $ref: '#/definitions/SubscriptionData'
// Required: true
EventTriggers *EventTriggerDefinition `json:"EventTriggers"`
- // instance Id
+ // xapp event instance Id
// Required: true
// Maximum: 65535
// Minimum: 0
- InstanceID *int64 `json:"InstanceId"`
-
- // requestor Id
- // Required: true
- // Maximum: 65535
- // Minimum: 0
- RequestorID *int64 `json:"RequestorId"`
+ XappEventInstanceID *int64 `json:"XappEventInstanceId"`
}
// Validate validates this subscription detail
res = append(res, err)
}
- if err := m.validateInstanceID(formats); err != nil {
- res = append(res, err)
- }
-
- if err := m.validateRequestorID(formats); err != nil {
+ if err := m.validateXappEventInstanceID(formats); err != nil {
res = append(res, err)
}
return nil
}
-func (m *SubscriptionDetail) validateInstanceID(formats strfmt.Registry) error {
-
- if err := validate.Required("InstanceId", "body", m.InstanceID); err != nil {
- return err
- }
-
- if err := validate.MinimumInt("InstanceId", "body", int64(*m.InstanceID), 0, false); err != nil {
- return err
- }
-
- if err := validate.MaximumInt("InstanceId", "body", int64(*m.InstanceID), 65535, false); err != nil {
- return err
- }
-
- return nil
-}
-
-func (m *SubscriptionDetail) validateRequestorID(formats strfmt.Registry) error {
+func (m *SubscriptionDetail) validateXappEventInstanceID(formats strfmt.Registry) error {
- if err := validate.Required("RequestorId", "body", m.RequestorID); err != nil {
+ if err := validate.Required("XappEventInstanceId", "body", m.XappEventInstanceID); err != nil {
return err
}
- if err := validate.MinimumInt("RequestorId", "body", int64(*m.RequestorID), 0, false); err != nil {
+ if err := validate.MinimumInt("XappEventInstanceId", "body", int64(*m.XappEventInstanceID), 0, false); err != nil {
return err
}
- if err := validate.MaximumInt("RequestorId", "body", int64(*m.RequestorID), 65535, false); err != nil {
+ if err := validate.MaximumInt("XappEventInstanceId", "body", int64(*m.XappEventInstanceID), 65535, false); err != nil {
return err
}
// swagger:model SubscriptionInstance
type SubscriptionInstance struct {
- // Empty string when no error.
- // Required: true
- ErrorCause *string `json:"ErrorCause"`
-
- // instance Id
+ // e2 event instance Id
// Required: true
// Maximum: 65535
// Minimum: 0
- InstanceID *int64 `json:"InstanceId"`
+ E2EventInstanceID *int64 `json:"E2EventInstanceId"`
- // requestor Id
+ // Empty string when no error.
+ // Required: true
+ ErrorCause *string `json:"ErrorCause"`
+
+ // xapp event instance Id
// Required: true
// Maximum: 65535
// Minimum: 0
- RequestorID *int64 `json:"RequestorId"`
+ XappEventInstanceID *int64 `json:"XappEventInstanceId"`
}
// Validate validates this subscription instance
func (m *SubscriptionInstance) Validate(formats strfmt.Registry) error {
var res []error
- if err := m.validateErrorCause(formats); err != nil {
+ if err := m.validateE2EventInstanceID(formats); err != nil {
res = append(res, err)
}
- if err := m.validateInstanceID(formats); err != nil {
+ if err := m.validateErrorCause(formats); err != nil {
res = append(res, err)
}
- if err := m.validateRequestorID(formats); err != nil {
+ if err := m.validateXappEventInstanceID(formats); err != nil {
res = append(res, err)
}
return nil
}
-func (m *SubscriptionInstance) validateErrorCause(formats strfmt.Registry) error {
+func (m *SubscriptionInstance) validateE2EventInstanceID(formats strfmt.Registry) error {
- if err := validate.Required("ErrorCause", "body", m.ErrorCause); err != nil {
+ if err := validate.Required("E2EventInstanceId", "body", m.E2EventInstanceID); err != nil {
return err
}
- return nil
-}
-
-func (m *SubscriptionInstance) validateInstanceID(formats strfmt.Registry) error {
-
- if err := validate.Required("InstanceId", "body", m.InstanceID); err != nil {
+ if err := validate.MinimumInt("E2EventInstanceId", "body", int64(*m.E2EventInstanceID), 0, false); err != nil {
return err
}
- if err := validate.MinimumInt("InstanceId", "body", int64(*m.InstanceID), 0, false); err != nil {
+ if err := validate.MaximumInt("E2EventInstanceId", "body", int64(*m.E2EventInstanceID), 65535, false); err != nil {
return err
}
- if err := validate.MaximumInt("InstanceId", "body", int64(*m.InstanceID), 65535, false); err != nil {
+ return nil
+}
+
+func (m *SubscriptionInstance) validateErrorCause(formats strfmt.Registry) error {
+
+ if err := validate.Required("ErrorCause", "body", m.ErrorCause); err != nil {
return err
}
return nil
}
-func (m *SubscriptionInstance) validateRequestorID(formats strfmt.Registry) error {
+func (m *SubscriptionInstance) validateXappEventInstanceID(formats strfmt.Registry) error {
- if err := validate.Required("RequestorId", "body", m.RequestorID); err != nil {
+ if err := validate.Required("XappEventInstanceId", "body", m.XappEventInstanceID); err != nil {
return err
}
- if err := validate.MinimumInt("RequestorId", "body", int64(*m.RequestorID), 0, false); err != nil {
+ if err := validate.MinimumInt("XappEventInstanceId", "body", int64(*m.XappEventInstanceID), 0, false); err != nil {
return err
}
- if err := validate.MaximumInt("RequestorId", "body", int64(*m.RequestorID), 65535, false); err != nil {
+ if err := validate.MaximumInt("XappEventInstanceId", "body", int64(*m.XappEventInstanceID), 65535, false); err != nil {
return err
}
// Required: true
EventTriggers *EventTriggerDefinition `json:"EventTriggers"`
- // instance Id
+ // xapp event instance Id
// Required: true
// Maximum: 65535
// Minimum: 0
- InstanceID *int64 `json:"InstanceId"`
-
- // requestor Id
- // Required: true
- // Maximum: 65535
- // Minimum: 0
- RequestorID *int64 `json:"RequestorId"`
+ XappEventInstanceID *int64 `json:"XappEventInstanceId"`
}
// Validate validates this subscription detail
res = append(res, err)
}
- if err := m.validateInstanceID(formats); err != nil {
- res = append(res, err)
- }
-
- if err := m.validateRequestorID(formats); err != nil {
+ if err := m.validateXappEventInstanceID(formats); err != nil {
res = append(res, err)
}
return nil
}
-func (m *SubscriptionDetail) validateInstanceID(formats strfmt.Registry) error {
-
- if err := validate.Required("InstanceId", "body", m.InstanceID); err != nil {
- return err
- }
-
- if err := validate.MinimumInt("InstanceId", "body", int64(*m.InstanceID), 0, false); err != nil {
- return err
- }
-
- if err := validate.MaximumInt("InstanceId", "body", int64(*m.InstanceID), 65535, false); err != nil {
- return err
- }
-
- return nil
-}
-
-func (m *SubscriptionDetail) validateRequestorID(formats strfmt.Registry) error {
+func (m *SubscriptionDetail) validateXappEventInstanceID(formats strfmt.Registry) error {
- if err := validate.Required("RequestorId", "body", m.RequestorID); err != nil {
+ if err := validate.Required("XappEventInstanceId", "body", m.XappEventInstanceID); err != nil {
return err
}
- if err := validate.MinimumInt("RequestorId", "body", int64(*m.RequestorID), 0, false); err != nil {
+ if err := validate.MinimumInt("XappEventInstanceId", "body", int64(*m.XappEventInstanceID), 0, false); err != nil {
return err
}
- if err := validate.MaximumInt("RequestorId", "body", int64(*m.RequestorID), 65535, false); err != nil {
+ if err := validate.MaximumInt("XappEventInstanceId", "body", int64(*m.XappEventInstanceID), 65535, false); err != nil {
return err
}
// swagger:model SubscriptionInstance
type SubscriptionInstance struct {
- // Empty string when no error.
- // Required: true
- ErrorCause *string `json:"ErrorCause"`
-
- // instance Id
+ // e2 event instance Id
// Required: true
// Maximum: 65535
// Minimum: 0
- InstanceID *int64 `json:"InstanceId"`
+ E2EventInstanceID *int64 `json:"E2EventInstanceId"`
- // requestor Id
+ // Empty string when no error.
+ // Required: true
+ ErrorCause *string `json:"ErrorCause"`
+
+ // xapp event instance Id
// Required: true
// Maximum: 65535
// Minimum: 0
- RequestorID *int64 `json:"RequestorId"`
+ XappEventInstanceID *int64 `json:"XappEventInstanceId"`
}
// Validate validates this subscription instance
func (m *SubscriptionInstance) Validate(formats strfmt.Registry) error {
var res []error
- if err := m.validateErrorCause(formats); err != nil {
+ if err := m.validateE2EventInstanceID(formats); err != nil {
res = append(res, err)
}
- if err := m.validateInstanceID(formats); err != nil {
+ if err := m.validateErrorCause(formats); err != nil {
res = append(res, err)
}
- if err := m.validateRequestorID(formats); err != nil {
+ if err := m.validateXappEventInstanceID(formats); err != nil {
res = append(res, err)
}
return nil
}
-func (m *SubscriptionInstance) validateErrorCause(formats strfmt.Registry) error {
+func (m *SubscriptionInstance) validateE2EventInstanceID(formats strfmt.Registry) error {
- if err := validate.Required("ErrorCause", "body", m.ErrorCause); err != nil {
+ if err := validate.Required("E2EventInstanceId", "body", m.E2EventInstanceID); err != nil {
return err
}
- return nil
-}
-
-func (m *SubscriptionInstance) validateInstanceID(formats strfmt.Registry) error {
-
- if err := validate.Required("InstanceId", "body", m.InstanceID); err != nil {
+ if err := validate.MinimumInt("E2EventInstanceId", "body", int64(*m.E2EventInstanceID), 0, false); err != nil {
return err
}
- if err := validate.MinimumInt("InstanceId", "body", int64(*m.InstanceID), 0, false); err != nil {
+ if err := validate.MaximumInt("E2EventInstanceId", "body", int64(*m.E2EventInstanceID), 65535, false); err != nil {
return err
}
- if err := validate.MaximumInt("InstanceId", "body", int64(*m.InstanceID), 65535, false); err != nil {
+ return nil
+}
+
+func (m *SubscriptionInstance) validateErrorCause(formats strfmt.Registry) error {
+
+ if err := validate.Required("ErrorCause", "body", m.ErrorCause); err != nil {
return err
}
return nil
}
-func (m *SubscriptionInstance) validateRequestorID(formats strfmt.Registry) error {
+func (m *SubscriptionInstance) validateXappEventInstanceID(formats strfmt.Registry) error {
- if err := validate.Required("RequestorId", "body", m.RequestorID); err != nil {
+ if err := validate.Required("XappEventInstanceId", "body", m.XappEventInstanceID); err != nil {
return err
}
- if err := validate.MinimumInt("RequestorId", "body", int64(*m.RequestorID), 0, false); err != nil {
+ if err := validate.MinimumInt("XappEventInstanceId", "body", int64(*m.XappEventInstanceID), 0, false); err != nil {
return err
}
- if err := validate.MaximumInt("RequestorId", "body", int64(*m.RequestorID), 65535, false); err != nil {
+ if err := validate.MaximumInt("XappEventInstanceId", "body", int64(*m.XappEventInstanceID), 65535, false); err != nil {
return err
}
// http
// Host: hostname
// BasePath: /ric/v1
-// Version: 0.0.1
+// Version: 0.0.2
// License: Apache 2.0 http://www.apache.org/licenses/LICENSE-2.0.html
//
// Consumes:
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
},
- "version": "0.0.1"
+ "version": "0.0.2"
},
"host": "hostname",
"basePath": "/ric/v1",
"SubscriptionDetail": {
"type": "object",
"required": [
- "RequestorId",
- "InstanceId",
+ "XappEventInstanceId",
"EventTriggers",
"ActionToBeSetupList"
],
"EventTriggers": {
"$ref": "#/definitions/EventTriggerDefinition"
},
- "InstanceId": {
- "type": "integer",
- "maximum": 65535
- },
- "RequestorId": {
+ "XappEventInstanceId": {
"type": "integer",
"maximum": 65535
}
"SubscriptionInstance": {
"type": "object",
"required": [
- "RequestorId",
- "InstanceId",
+ "XappEventInstanceId",
+ "E2EventInstanceId",
"ErrorCause"
],
"properties": {
+ "E2EventInstanceId": {
+ "type": "integer",
+ "maximum": 65535
+ },
"ErrorCause": {
"description": "Empty string when no error.",
"type": "string"
},
- "InstanceId": {
- "type": "integer",
- "maximum": 65535
- },
- "RequestorId": {
+ "XappEventInstanceId": {
"type": "integer",
"maximum": 65535
}
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
},
- "version": "0.0.1"
+ "version": "0.0.2"
},
"host": "hostname",
"basePath": "/ric/v1",
"SubscriptionDetail": {
"type": "object",
"required": [
- "RequestorId",
- "InstanceId",
+ "XappEventInstanceId",
"EventTriggers",
"ActionToBeSetupList"
],
"EventTriggers": {
"$ref": "#/definitions/EventTriggerDefinition"
},
- "InstanceId": {
- "type": "integer",
- "maximum": 65535,
- "minimum": 0
- },
- "RequestorId": {
+ "XappEventInstanceId": {
"type": "integer",
"maximum": 65535,
"minimum": 0
"SubscriptionInstance": {
"type": "object",
"required": [
- "RequestorId",
- "InstanceId",
+ "XappEventInstanceId",
+ "E2EventInstanceId",
"ErrorCause"
],
"properties": {
- "ErrorCause": {
- "description": "Empty string when no error.",
- "type": "string"
- },
- "InstanceId": {
+ "E2EventInstanceId": {
"type": "integer",
"maximum": 65535,
"minimum": 0
},
- "RequestorId": {
+ "ErrorCause": {
+ "description": "Empty string when no error.",
+ "type": "string"
+ },
+ "XappEventInstanceId": {
"type": "integer",
"maximum": 65535,
"minimum": 0
import (
"fmt"
+ "testing"
+ "time"
+
"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/clientmodel"
"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/models"
"github.com/stretchr/testify/assert"
- "testing"
- "time"
)
var (
suite *testing.T
meid = "gnb123456"
- reqId = int64(1)
- seqId = int64(1)
+ xappEventInstanceId = int64(1)
+ eventInstanceId = int64(1)
funId = int64(1)
actionId = int64(1)
actionType = "report"
func TestSubscriptionHandling(t *testing.T) {
subscriptionParams := clientmodel.SubscriptionParams{
+ SubscriptionID: "",
Meid: &meid,
RANFunctionID: &funId,
ClientEndpoint: &clientEndpoint,
SubscriptionDetails: clientmodel.SubscriptionDetailsList{
&clientmodel.SubscriptionDetail{
- RequestorID: &reqId,
- InstanceID: &seqId,
+ XappEventInstanceID: &eventInstanceId,
EventTriggers: &clientmodel.EventTriggerDefinition{
OctetString: "1234",
},
Subscription.SetResponseCB(func(resp *clientmodel.SubscriptionResponse) {
assert.Equal(t, len(resp.SubscriptionInstances), 1)
- assert.Equal(t, *resp.SubscriptionInstances[0].RequestorID, int64(11))
- assert.Equal(t, *resp.SubscriptionInstances[0].InstanceID, int64(22))
+ assert.Equal(t, *resp.SubscriptionInstances[0].XappEventInstanceID, int64(11))
+ assert.Equal(t, *resp.SubscriptionInstances[0].E2EventInstanceID, int64(22))
})
_, err := Subscription.Subscribe(&subscriptionParams)
func TestSubscriptionWithClientProvidedIdHandling(t *testing.T) {
subscriptionParams := clientmodel.SubscriptionParams{
+ SubscriptionID: "myxapp",
Meid: &meid,
RANFunctionID: &funId,
ClientEndpoint: &clientEndpoint,
- SubscriptionID: "myxapp",
SubscriptionDetails: clientmodel.SubscriptionDetailsList{
&clientmodel.SubscriptionDetail{
- RequestorID: &reqId,
- InstanceID: &seqId,
+ XappEventInstanceID: &eventInstanceId,
EventTriggers: &clientmodel.EventTriggerDefinition{
OctetString: "1234",
},
Subscription.SetResponseCB(func(resp *clientmodel.SubscriptionResponse) {
assert.Equal(t, len(resp.SubscriptionInstances), 1)
- assert.Equal(t, *resp.SubscriptionInstances[0].RequestorID, int64(11))
- assert.Equal(t, *resp.SubscriptionInstances[0].InstanceID, int64(22))
+ assert.Equal(t, *resp.SubscriptionInstances[0].XappEventInstanceID, int64(11))
+ assert.Equal(t, *resp.SubscriptionInstances[0].E2EventInstanceID, int64(22))
})
_, err := Subscription.Subscribe(&subscriptionParams)
// Helper functions
func processSubscriptions(subscriptionId string) {
// Generate requestorId, instanceId
- reqId := int64(11)
- instanceId := int64(22)
+ xappInstanceId := int64(11)
+ e2InstanceId := int64(22)
resp := &models.SubscriptionResponse{
SubscriptionID: &subscriptionId,
SubscriptionInstances: []*models.SubscriptionInstance{
{
- RequestorID: &reqId,
- InstanceID: &instanceId,
+ XappEventInstanceID: &xappInstanceId,
+ E2EventInstanceID: &e2InstanceId,
},
},
}
assert.Equal(suite, clientEndpoint.HTTPPort, p.ClientEndpoint.HTTPPort)
assert.Equal(suite, clientEndpoint.RMRPort, p.ClientEndpoint.RMRPort)
- assert.Equal(suite, reqId, *p.SubscriptionDetails[0].RequestorID)
- assert.Equal(suite, seqId, *p.SubscriptionDetails[0].InstanceID)
+ assert.Equal(suite, xappEventInstanceId, *p.SubscriptionDetails[0].XappEventInstanceID)
assert.Equal(suite, "1234", p.SubscriptionDetails[0].EventTriggers.OctetString)
assert.Equal(suite, actionId, *p.SubscriptionDetails[0].ActionToBeSetupList[0].ActionID)
assert.Equal(suite, actionType, *p.SubscriptionDetails[0].ActionToBeSetupList[0].ActionType)