diff --git a/cmd/ris/risserver/server.go b/cmd/ris/risserver/server.go index 8c950c6c438e2d485ba2e2d15a0637b5490c627c..5e9c11936066e8134db86ebcceb6d026862e9054 100644 --- a/cmd/ris/risserver/server.go +++ b/cmd/ris/risserver/server.go @@ -11,11 +11,13 @@ import ( "github.com/bio-routing/bio-rd/routingtable/filter" "github.com/bio-routing/bio-rd/routingtable/locRIB" "github.com/bio-routing/bio-rd/routingtable/vrf" + "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus" pb "github.com/bio-routing/bio-rd/cmd/ris/api" bnet "github.com/bio-routing/bio-rd/net" + "github.com/bio-routing/bio-rd/net/api" netapi "github.com/bio-routing/bio-rd/net/api" routeapi "github.com/bio-routing/bio-rd/route/api" ) @@ -53,15 +55,19 @@ func NewServer(b *server.BMPServer) *Server { } } +func wrapGetRIBErr(err error, rtr string, vrfID uint64, version api.IP_Version) error { + return errors.Wrapf(err, "Unable to get RIB (%s/%s/v%d)", rtr, vrf.RouteDistinguisherHumanReadable(vrfID), version) +} + func (s Server) getRIB(rtr string, vrfID uint64, ipVersion netapi.IP_Version) (*locRIB.LocRIB, error) { r := s.bmp.GetRouter(rtr) if r == nil { - return nil, fmt.Errorf("Unable to get router %q", rtr) + return nil, fmt.Errorf("Unable to get router") } v := r.GetVRF(vrfID) if v == nil { - return nil, fmt.Errorf("Unable to get VRF %s", vrf.RouteDistinguisherHumanReadable(vrfID)) + return nil, fmt.Errorf("Unable to get VRF") } var rib *locRIB.LocRIB @@ -85,7 +91,7 @@ func (s Server) getRIB(rtr string, vrfID uint64, ipVersion netapi.IP_Version) (* func (s *Server) LPM(ctx context.Context, req *pb.LPMRequest) (*pb.LPMResponse, error) { rib, err := s.getRIB(req.Router, req.VrfId, req.Pfx.Address.Version) if err != nil { - return nil, err + return nil, wrapGetRIBErr(err, req.Router, req.VrfId, req.Pfx.Address.Version) } routes := rib.LPM(bnet.NewPrefixFromProtoPrefix(req.Pfx)) @@ -103,7 +109,7 @@ func (s *Server) LPM(ctx context.Context, req *pb.LPMRequest) (*pb.LPMResponse, func (s *Server) Get(ctx context.Context, req *pb.GetRequest) (*pb.GetResponse, error) { rib, err := s.getRIB(req.Router, req.VrfId, req.Pfx.Address.Version) if err != nil { - return nil, err + return nil, wrapGetRIBErr(err, req.Router, req.VrfId, req.Pfx.Address.Version) } route := rib.Get(bnet.NewPrefixFromProtoPrefix(req.Pfx)) @@ -124,7 +130,7 @@ func (s *Server) Get(ctx context.Context, req *pb.GetRequest) (*pb.GetResponse, func (s *Server) GetLonger(ctx context.Context, req *pb.GetLongerRequest) (*pb.GetLongerResponse, error) { rib, err := s.getRIB(req.Router, req.VrfId, req.Pfx.Address.Version) if err != nil { - return nil, err + return nil, wrapGetRIBErr(err, req.Router, req.VrfId, req.Pfx.Address.Version) } routes := rib.GetLonger(bnet.NewPrefixFromProtoPrefix(req.Pfx)) @@ -152,7 +158,7 @@ func (s *Server) ObserveRIB(req *pb.ObserveRIBRequest, stream pb.RoutingInformat rib, err := s.getRIB(req.Router, req.VrfId, ipVersion) if err != nil { - return err + return wrapGetRIBErr(err, req.Router, req.VrfId, ipVersion) } risObserveFIBClients.WithLabelValues(req.Router, fmt.Sprintf("%d", req.VrfId), fmt.Sprintf("%d", req.Afisafi)).Inc() @@ -204,7 +210,7 @@ func (s *Server) DumpRIB(req *pb.DumpRIBRequest, stream pb.RoutingInformationSer rib, err := s.getRIB(req.Router, req.VrfId, ipVersion) if err != nil { - return err + return wrapGetRIBErr(err, req.Router, req.VrfId, ipVersion) } toSend := &pb.DumpRIBReply{