Skip to content
Snippets Groups Projects
cli-handling.go 2.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*
    	This file contains the grpc cli server-side calls.
        Functions here should call other functions in charge of the
    	particular task.
    
    package nucleus
    
    import (
    	pb "code.fbi.h-da.de/cocsn/gosdn/cliInterface"
    
    	"code.fbi.h-da.de/cocsn/gosdn/log"
    
    	"code.fbi.h-da.de/cocsn/gosdn/restconf/client/ciena"
    
    	"context"
    	"google.golang.org/grpc"
    	"net"
    )
    
    
    // server is used to implement the grcp cli server
    
    type server struct {
    
    	pb.UnimplementedGrpcCliServer
    
    	core *Core
    }
    
    func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
    
    	log.Info("Received: ", in.GetName())
    
    	return &pb.HelloReply{Message: "Hello " + in.GetName(), GoSDNInfo: "goSDN in version: DEVELOP"}, nil
    
    }
    
    func (s *server) Shutdown(ctx context.Context, in *pb.ShutdownRequest) (*pb.ShutdownReply, error) {
    
    	log.Info("Shutdown Received: ", in.GetName())
    
    	return &pb.ShutdownReply{Message: "Shutdown " + in.GetName()}, nil
    }
    
    func getCLIGoing(core *Core) {
    
    	log.Info("Starting: GetCLIGoing")
    
    	// Boot-up the control interface for the cli
    	cliControlListener, err := net.Listen("tcp", core.config.CliSocket)
    	if err != nil {
    
    		log.Fatal(err)
    
    	}
    
    	cliControlServer := grpc.NewServer()
    
    
    	pb.RegisterGrpcCliServer(cliControlServer, &server{core: core})
    
    	if err := cliControlServer.Serve(cliControlListener); err != nil {
    
    		log.Fatal(err)
    
    	log.Info("Started: GetCLIGoing")
    
    }
    
    // SBI specific calls, by now TAPI only
    func (s *server) TAPIGetEdge(ctx context.Context, in *pb.TAPIRequest) (*pb.TAPIReply, error) {
    
    	log.Info("Received: ", in.GetName())
    
    	if err := s.core.clients["ciena-mcp"].(*ciena.MCPClient).GetNodes(); err != nil {
    		log.Error(err)
    
    		return &pb.TAPIReply{Message: "TAPI error"}, nil
    
    	return &pb.TAPIReply{Message: "Done"}, nil
    }
    
    func (s *server) TAPIGetEdgeNode(ctx context.Context, in *pb.TAPIRequest) (*pb.TAPIReply, error) {
    
    	log.Info("Received: ", in.GetName())
    
    	if err := s.core.clients["ciena-mcp"].(*ciena.MCPClient).GetNodeEdgePoints(); err != nil {
    		log.Error(err)
    
    		return &pb.TAPIReply{Message: "TAPI error"}, nil
    
    	return &pb.TAPIReply{Message: "Done"}, nil
    }
    
    func (s *server) TAPIGetLink(ctx context.Context, in *pb.TAPIRequest) (*pb.TAPIReply, error) {
    
    	log.Info("Received: ", in.GetName())
    
    	if err := s.core.clients["ciena-mcp"].(*ciena.MCPClient).GetLinks(); err != nil {
    		log.Error(err)
    
    		return &pb.TAPIReply{Message: "TAPI error"}, nil
    
    	return &pb.TAPIReply{Message: "Done"}, nil
    }