Skip to content
Snippets Groups Projects
gnmi.go 1.11 KiB
Newer Older
  • Learn to ignore specific revisions
  • Manuel Kieweg's avatar
    Manuel Kieweg committed
    package main
    
    import (
    
    	"code.fbi.h-da.de/cocsn/gosdn/forks/goarista/gnmi"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"code.fbi.h-da.de/cocsn/gosdn/nucleus"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"code.fbi.h-da.de/cocsn/yang-models/generated/openconfig"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"context"
    	"fmt"
    	"github.com/google/uuid"
    	log "github.com/sirupsen/logrus"
    )
    
    func main() {
    	sbi := &nucleus.OpenConfig{}
    	device := nucleus.Device{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		Device: &openconfig.Device{},
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		Config: nucleus.DeviceConfig{
    			Uuid:     uuid.New(),
    			Address:  "141.100.70.170:6030",
    			Username: "admin",
    			Password: "arista",
    		},
    	}
    	pnd := nucleus.NewPND("openconfig", sbi)
    	if err := pnd.AddDevice(device); err != nil {
    		log.Fatal(err)
    	}
    
    
    	cfg := &gnmi.Config{
    		Addr:     device.Config.Address,
    		Password: device.Config.Password,
    		Username: device.Config.Username,
    	}
    	ctx := gnmi.NewContext(context.Background(), cfg)
    	ctx = context.WithValue(ctx, "config", cfg)
    
    	paths := []string{"interfaces/interface"}
    
    	req, err := gnmi.NewGetRequest(gnmi.SplitPaths(paths), "")
    	resp, err := nucleus.GetWithRequest(ctx, req)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	if err != nil {
    		log.Fatal(err)
    	}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	if err := device.Add(resp); err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		panic(err)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    	fmt.Println(device.Config)