Skip to content
Snippets Groups Projects
nbi.go 1.71 KiB
Newer Older
  • Learn to ignore specific revisions
  • Manuel Kieweg's avatar
    Manuel Kieweg committed
    package server
    
    import (
    
    	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkdomain"
    
    	rbacInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
    	"code.fbi.h-da.de/danet/gosdn/controller/rbac"
    
    	"code.fbi.h-da.de/danet/gosdn/controller/topology"
    	"code.fbi.h-da.de/danet/gosdn/controller/topology/nodes"
    	"code.fbi.h-da.de/danet/gosdn/controller/topology/ports"
    
    	"code.fbi.h-da.de/danet/gosdn/controller/metrics"
    
    Malte Bauch's avatar
    Malte Bauch committed
    	"github.com/prometheus/client_golang/prometheus"
    	log "github.com/sirupsen/logrus"
    	"google.golang.org/grpc/codes"
    	"google.golang.org/grpc/status"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // NorthboundInterface is the representation of the
    // gRPC services used provided.
    type NorthboundInterface struct {
    
    	Core     *CoreServer
    	Csbi     *CsbiServer
    
    	Auth     *AuthServer
    	User     *UserServer
    	Role     *RoleServer
    	Topology *TopologyServer
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // NewNBI receives a PndStore and returns a new gRPC *NorthboundInterface
    
    func NewNBI(
    	pnds networkdomain.PndStore,
    	users rbacInterfaces.UserService,
    	roles rbacInterfaces.RoleService,
    	jwt rbac.JWTManager,
    	topologyService topology.Service,
    	nodeService nodes.Service,
    	portService ports.Service,
    
    ) *NorthboundInterface {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	return &NorthboundInterface{
    
    		Pnd:      NewPndServer(pnds),
    		Core:     NewCoreServer(pnds),
    		Csbi:     NewCsbiServer(pnds),
    		Sbi:      NewSbiServer(pnds),
    		Auth:     NewAuthServer(&jwt, users),
    		User:     NewUserServer(&jwt, users),
    		Role:     NewRoleServer(&jwt, roles),
    		Topology: NewTopologyServer(topologyService, nodeService, portService),
    
    Malte Bauch's avatar
    Malte Bauch committed
    
    func handleRPCError(labels prometheus.Labels, err error) error {
    	log.Error(err)
    	return status.Errorf(codes.Aborted, "%v", metrics.HandleError(labels, err, grpcAPIErrorsTotal))
    }