Skip to content
Snippets Groups Projects
device.go 1.1 KiB
Newer Older
  • Learn to ignore specific revisions
  • Manuel Kieweg's avatar
    Manuel Kieweg committed
    package nucleus
    
    import (
    
    	"code.fbi.h-da.de/cocsn/yang-models/generated/openconfig"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"github.com/google/uuid"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	pb "github.com/openconfig/gnmi/proto/gnmi"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"github.com/openconfig/ygot/ygot"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"github.com/openconfig/ygot/ytypes"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    )
    
    type Device struct {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	SBI       SouthboundInterface
    	Config    DeviceConfig
    	Transport Transport
    
    // Add adds a property to a device. Please
    // use better naming in further develop
    // Also all that Interface Call specific logic belongs to SBI!
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    func (d Device) Add(resp interface{}) error {
    
    	s, err := d.SBI.Schema()
    
    	if err != nil {
    		return err
    	}
    
    	models := s.SchemaTree
    
    	opts := []ytypes.SetNodeOpt{&ytypes.InitMissingElements{}, &ytypes.TolerateJSONInconsistencies{}}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	r := resp.(*pb.GetResponse)
    	rn := r.Notification
    
    	for _, msg := range rn {
    		for _, val := range msg.Update {
    
    			schema := models["Device"]
    			if err := ytypes.SetNode(schema, d.Device.(*openconfig.Device), val.Path, val.Val, opts...); err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	return nil
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    type DeviceConfig struct {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	Uuid     uuid.UUID
    	Address  string
    	Username string
    	Password string