gnmiserver

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 23, 2024 License: BSD-3-Clause, Apache-2.0 Imports: 27 Imported by: 0

Documentation

Overview

Package gnmiserver implements a gnmi server.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type GoStructEnumData

type GoStructEnumData map[string]map[int64]ygot.EnumDefinition

GoStructEnumData is the data type to maintain GoStruct enum type.

type JSONUnmarshaler

type JSONUnmarshaler func([]byte, ygot.GoStruct, ...ytypes.UnmarshalOpt) error

JSONUnmarshaler is the signature of the Unmarshal() function in the GoStruct code generated by openconfig ygot library.

type Model

type Model struct {
	// contains filtered or unexported fields
}

Model contains the model data and GoStruct information for the device to config.

func NewModel

NewModel returns an instance of Model struct.

func (*Model) NewConfigStruct

func (m *Model) NewConfigStruct(jsonConfig []byte) (ygot.ValidatedGoStruct, error)

NewConfigStruct creates a ValidatedGoStruct of this model from jsonConfig. If jsonConfig is nil, creates an empty GoStruct.

func (*Model) SupportedModels

func (m *Model) SupportedModels() []string

SupportedModels returns a list of supported models.

type Server

type Server struct {
	YangModelChangeDispatcher *not.Dispatcher
	// contains filtered or unexported fields
}

Server struct maintains the data structure for device config and implements the interface of gnmi server. It supports Capabilities, Get, and Set APIs. Typical usage:

g := grpc.NewServer()
s, err := Server.NewServer(model, config, callback)
pb.NewServer(g, s)
reflection.Register(g)
listen, err := net.Listen("tcp", ":8080")
g.Serve(listen)

For a real device, apply the config changes to the hardware in the callback function. Arguments:

newConfig: new root config to be applied on the device.

func callback(newConfig ygot.ValidatedGoStruct) error {
		// Apply the config to your device and return nil if success. return error if fails.
		//
		// Do something ...
}

func NewServer

func NewServer(model *Model, config ygot.ValidatedGoStruct, notifications *not.Dispatcher, handlers ...handler.PathHandler) (*Server, error)

NewServer creates an instance of Server with given json config.

func (*Server) Capabilities

func (s *Server) Capabilities(ctx context.Context, req *pb.CapabilityRequest) (*pb.CapabilityResponse, error)

Capabilities returns supported encodings and supported models.

func (*Server) Get

func (s *Server) Get(ctx context.Context, req *pb.GetRequest) (*pb.GetResponse, error)

Get implements the Get RPC in gNMI spec.

func (*Server) InternalUpdate

func (s *Server) InternalUpdate(fp func(config *ygot.ValidatedGoStruct) error) error

InternalUpdate is an experimental feature to let the server update its internal states. Use it with your own risk.

func (*Server) Set

func (s *Server) Set(ctx context.Context, req *pb.SetRequest) (*pb.SetResponse, error)

Set implements the Set RPC in gNMI spec.

func (*Server) Subscribe

func (s *Server) Subscribe(stream gnmi.GNMI_SubscribeServer) error

Subscribe: First cut of an implementation * * Subscribe is called as go-routine and does not need to spawn a new go routine

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL