resolver

package
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 13, 2026 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Overview

Package resolver provides schema resolution strategies for function-kro.

This file contains function-kro additions that are not present in upstream KRO. These provide combined resolvers that pair Crossplane-provided schemas (or CRD-extracted schemas) with a core resolver for built-in Kubernetes types.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MustRegister

func MustRegister(registry prometheus.Registerer)

MustRegister registers the metrics with the given Prometheus registry

func NewCombinedResolver

func NewCombinedResolver(clientConfig *rest.Config, httpClient *http.Client) (resolver.SchemaResolver, error)

NewCombinedResolver creates a new schema resolver that can resolve both core and client types.

func NewCombinedResolverFromCRDs

func NewCombinedResolverFromCRDs(crdResolver *CRDSchemaResolver) resolver.SchemaResolver

NewCombinedResolverFromCRDs creates a schema resolver that combines a CRD schema resolver with a core resolver.

func NewCombinedResolverFromSchemas

func NewCombinedResolverFromSchemas(schemaMapResolver *SchemaMapResolver) resolver.SchemaResolver

NewCombinedResolverFromSchemas creates a schema resolver that combines a schema map resolver (for Crossplane-provided schemas) with a core resolver (for built-in Kubernetes types).

Types

type CRDSchemaResolver

type CRDSchemaResolver struct {
	// contains filtered or unexported fields
}

CRDSchemaResolver is a resolver.SchemaResolver backed by a set of CRDs. It extracts OpenAPI schemas from CRD validation schemas. The map is read-only after construction.

func NewCRDSchemaResolver

func NewCRDSchemaResolver(crds []*extv1.CustomResourceDefinition) (*CRDSchemaResolver, error)

NewCRDSchemaResolver creates a new CRDSchemaResolver from a set of CRDs. It extracts the OpenAPI schema from each CRD's validation schema and injects the ObjectMeta schema for the metadata field.

func (*CRDSchemaResolver) ResolveSchema

func (r *CRDSchemaResolver) ResolveSchema(gvk schema.GroupVersionKind) (*spec.Schema, error)

ResolveSchema returns the OpenAPI schema for the given GVK.

type SchemaMapResolver

type SchemaMapResolver struct {
	// contains filtered or unexported fields
}

SchemaMapResolver is a resolver.SchemaResolver backed by a map of GVK to OpenAPI schemas. This is used when schemas are provided directly (e.g., from Crossplane's required_schemas) rather than extracted from CRDs. The map is read-only after construction.

func NewSchemaMapResolver

func NewSchemaMapResolver(schemas map[schema.GroupVersionKind]*spec.Schema) *SchemaMapResolver

NewSchemaMapResolver creates a new SchemaMapResolver from a map of GVK to spec.Schema.

func (*SchemaMapResolver) ResolveSchema

func (r *SchemaMapResolver) ResolveSchema(gvk schema.GroupVersionKind) (*spec.Schema, error)

ResolveSchema returns the OpenAPI schema for the given GVK.

type TTLCachedSchemaResolver

type TTLCachedSchemaResolver struct {
	// contains filtered or unexported fields
}

TTLCachedSchemaResolver caches schemas with LRU eviction and time-based expiration

func NewTTLCachedSchemaResolver

func NewTTLCachedSchemaResolver(
	delegate resolver.SchemaResolver,
	maxSize int,
	ttl time.Duration,
) *TTLCachedSchemaResolver

NewTTLCachedSchemaResolver creates a new TTLCachedSchemaResolver with LRU+TTL caching

func (*TTLCachedSchemaResolver) ResolveSchema

func (c *TTLCachedSchemaResolver) ResolveSchema(gvk schema.GroupVersionKind) (*spec.Schema, error)

ResolveSchema resolves the schema for the given GroupVersionKind, using the cache if possible. If multiple concurrent requests for the same GVK are made, they will be deduplicated.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL