-
Notifications
You must be signed in to change notification settings - Fork 23
/
flowcontrol-controlpoints.go
48 lines (42 loc) · 1.78 KB
/
flowcontrol-controlpoints.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package agentfunctions
import (
"context"
cmdv1 "github.com/fluxninja/aperture/v2/api/gen/proto/go/aperture/cmd/v1"
agentinfo "github.com/fluxninja/aperture/v2/pkg/agent-info"
"github.com/fluxninja/aperture/v2/pkg/cache"
"github.com/fluxninja/aperture/v2/pkg/policies/flowcontrol/selectors"
flowcontrolControlPoints "github.com/fluxninja/aperture/v2/pkg/policies/flowcontrol/service/controlpoints"
"github.com/fluxninja/aperture/v2/pkg/rpc"
)
// FlowControlControlPointsHandler is a handler for ListFlowControlPoints function
//
// Note: There's no requirement every handler needs to be in a separate struct.
// More methods can be added to this one.
type FlowControlControlPointsHandler struct {
cache *cache.Cache[selectors.TypedControlPointID]
agentGroup string
}
// NewFlowControlControlPointsHandler returns a new FlowControlControlPointsHandler.
func NewFlowControlControlPointsHandler(
cache *cache.Cache[selectors.TypedControlPointID],
agentInfo *agentinfo.AgentInfo,
) FlowControlControlPointsHandler {
return FlowControlControlPointsHandler{
cache: cache,
agentGroup: agentInfo.GetAgentGroup(),
}
}
// ListFlowControlPoints lists currently discovered control points.
func (h *FlowControlControlPointsHandler) ListFlowControlPoints(
ctx context.Context,
_ *cmdv1.ListFlowControlPointsRequest,
) (*cmdv1.ListFlowControlPointsAgentResponse, error) {
return &cmdv1.ListFlowControlPointsAgentResponse{
FlowControlPoints: flowcontrolControlPoints.ToProto(h.cache),
AgentGroup: h.agentGroup,
}, nil
}
// RegisterControlPointsHandler registers ControlPointsHandler in handler registry.
func RegisterControlPointsHandler(handler FlowControlControlPointsHandler, registry *rpc.HandlerRegistry) error {
return rpc.RegisterFunction(registry, handler.ListFlowControlPoints)
}