X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fxapp%2Fsubscription.go;h=6ceabf98b802dc29e2787fb114ad1e229b98c4e7;hb=refs%2Fchanges%2F20%2F2920%2F1;hp=20901235bdca98c349a22e88edeac4070d92e439;hpb=9568a2d73b96516b27f54650e309f0d157fb97d9;p=ric-plt%2Fxapp-frame.git diff --git a/pkg/xapp/subscription.go b/pkg/xapp/subscription.go index 2090123..6ceabf9 100755 --- a/pkg/xapp/subscription.go +++ b/pkg/xapp/subscription.go @@ -31,7 +31,7 @@ import ( "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" @@ -39,14 +39,15 @@ import ( "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 @@ -77,7 +78,7 @@ func NewSubscriber(host string, timo int) *Subscriber { } // 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 @@ -88,7 +89,7 @@ func (r *Subscriber) Listen(subHandler SubscriptionHandler, queryHandler Subscri // 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() @@ -97,30 +98,30 @@ func (r *Subscriber) Listen(subHandler SubscriptionHandler, queryHandler Subscri // 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 @@ -134,38 +135,35 @@ func (r *Subscriber) Listen(subHandler SubscriptionHandler, queryHandler Subscri } // 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))