github.com/cilium/cilium@v1.16.2/pkg/bgpv1/api/get_routes.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  package api
     5  
     6  import (
     7  	"fmt"
     8  	"net/http"
     9  
    10  	"github.com/go-openapi/runtime/middleware"
    11  
    12  	restapi "github.com/cilium/cilium/api/v1/server/restapi/bgp"
    13  	"github.com/cilium/cilium/pkg/api"
    14  	"github.com/cilium/cilium/pkg/bgpv1/agent"
    15  )
    16  
    17  func NewGetRoutesHandler(c *agent.Controller) restapi.GetBgpRoutesHandler {
    18  	return &getRoutesHandler{
    19  		controller: c,
    20  	}
    21  }
    22  
    23  type getRoutesHandler struct {
    24  	controller *agent.Controller
    25  }
    26  
    27  func (h *getRoutesHandler) Handle(params restapi.GetBgpRoutesParams) middleware.Responder {
    28  	if h.controller == nil {
    29  		return api.Error(http.StatusNotImplemented, agent.ErrBGPControlPlaneDisabled)
    30  	}
    31  	routes, err := h.controller.BGPMgr.GetRoutes(params.HTTPRequest.Context(), params)
    32  	if err != nil {
    33  		return api.Error(http.StatusInternalServerError, fmt.Errorf("failed to get routes: %w", err))
    34  	}
    35  	return restapi.NewGetBgpRoutesOK().WithPayload(routes)
    36  }