Skip to content
Snippets Groups Projects
nbi.go 1.72 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"
    
    	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
    
    	"code.fbi.h-da.de/danet/gosdn/controller/metrics"
    
    	"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"
    
    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"
    
    Fabian Seidl's avatar
    Fabian Seidl committed
    var userService rbac.UserService
    var roleService rbac.RoleService
    
    var topologyService topology.Service
    var nodeService nodes.Service
    var portService ports.Service
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // NorthboundInterface is the representation of the
    // gRPC services used provided.
    type NorthboundInterface struct {
    
    	Pnd      *pndServer
    	Core     *core
    	Csbi     *csbi
    	Sbi      *sbiServer
    	Auth     *Auth
    	User     *User
    	Role     *Role
    	Topology *Topology
    
    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 rbac.UserService,
    	roles rbac.RoleService,
    	topology topology.Service,
    	node nodes.Service,
    	port ports.Service,
    ) *NorthboundInterface {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	pndc = pnds
    
    Fabian Seidl's avatar
    Fabian Seidl committed
    	userService = users
    	roleService = roles
    
    	topologyService = topology
    	nodeService = node
    	portService = port
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	return &NorthboundInterface{
    
    		Pnd:      &pndServer{},
    		Core:     &core{},
    		Csbi:     &csbi{},
    		Sbi:      &sbiServer{},
    		Auth:     &Auth{},
    		User:     &User{},
    		Role:     &Role{},
    		Topology: &Topology{},
    
    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))
    }