"time"
apiclient "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/clientapi"
- apicontrol "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/clientapi/control"
+ apicommon "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/clientapi/common"
apipolicy "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/clientapi/policy"
apireport "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/clientapi/report"
apimodel "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/clientmodel"
"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/models"
"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/restapi"
"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/restapi/operations"
- "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/restapi/operations/control"
+ "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/restapi/operations/common"
"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/restapi/operations/policy"
"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/restapi/operations/query"
"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/restapi/operations/report"
)
-type SubscriptionHandler func(models.SubscriptionType, interface{}) (models.SubscriptionResult, error)
+type SubscriptionHandler func(models.SubscriptionType, interface{}) (models.SubscriptionResponse, error)
type SubscriptionQueryHandler func() (models.SubscriptionList, error)
+type SubscriptionDeleteHandler func(string) error
type Subscriber struct {
localAddr string
}
// Server interface: listen and receive subscription requests
-func (r *Subscriber) Listen(subHandler SubscriptionHandler, queryHandler SubscriptionQueryHandler) error {
+func (r *Subscriber) Listen(add SubscriptionHandler, get SubscriptionQueryHandler, del SubscriptionDeleteHandler) error {
swaggerSpec, err := loads.Embedded(restapi.SwaggerJSON, restapi.FlatSwaggerJSON)
if err != nil {
return err
// Subscription: query
api.QueryGetAllSubscriptionsHandler = query.GetAllSubscriptionsHandlerFunc(
func(p query.GetAllSubscriptionsParams) middleware.Responder {
- if resp, err := queryHandler(); err == nil {
+ if resp, err := get(); err == nil {
return query.NewGetAllSubscriptionsOK().WithPayload(resp)
}
return query.NewGetAllSubscriptionsInternalServerError()
// SubscriptionType: Report
api.ReportSubscribeReportHandler = report.SubscribeReportHandlerFunc(
func(p report.SubscribeReportParams) middleware.Responder {
- if resp, err := subHandler(models.SubscriptionTypeReport, p.ReportParams); err == nil {
+ if resp, err := add(models.SubscriptionTypeReport, p.ReportParams); err == nil {
return report.NewSubscribeReportCreated().WithPayload(resp)
}
return report.NewSubscribeReportInternalServerError()
})
- // SubscriptionType: Control
- api.ControlSubscribeControlHandler = control.SubscribeControlHandlerFunc(
- func(p control.SubscribeControlParams) middleware.Responder {
- if resp, err := subHandler(models.SubscriptionTypeControl, p.ControlParams); err == nil {
- return control.NewSubscribeControlCreated().WithPayload(resp)
- }
- return control.NewSubscribeControlInternalServerError()
- })
-
// SubscriptionType: policy
api.PolicySubscribePolicyHandler = policy.SubscribePolicyHandlerFunc(
func(p policy.SubscribePolicyParams) middleware.Responder {
- if resp, err := subHandler(models.SubscriptionTypePolicy, p.PolicyParams); err == nil {
+ if resp, err := add(models.SubscriptionTypePolicy, p.PolicyParams); err == nil {
return policy.NewSubscribePolicyCreated().WithPayload(resp)
}
return policy.NewSubscribePolicyInternalServerError()
})
+ // SubscriptionType: delete
+ api.CommonUnsubscribeHandler = common.UnsubscribeHandlerFunc(
+ func(p common.UnsubscribeParams) middleware.Responder {
+ if err := del(p.SubscriptionID); err == nil {
+ return common.NewUnsubscribeNoContent()
+ }
+ return common.NewUnsubscribeInternalServerError()
+ })
+
server := restapi.NewServer(api)
defer server.Shutdown()
server.Host = r.localAddr
}
// Subscription interface for xApp: REPORT
-func (r *Subscriber) SubscribeReport(p *apimodel.ReportParams) (apimodel.SubscriptionResult, 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.SubscriptionResult{}, err
- }
-
- return result.Payload, err
-}
-
-// Subscription interface for xApp: CONTROL
-func (r *Subscriber) SubscribeControl(p *apimodel.ControlParams) (apimodel.SubscriptionResult, error) {
- params := apicontrol.NewSubscribeControlParamsWithTimeout(r.timeout).WithControlParams(p)
- result, err := r.CreateTransport().Control.SubscribeControl(params)
- if err != nil {
- return apimodel.SubscriptionResult{}, err
+ return apimodel.SubscriptionResponse{}, err
}
return result.Payload, err
}
// Subscription interface for xApp: POLICY
-func (r *Subscriber) SubscribePolicy(p *apimodel.PolicyParams) (apimodel.SubscriptionResult, 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.SubscriptionResult{}, err
+ return apimodel.SubscriptionResponse{}, err
}
return result.Payload, err
}
+// Subscription interface for xApp: DELETE
+func (r *Subscriber) UnSubscribe(subId string) error {
+ params := apicommon.NewUnsubscribeParamsWithTimeout(r.timeout).WithSubscriptionID(subId)
+ _, err := r.CreateTransport().Common.Unsubscribe(params)
+
+ return err
+}
+
// Subscription interface for xApp: QUERY
func (r *Subscriber) QuerySubscriptions() (models.SubscriptionList, error) {
resp, err := http.Get(fmt.Sprintf("http://%s/%s/subscriptions", r.remoteHost, r.remoteUrl))