From 918a10c6f9f80633414d63928aa932ff5ea6c90e Mon Sep 17 00:00:00 2001 From: Fabian Seidl <fabian.seidl@h-da.de> Date: Wed, 13 Mar 2024 15:54:15 +0100 Subject: [PATCH] add API stuff for App service --- controller/api/app.go | 40 +++++++++++++++++++++++++++++ controller/northbound/client/app.go | 17 ++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 controller/api/app.go create mode 100644 controller/northbound/client/app.go diff --git a/controller/api/app.go b/controller/api/app.go new file mode 100644 index 000000000..fcb66d5f4 --- /dev/null +++ b/controller/api/app.go @@ -0,0 +1,40 @@ +package api + +import ( + "context" + "time" + + apb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/app" + nbi "code.fbi.h-da.de/danet/gosdn/controller/northbound/client" +) + +// Register checks if the app already exists and if not creates a new one. +func Register(ctx context.Context, addr, appname, token string) (*apb.AppRegisterResponse, error) { + appClient, err := nbi.AppClient(addr, dialOptions...) + if err != nil { + return nil, err + } + + req := &apb.AppRegisterRequest{ + Timestamp: time.Now().UnixNano(), + Appname: appname, + Token: token, + } + + return appClient.Register(ctx, req) +} + +// Deregister deregisters an app. +func Deregister(ctx context.Context, addr, appname, token string) (*apb.AppDeregisterResponse, error) { + appClient, err := nbi.AppClient(addr, dialOptions...) + if err != nil { + return nil, err + } + + req := &apb.AppDeregisterRequest{ + Timestamp: time.Now().UnixNano(), + Appname: appname, + } + + return appClient.Deregister(ctx, req) +} diff --git a/controller/northbound/client/app.go b/controller/northbound/client/app.go new file mode 100644 index 000000000..750af3056 --- /dev/null +++ b/controller/northbound/client/app.go @@ -0,0 +1,17 @@ +package client + +import ( + apb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/app" + "google.golang.org/grpc" +) + +// AppClient returns a client for the gRPC App service. It takes +// the address of the gRPC endpoint and optional grpc.DialOption +// as argument. +func AppClient(addr string, opts ...grpc.DialOption) (apb.AppServiceClient, error) { + conn, err := grpc.Dial(addr, opts...) + if err != nil { + return nil, err + } + return apb.NewAppServiceClient(conn), nil +} -- GitLab