From 9c33424aa6e271cf48d97f6c8b216ac35d73b14e Mon Sep 17 00:00:00 2001 From: Fabian Seidl <fabian.seidl@h-da.de> Date: Wed, 13 Mar 2024 15:32:20 +0100 Subject: [PATCH] add API stuff for configuration management --- controller/api/configurationManagement.go | 38 +++++++++++++++++++ .../client/configurationManagement.go | 17 +++++++++ 2 files changed, 55 insertions(+) create mode 100644 controller/api/configurationManagement.go create mode 100644 controller/northbound/client/configurationManagement.go diff --git a/controller/api/configurationManagement.go b/controller/api/configurationManagement.go new file mode 100644 index 000000000..986a192af --- /dev/null +++ b/controller/api/configurationManagement.go @@ -0,0 +1,38 @@ +package api + +import ( + "context" + "time" + + cpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/configurationmanagement" + nbi "code.fbi.h-da.de/danet/gosdn/controller/northbound/client" +) + +// ExportSDNConfig returns the SDN configuration. +func ExportSDNConfig(ctx context.Context, addr, pid string) (*cpb.ExportSDNConfigResponse, error) { + configClient, err := nbi.ConfigurationManagementClient(addr, dialOptions...) + if err != nil { + return nil, err + } + + req := &cpb.ExportSDNConfigRequest{ + Timestamp: time.Now().UnixNano(), + Pid: pid, + } + return configClient.ExportSDNConfig(ctx, req) +} + +// ImportSDNConfig receives an SDN configuration and imports it. +func ImportSDNConfig(ctx context.Context, addr, pid, sdnConfigData string) (*cpb.ImportSDNConfigResponse, error) { + configClient, err := nbi.ConfigurationManagementClient(addr, dialOptions...) + if err != nil { + return nil, err + } + + req := &cpb.ImportSDNConfigRequest{ + Timestamp: time.Now().UnixNano(), + Pid: pid, + SdnConfigData: sdnConfigData, + } + return configClient.ImportSDNConfig(ctx, req) +} diff --git a/controller/northbound/client/configurationManagement.go b/controller/northbound/client/configurationManagement.go new file mode 100644 index 000000000..8e008d173 --- /dev/null +++ b/controller/northbound/client/configurationManagement.go @@ -0,0 +1,17 @@ +package client + +import ( + cpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/configurationmanagement" + "google.golang.org/grpc" +) + +// ConfigurationManagementClient returns a client for the gRPC ConfigurationManagement service. It takes +// the address of the gRPC endpoint and optional grpc.DialOption +// as argument. +func ConfigurationManagementClient(addr string, opts ...grpc.DialOption) (cpb.ConfigurationManagementServiceClient, error) { + conn, err := grpc.Dial(addr, opts...) + if err != nil { + return nil, err + } + return cpb.NewConfigurationManagementServiceClient(conn), nil +} -- GitLab