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 ¶
- func MustRegister(registry prometheus.Registerer)
- func NewCombinedResolver(clientConfig *rest.Config, httpClient *http.Client) (resolver.SchemaResolver, error)
- func NewCombinedResolverFromCRDs(crdResolver *CRDSchemaResolver) resolver.SchemaResolver
- func NewCombinedResolverFromSchemas(schemaMapResolver *SchemaMapResolver) resolver.SchemaResolver
- type CRDSchemaResolver
- type SchemaMapResolver
- type TTLCachedSchemaResolver
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.