github.com/cilium/cilium@v1.16.2/pkg/bgpv1/api/get_route_policies.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 NewGetRoutePoliciesHandler(c *agent.Controller) restapi.GetBgpRoutePoliciesHandler {
    18  	return &getRoutePoliciesHandler{
    19  		controller: c,
    20  	}
    21  }
    22  
    23  type getRoutePoliciesHandler struct {
    24  	controller *agent.Controller
    25  }
    26  
    27  func (h *getRoutePoliciesHandler) Handle(params restapi.GetBgpRoutePoliciesParams) middleware.Responder {
    28  	if h.controller == nil {
    29  		return api.Error(http.StatusNotImplemented, agent.ErrBGPControlPlaneDisabled)
    30  	}
    31  
    32  	policies, err := h.controller.BGPMgr.GetRoutePolicies(params.HTTPRequest.Context(), params)
    33  	if err != nil {
    34  		return api.Error(http.StatusInternalServerError, fmt.Errorf("failed to get route policies: %w", err))
    35  	}
    36  	return restapi.NewGetBgpRoutePoliciesOK().WithPayload(policies)
    37  }