-
Manuel Kieweg authoredManuel Kieweg authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
gnmi_transport.go 1.93 KiB
package nucleus
import (
"code.fbi.h-da.de/cocsn/gosdn/forks/goarista/gnmi"
"context"
"github.com/google/uuid"
"github.com/openconfig/gnmi/proto/gnmi_ext"
gpb "github.com/openconfig/gnmi/proto/gnmi"
)
type Gnmi uuid.UUID
func (g *Gnmi) SetConfig(interface{}) error {
return nil
}
func (g *Gnmi) GetConfig() interface{} {
return nil
}
// Capabilities calls GNMI capabilities
func (g *Gnmi) Capabilities(ctx context.Context) (interface{}, error) {
client, err := gnmi.Dial(ctx.Value("config").(*gnmi.Config))
if err != nil {
return nil, err
}
resp, err := client.Capabilities(ctx, &gpb.CapabilityRequest{})
if err != nil {
return nil, err
}
return resp, nil
}
// Get calls GNMI get
func (g *Gnmi) Get(ctx context.Context, paths [][]string, origin string) (interface{}, error) {
req, err := gnmi.NewGetRequest(paths, origin)
if err != nil {
return nil, err
}
return GetWithRequest(ctx, req)
}
// GetWithRequest takes a fully formed GetRequest, performs the Get,
// and displays any response.
func GetWithRequest(ctx context.Context, req *gpb.GetRequest) (interface{}, error) {
client, err := gnmi.Dial(ctx.Value("config").(*gnmi.Config))
if err != nil {
return nil, err
}
resp, err := client.Get(ctx, req)
if err != nil {
return nil, err
}
return resp, nil
}
// Set calls GNMI set
func (g *Gnmi) Set(ctx context.Context, setOps []*gnmi.Operation,
exts ...*gnmi_ext.Extension) error {
client, err := gnmi.Dial(ctx.Value("config").(*gnmi.Config))
if err != nil {
return err
}
return gnmi.Set(ctx, client, setOps, exts...)
}
// Subscribe calls GNMI subscribe
func (g *Gnmi) Subscribe(ctx context.Context, subscribeOptions *gnmi.SubscribeOptions,
respChan chan<- *gpb.SubscribeResponse) error {
client, err := gnmi.Dial(ctx.Value("config").(*gnmi.Config))
if err != nil {
return err
}
return gnmi.SubscribeErr(ctx, client, subscribeOptions, respChan)
}
// Close calls GNMI close
func (g *Gnmi) Close() error {
return nil
}