Skip to content
Snippets Groups Projects
grpc.go 1.33 KiB
Newer Older
  • Learn to ignore specific revisions
  • Manuel Kieweg's avatar
    Manuel Kieweg committed
    package api
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    import (
    	"context"
    	"time"
    
    
    	pb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/core"
    	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
    	nbi "code.fbi.h-da.de/danet/gosdn/controller/northbound/client"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	log "github.com/sirupsen/logrus"
    	"github.com/spf13/viper"
    
    	"google.golang.org/grpc"
    
    Fabian Seidl's avatar
    Fabian Seidl committed
    	"google.golang.org/grpc/credentials/insecure"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    )
    
    var dialOptions []grpc.DialOption
    
    func init() {
    	dialOptions = []grpc.DialOption{
    
    Fabian Seidl's avatar
    Fabian Seidl committed
    		grpc.WithTransportCredentials(insecure.NewCredentials()),
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    }
    
    // Init initialises the CLI client.
    
    func Init(ctx context.Context, addr string) error {
    
    	resp, err := GetAllCore(ctx, addr)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	if err != nil {
    		return err
    	}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	if len(resp.Pnd) > 0 {
    		pid := resp.Pnd[0].Id
    		viper.Set("CLI_PND", pid)
    		log.Infof("PND: %v", pid)
    	}
    
    	return viper.WriteConfig()
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    // GetIds requests all UUID information from the controller
    
    func GetIds(ctx context.Context, addr string) ([]*ppb.PrincipalNetworkDomain, error) {
    
    	resp, err := GetAllCore(ctx, addr)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	if err != nil {
    		return nil, err
    	}
    	return resp.Pnd, nil
    }
    
    
    // GetAllCore requests all PNDs
    
    func GetAllCore(ctx context.Context, addr string) (*pb.GetPndListResponse, error) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	coreClient, err := nbi.CoreClient(addr, dialOptions...)
    	if err != nil {
    		return nil, err
    	}
    
    Fabian Seidl's avatar
    Fabian Seidl committed
    	req := &pb.GetPndListRequest{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		Timestamp: time.Now().UnixNano(),
    	}
    
    Fabian Seidl's avatar
    Fabian Seidl committed
    	return coreClient.GetPndList(ctx, req)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }