Documentation
¶
Index ¶
- Constants
- Variables
- func AllNamespace() func(krt.HandlerContext, string) bool
- func IndexerByObjType(obj client.Object) []string
- func IterateIndices(f func(client.Object, string, client.IndexerFunc) error) error
- func ProcessBackendError(err error, reporter reports.ParentRefReporter)
- func ReferenceAllowed(ctx context.Context, fromgk metav1.GroupKind, fromns string, ...) bool
- func SameNamespace(ns string) func(krt.HandlerContext, string) bool
- type BackendMap
- type Error
- type From
- type FromObject
- type GatewayQueries
- type GroupKindNs
- type ListenerResult
- type Namespaced
- type Option
- type RouteError
- type RouteInfo
- func (r *RouteInfo) Clone() *RouteInfo
- func (r *RouteInfo) GetChildrenForRef(backendRef ir.ObjectSource) ([]*RouteInfo, error)
- func (r RouteInfo) GetKind() string
- func (r RouteInfo) GetName() string
- func (r RouteInfo) GetNamespace() string
- func (r *RouteInfo) Hostnames() []string
- func (r *RouteInfo) UniqueRouteName(ruleIdx, matchIdx int) string
- type RoutesForGwResult
Constants ¶
const ( HttpRouteTargetField = "http-route-target" TcpRouteTargetField = "tcp-route-target" ReferenceGrantFromField = "ref-grant-from" )
Variables ¶
var ( ErrNoMatchingListenerHostname = fmt.Errorf("no matching listener hostname") ErrNoMatchingParent = fmt.Errorf("no matching parent") ErrNotAllowedByListeners = fmt.Errorf("not allowed by listeners") ErrLocalObjRefMissingKind = fmt.Errorf("localObjRef provided with empty kind") ErrCyclicReference = fmt.Errorf("cyclic reference detected while evaluating delegated routes") ErrUnresolvedReference = fmt.Errorf("unresolved reference") )
Functions ¶
func AllNamespace ¶
func AllNamespace() func(krt.HandlerContext, string) bool
func IndexerByObjType ¶
IndexerByObjType indexes objects based on the provided object type. The following object types are supported:
- HTTPRoute
- TCPRoute
- ReferenceGrant
func IterateIndices ¶
IterateIndices calls the provided function for each indexable object with the appropriate indexer function.
func ProcessBackendError ¶
func ProcessBackendError(err error, reporter reports.ParentRefReporter)
func ReferenceAllowed ¶
func SameNamespace ¶
func SameNamespace(ns string) func(krt.HandlerContext, string) bool
Types ¶
type BackendMap ¶
type BackendMap[T any] struct { // contains filtered or unexported fields }
BackendMap is a generic type used to manage mappings of backends for Gateway API configurations. It's designed to store and manage backend references, like services, and to associate those references with either data (of a generic type T) or errors.
func NewBackendMap ¶
func NewBackendMap[T any]() BackendMap[T]
func (BackendMap[T]) Add ¶
func (bm BackendMap[T]) Add(backendRef ir.ObjectSource, value T)
func (BackendMap[T]) AddError ¶
func (bm BackendMap[T]) AddError(backendRef ir.ObjectSource, err error)
type Error ¶
type Error struct { Reason apiv1.RouteConditionReason E error }
type FromObject ¶
func (FromObject) Namespace ¶
func (f FromObject) Namespace() string
type GatewayQueries ¶
type GatewayQueries interface { GetSecretForRef(kctx krt.HandlerContext, ctx context.Context, fromGk schema.GroupKind, fromns string, secretRef apiv1.SecretObjectReference) (*ir.Secret, error) // GetRoutesForGateway finds the top level xRoutes attached to the provided Gateway GetRoutesForGateway(kctx krt.HandlerContext, ctx context.Context, gw *gwv1.Gateway) (*RoutesForGwResult, error) // GetRouteChain resolves backends and delegated routes for a the provided xRoute object GetRouteChain(kctx krt.HandlerContext, ctx context.Context, route ir.Route, hostnames []string, parentRef gwv1.ParentReference, ) *RouteInfo }
func NewData ¶
func NewData( routes *krtcollections.RoutesIndex, secrets *krtcollections.SecretIndex, namespaces krt.Collection[krtcollections.NamespaceMetadata], opts ...Option, ) GatewayQueries
type GroupKindNs ¶
type GroupKindNs struct {
// contains filtered or unexported fields
}
func NewGroupKindNs ¶
func NewGroupKindNs(gk metav1.GroupKind, ns string) *GroupKindNs
func (*GroupKindNs) Namespace ¶
func (g *GroupKindNs) Namespace() string
type ListenerResult ¶
type Namespaced ¶
type RouteError ¶
type RouteError struct { Route ir.Route ParentRef apiv1.ParentReference Error Error }
type RouteInfo ¶
type RouteInfo struct { // Object is the generic route object which could be HTTPRoute, TCPRoute, etc. Object ir.Route // ParentRef points to the Gateway (and optionally Listener) or HTTPRoute. ParentRef gwv1.ParentReference // ParentRef points to the Gateway (and optionally Listener). ListenerParentRef gwv1.ParentReference // hostnameOverrides can replace the HTTPRoute hostnames with those that intersect // the attached listener's hostname(s). HostnameOverrides []string // Children contains all delegate HTTPRoutes referenced in any rule of this // HTTPRoute, keyed by the backend ref for easy lookup. // This tree structure can have cyclic references. Check them when recursing through the tree. Children BackendMap[[]*RouteInfo] }
RouteInfo contains pre-resolved backends (Services, Upstreams and delegated xRoutes) This allows all querying to happen upfront, and detailed logic for delegation to happen as part of translation.
func (*RouteInfo) GetChildrenForRef ¶
func (r *RouteInfo) GetChildrenForRef(backendRef ir.ObjectSource) ([]*RouteInfo, error)
GetChildrenForRef fetches child routes for a given BackendObjectReference.
func (RouteInfo) GetNamespace ¶
GetNamespace returns the namespace of the route.
func (*RouteInfo) Hostnames ¶
Hostnames returns the hostname overrides if they exist, otherwise it returns the hostnames specified in the HTTPRoute.
func (*RouteInfo) UniqueRouteName ¶
UniqueRouteName returns a unique name for the route based on the route kind, name, namespace, and the given indexes.
type RoutesForGwResult ¶
type RoutesForGwResult struct { // key is listener name ListenerResults map[string]*ListenerResult RouteErrors []*RouteError }
func NewRoutesForGwResult ¶
func NewRoutesForGwResult() *RoutesForGwResult
NewRoutesForGwResult creates and returns a new RoutesForGwResult with initialized fields.