Skip to content

Commit

Permalink
Set logging levels according to intent
Browse files Browse the repository at this point in the history
  • Loading branch information
Motok1 committed Jun 12, 2024
1 parent 006f452 commit 64a9a51
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 71 deletions.
10 changes: 6 additions & 4 deletions cmd/polad/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,14 @@ func main() {
defer fp.Close()

// Initialize logger
logger := logger.LogInit(fp)
logger := logger.LogInit(fp, c.Global.Log.Debug)
defer func() {
err := logger.Sync()
if err != nil {
logger.Panic("Failed to logger Sync", zap.Error(err))
log.Panic(err)
}
}()
zap.ReplaceGlobals(logger)

// Prepare TED update tools
var tedElemsChan chan []table.TedElem
Expand All @@ -76,6 +76,7 @@ func main() {
tedElemsChan = startGobgpUpdate(&c, logger)
default:
logger.Panic("Specified TED source is not defined")
log.Panic()
}
}

Expand All @@ -90,6 +91,7 @@ func main() {
}
if serverErr := server.NewPce(o, logger, tedElemsChan); serverErr.Error != nil {
logger.Panic("Failed to start new server", zap.String("server", serverErr.Server), zap.Error(serverErr.Error))
log.Panic()
}
}

Expand All @@ -99,9 +101,9 @@ func startGobgpUpdate(c *config.Config, logger *zap.Logger) chan []table.TedElem
go func() {
for {
tedElems, err := gobgp.GetBgplsNlris(c.Global.Gobgp.GrpcClient.Address, c.Global.Gobgp.GrpcClient.Port)
logger.Info("Request TED update", zap.String("source", "GoBGP"), zap.String("session", c.Global.Gobgp.GrpcClient.Address+":"+c.Global.Gobgp.GrpcClient.Port))
logger.Debug("Request TED update", zap.String("source", "GoBGP"), zap.String("session", c.Global.Gobgp.GrpcClient.Address+":"+c.Global.Gobgp.GrpcClient.Port))
if err != nil {
logger.Info("Failed session with GoBGP", zap.Error(err))
logger.Error("Failed session with GoBGP", zap.Error(err))
} else {
tedElemsChan <- tedElems
}
Expand Down
9 changes: 7 additions & 2 deletions pkg/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,17 @@ import (
"go.uber.org/zap/zapcore"
)

func LogInit(fp *os.File) *zap.Logger {
func LogInit(fp *os.File, dbg bool) *zap.Logger {
pe := zap.NewProductionEncoderConfig()
fileEncoder := zapcore.NewJSONEncoder(pe)
pe.EncodeTime = zapcore.ISO8601TimeEncoder
consoleEncoder := zapcore.NewConsoleEncoder(pe)
level := zap.InfoLevel
var level zapcore.Level
if dbg {
level = zap.DebugLevel
} else {
level = zap.InfoLevel
}
core := zapcore.NewTee(
zapcore.NewCore(fileEncoder, zapcore.AddSync(fp), level),
zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), level),
Expand Down
35 changes: 20 additions & 15 deletions pkg/server/grpc_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,24 @@ type APIServer struct {
pce *Server
grpcServer *grpc.Server
usidMode bool
logger *zap.Logger
pb.UnimplementedPceServiceServer
}

func NewAPIServer(pce *Server, grpcServer *grpc.Server, usidMode bool) *APIServer {
func NewAPIServer(pce *Server, grpcServer *grpc.Server, usidMode bool, logger *zap.Logger) *APIServer {
s := &APIServer{
pce: pce,
grpcServer: grpcServer,
usidMode: usidMode,
logger: logger.With(zap.String("server", "grpc")),
}
pb.RegisterPceServiceServer(grpcServer, s)
return s
}

func (s *APIServer) Serve(address string, port string) error {
listenInfo := net.JoinHostPort(address, port)
s.pce.logger.Info("gRPC listen", zap.String("listenInfo", listenInfo), zap.String("server", "grpc"))
s.logger.Info("Start listening on gRPC port", zap.String("listenInfo", listenInfo))
grpcListener, err := net.Listen("tcp", listenInfo)
if err != nil {
return fmt.Errorf("failed to listen: %w", err)
Expand All @@ -60,7 +62,7 @@ func (s *APIServer) CreateSRPolicyWithoutLinkState(ctx context.Context, input *p
return s.createSRPolicy(ctx, input, false)
}

func (s *APIServer) createSRPolicy(ctx context.Context, input *pb.CreateSRPolicyInput, withLinkState bool) (*pb.RequestStatus, error) {
func (s *APIServer) createSRPolicy(_ context.Context, input *pb.CreateSRPolicyInput, withLinkState bool) (*pb.RequestStatus, error) {
var err error

if withLinkState {
Expand Down Expand Up @@ -151,7 +153,8 @@ func (s *APIServer) createSRPolicy(ctx context.Context, input *pb.CreateSRPolicy
if err != nil {
return nil, err
}
s.pce.logger.Info("received CreateSRPolicy API request", zap.String("input", string(inputJson)), zap.String("server", "grpc"))
s.logger.Info("Received CreateSRPolicy API request")
s.logger.Debug("Received paramater", zap.String("input", string(inputJson)))

pcepSession, err := getPcepSession(s.pce, inputSRPolicy.GetPcepSessionAddr())
if err != nil {
Expand All @@ -169,14 +172,15 @@ func (s *APIServer) createSRPolicy(ctx context.Context, input *pb.CreateSRPolicy

if id, exists := pcepSession.SearchPlspID(inputSRPolicy.GetColor(), dstAddr); exists {
// Update SR Policy
s.pce.logger.Info("plspID check", zap.Uint32("plspID", id), zap.String("server", "grpc"))
s.logger.Debug("Request to update SR Policy", zap.Uint32("plspID", id))
srPolicy.PlspID = id

if err := pcepSession.SendPCUpdate(srPolicy); err != nil {
return &pb.RequestStatus{IsSuccess: false}, err
}
} else {
// Initiate SR Policy
s.logger.Debug("Request to create SR Policy")
if err := pcepSession.RequestSRPolicyCreated(srPolicy); err != nil {
return &pb.RequestStatus{IsSuccess: false}, err
}
Expand Down Expand Up @@ -209,7 +213,8 @@ func (s *APIServer) DeleteSRPolicy(ctx context.Context, input *pb.DeleteSRPolicy
if err != nil {
return nil, err
}
s.pce.logger.Info("received DeleteSRPolicy API request", zap.String("input", string(inputJson)), zap.String("server", "grpc"))
s.logger.Info("Received DeleteSRPolicy API request")
s.logger.Debug("Received paramater", zap.String("input", string(inputJson)))

pcepSession, err := getPcepSession(s.pce, inputSRPolicy.GetPcepSessionAddr())
if err != nil {
Expand All @@ -227,23 +232,23 @@ func (s *APIServer) DeleteSRPolicy(ctx context.Context, input *pb.DeleteSRPolicy

if id, exists := pcepSession.SearchPlspID(inputSRPolicy.GetColor(), dstAddr); exists {
// Delete SR Policy
s.pce.logger.Info("plspID check", zap.Uint32("plspID", id), zap.String("server", "grpc"))
s.logger.Debug("Request to delete SR Policy", zap.Uint32("plspID", id))
srPolicy.PlspID = id

if err := pcepSession.RequestSRPolicyDeleted(srPolicy); err != nil {
return &pb.RequestStatus{IsSuccess: false}, nil
}
} else {
// Invalid SR Policy
return &pb.RequestStatus{IsSuccess: false}, fmt.Errorf("SR Policy not found")
return &pb.RequestStatus{IsSuccess: false}, fmt.Errorf("Requested SR Policy not found")
}

return &pb.RequestStatus{IsSuccess: true}, nil
}

func validate(inputSRPolicy *pb.SRPolicy, asn uint32, validationKind ValidationKind) error {
if !validator[validationKind](inputSRPolicy, asn) {
return errors.New("invalid input")
return errors.New("validate error, invalid input")
}

return nil
Expand Down Expand Up @@ -343,7 +348,7 @@ func getMetricType(metricType pb.MetricType) (table.MetricType, error) {
}

func (s *APIServer) GetSessionList(context.Context, *empty.Empty) (*pb.SessionList, error) {
s.pce.logger.Info("Receive GetPeerAddrList API request", zap.String("server", "grpc"))
s.logger.Info("Received GetSessionList API request")

var ret pb.SessionList
for _, pcepSession := range s.pce.sessionList {
Expand All @@ -360,12 +365,12 @@ func (s *APIServer) GetSessionList(context.Context, *empty.Empty) (*pb.SessionLi
ret.Sessions = append(ret.Sessions, ss)
}

s.pce.logger.Info("Send GetPeerAddrList API reply", zap.String("server", "grpc"))
s.logger.Debug("Send GetPeerAddrList API reply")
return &ret, nil
}

func (s *APIServer) GetSRPolicyList(context.Context, *empty.Empty) (*pb.SRPolicyList, error) {
s.pce.logger.Info("Receive GetSRPolicyList API request", zap.String("server", "grpc"))
s.logger.Info("Received GetSRPolicyList API request")

var ret pb.SRPolicyList
for ssAddr, pols := range s.pce.SRPolicies() {
Expand All @@ -390,12 +395,12 @@ func (s *APIServer) GetSRPolicyList(context.Context, *empty.Empty) (*pb.SRPolicy
}
}

s.pce.logger.Info("Send SRPolicyList API reply", zap.String("server", "grpc"))
s.logger.Debug("Send SRPolicyList API reply")
return &ret, nil
}

func (s *APIServer) GetTed(context.Context, *empty.Empty) (*pb.Ted, error) {
s.pce.logger.Info("Receive GetTed API request", zap.String("server", "grpc"))
s.logger.Info("Received GetTed API request")

ret := &pb.Ted{
Enable: true,
Expand Down Expand Up @@ -464,7 +469,7 @@ func (s *APIServer) GetTed(context.Context, *empty.Empty) (*pb.Ted, error) {
}
}

s.pce.logger.Info("Send GetTed API reply", zap.String("server", "grpc"))
s.logger.Debug("Send GetTed API reply")
return ret, nil
}

Expand Down
17 changes: 9 additions & 8 deletions pkg/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ func NewPce(o *PceOptions, logger *zap.Logger, tedElemsChan chan []table.TedElem
}
ted.Update(tedElems)
s.ted = ted
logger.Info("Update TED")
logger.Debug("Update TED")
}
}()
}
Expand All @@ -66,7 +66,7 @@ func NewPce(o *PceOptions, logger *zap.Logger, tedElemsChan chan []table.TedElem

go func() {
grpcServer := grpc.NewServer()
apiServer := NewAPIServer(s, grpcServer, o.USidMode)
apiServer := NewAPIServer(s, grpcServer, o.USidMode, logger)
if err := apiServer.Serve(o.GrpcAddr, o.GrpcPort); err != nil {
errChan <- ServerError{
Server: "grpc",
Expand All @@ -90,7 +90,7 @@ func (s *Server) Serve(address string, port string, usidMode bool) error {
}
localAddr := netip.AddrPortFrom(a, uint16(p))

s.logger.Info("PCEP listen", zap.String("listenInfo", localAddr.String()))
s.logger.Info("Start listening on PCEP port", zap.String("address", localAddr.String()))
l, err := net.ListenTCP("tcp", net.TCPAddrFromAddrPort(localAddr))
if err != nil {
return err
Expand All @@ -99,21 +99,22 @@ func (s *Server) Serve(address string, port string, usidMode bool) error {

sessionID := uint8(1)
for {
ss := NewSession(sessionID, s.logger)
ss.tcpConn, err = l.AcceptTCP()
tcpConn, err := l.AcceptTCP()
if err != nil {
return err
}
peerAddrPort, err := netip.ParseAddrPort(ss.tcpConn.RemoteAddr().String())
peerAddrPort, err := netip.ParseAddrPort(tcpConn.RemoteAddr().String())
if err != nil {
return err
}
ss.peerAddr = peerAddrPort.Addr()
ss := NewSession(sessionID, peerAddrPort.Addr(), tcpConn, s.logger)
ss.logger.Info("Start PCEP session")

s.sessionList = append(s.sessionList, ss)
go func() {
ss.Established()
s.closeSession(ss)
s.logger.Info("Close PCEP session", zap.String("session", ss.peerAddr.String()))
ss.logger.Info("Close PCEP session")
}()
sessionID++
}
Expand Down
Loading

0 comments on commit 64a9a51

Please sign in to comment.