Skip to content
Snippets Groups Projects
capabilities.go 1001 B
Newer Older
  • Learn to ignore specific revisions
  • package cli
    
    import (
    	"context"
    	"fmt"
    	"strings"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	spb "code.fbi.h-da.de/cocsn/api/go/gosdn/southbound"
    	tpb "code.fbi.h-da.de/cocsn/api/go/gosdn/transport"
    
    
    Andre Sterba's avatar
    Andre Sterba committed
    	"code.fbi.h-da.de/cocsn/gosdn/nucleus"
    	gpb "github.com/openconfig/gnmi/proto/gnmi"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // Capabilities sends a gNMI Capabilities request to the specified target
    // and prints the supported models to stdout
    
    func Capabilities(a, u, p string) error {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	opts := &tpb.TransportOption{
    		Address:  a,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		Username: u,
    		Password: p,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	transport, err := nucleus.NewGnmiTransport(opts, nucleus.NewSBI(spb.Type_OPENCONFIG))
    
    	if err != nil {
    		return err
    	}
    	resp, err := transport.Capabilities(context.Background())
    	if err != nil {
    		return err
    	}
    	modelData := resp.(*gpb.CapabilityResponse).SupportedModels
    	b := strings.Builder{}
    	for _, elem := range modelData {
    		_, err := b.WriteString(elem.Name)
    		if err != nil {
    			return err
    		}
    		_, err = b.WriteString("\n")
    		if err != nil {
    			return err
    		}
    	}
    	fmt.Println(b.String())
    	return nil
    }