kubernetes

package
v0.2.1-0...-4d7afa4 Latest Latest
Warning

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

Go to latest
Published: Oct 3, 2025 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Overview

Package kubernetes contains interfaces and implementations for clients that talk directly to Kubernetes

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ApplyClient

type ApplyClient interface {
	// DryRunApply performs a dry-run server-side apply
	DryRunApply(ctx context.Context, obj *un.Unstructured) (*un.Unstructured, error)
}

ApplyClient handles server-side apply operations.

func NewApplyClient

func NewApplyClient(clients *core.Clients, converter TypeConverter, logger logging.Logger) ApplyClient

NewApplyClient creates a new DefaultApplyClient.

type Clients

type Clients struct {
	Apply    ApplyClient
	Resource ResourceClient
	Schema   SchemaClient
	Type     TypeConverter
}

Clients is an aggregation of all of our Kubernetes clients, used to pass them as a bundle, typically for initialization where the consumer can select which ones they need.

type DefaultApplyClient

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

DefaultApplyClient implements ApplyClient.

func (*DefaultApplyClient) DryRunApply

func (c *DefaultApplyClient) DryRunApply(ctx context.Context, obj *un.Unstructured) (*un.Unstructured, error)

DryRunApply performs a dry-run server-side apply.

type DefaultResourceClient

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

DefaultResourceClient implements the ResourceClient interface.

func (*DefaultResourceClient) GetGVKsForGroupKind

func (c *DefaultResourceClient) GetGVKsForGroupKind(_ context.Context, group, kind string) ([]schema.GroupVersionKind, error)

GetGVKsForGroupKind returns all available GroupVersionKinds for a given group and kind.

func (*DefaultResourceClient) GetResource

func (c *DefaultResourceClient) GetResource(ctx context.Context, gvk schema.GroupVersionKind, namespace, name string) (*un.Unstructured, error)

GetResource retrieves a resource from the cluster based on its GVK, namespace, and name.

func (*DefaultResourceClient) GetResourcesByLabel

func (c *DefaultResourceClient) GetResourcesByLabel(ctx context.Context, gvk schema.GroupVersionKind, namespace string, sel metav1.LabelSelector) ([]*un.Unstructured, error)

GetResourcesByLabel returns resources matching labels in the given namespace.

func (*DefaultResourceClient) IsNamespacedResource

func (c *DefaultResourceClient) IsNamespacedResource(_ context.Context, gvk schema.GroupVersionKind) (bool, error)

IsNamespacedResource determines if a given GVK represents a namespaced resource by querying the cluster's discovery API.

func (*DefaultResourceClient) ListResources

func (c *DefaultResourceClient) ListResources(ctx context.Context, gvk schema.GroupVersionKind, namespace string) ([]*un.Unstructured, error)

ListResources lists resources matching the given GVK and namespace.

type DefaultSchemaClient

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

DefaultSchemaClient implements SchemaClient.

func (*DefaultSchemaClient) GetAllCRDs

GetAllCRDs returns all cached CRDs.

func (*DefaultSchemaClient) GetCRD

GetCRD gets the CustomResourceDefinition for a given GVK.

func (*DefaultSchemaClient) GetCRDByName

GetCRDByName gets a CRD by its name from the cache. If the name is not found directly, it will also check if it's an XRD name that maps to a different CRD name (e.g., claim XRDs).

func (*DefaultSchemaClient) IsCRDRequired

func (c *DefaultSchemaClient) IsCRDRequired(ctx context.Context, gvk schema.GroupVersionKind) bool

IsCRDRequired checks if a GVK requires a CRD.

func (*DefaultSchemaClient) LoadCRDsFromXRDs

func (c *DefaultSchemaClient) LoadCRDsFromXRDs(ctx context.Context, xrds []*un.Unstructured) error

LoadCRDsFromXRDs fetches corresponding CRDs from the cluster for the given XRDs and caches them. Instead of converting XRDs to CRDs, this method fetches the actual CRDs that should already exist in the cluster since the Crossplane control plane manages both XRDs and their corresponding CRDs.

type DefaultTypeConverter

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

DefaultTypeConverter implements TypeConverter.

func (*DefaultTypeConverter) GVKToGVR

GVKToGVR converts a GroupVersionKind to a GroupVersionResource.

func (*DefaultTypeConverter) GetResourceNameForGVK

func (c *DefaultTypeConverter) GetResourceNameForGVK(_ context.Context, gvk schema.GroupVersionKind) (string, error)

GetResourceNameForGVK returns the resource name for a given GVK.

type ResourceClient

type ResourceClient interface {
	// GetResource retrieves a resource by its GVK, namespace, and name
	GetResource(ctx context.Context, gvk schema.GroupVersionKind, namespace, name string) (*un.Unstructured, error)

	// ListResources lists resources matching the given GVK and namespace
	ListResources(ctx context.Context, gvk schema.GroupVersionKind, namespace string) ([]*un.Unstructured, error)

	// GetResourcesByLabel returns resources matching labels in the given namespace
	GetResourcesByLabel(ctx context.Context, gvk schema.GroupVersionKind, namespace string, sel metav1.LabelSelector) ([]*un.Unstructured, error)

	// GetGVKsForGroupKind retrieves all GroupVersionKinds for a given group and kind
	GetGVKsForGroupKind(ctx context.Context, group, kind string) ([]schema.GroupVersionKind, error)

	// IsNamespacedResource determines if a given GVK represents a namespaced resource
	IsNamespacedResource(ctx context.Context, gvk schema.GroupVersionKind) (bool, error)
}

ResourceClient handles basic CRUD operations for Kubernetes resources.

func NewResourceClient

func NewResourceClient(clients *core.Clients, converter TypeConverter, logger logging.Logger) ResourceClient

NewResourceClient creates a new DefaultResourceClient instance.

type SchemaClient

type SchemaClient interface {
	// GetCRD gets the CustomResourceDefinition for a given GVK
	GetCRD(ctx context.Context, gvk schema.GroupVersionKind) (*extv1.CustomResourceDefinition, error)

	// GetCRDByName gets the CustomResourceDefinition by its name
	GetCRDByName(name string) (*extv1.CustomResourceDefinition, error)

	// IsCRDRequired checks if a GVK requires a CRD
	IsCRDRequired(ctx context.Context, gvk schema.GroupVersionKind) bool

	// LoadCRDsFromXRDs converts XRDs to CRDs and caches them
	LoadCRDsFromXRDs(ctx context.Context, xrds []*un.Unstructured) error

	// GetAllCRDs returns all cached CRDs (needed for external validation library)
	GetAllCRDs() []*extv1.CustomResourceDefinition
}

SchemaClient handles operations related to Kubernetes schemas and CRDs.

func NewSchemaClient

func NewSchemaClient(clients *core.Clients, typeConverter TypeConverter, logger logging.Logger) SchemaClient

NewSchemaClient creates a new DefaultSchemaClient.

type TypeConverter

type TypeConverter interface {
	// GVKToGVR converts a GroupVersionKind to a GroupVersionResource
	GVKToGVR(ctx context.Context, gvk schema.GroupVersionKind) (schema.GroupVersionResource, error)

	// GetResourceNameForGVK returns the resource name for a given GVK
	GetResourceNameForGVK(ctx context.Context, gvk schema.GroupVersionKind) (string, error)
}

TypeConverter provides conversion between Kubernetes types.

func NewTypeConverter

func NewTypeConverter(clients *core.Clients, logger logging.Logger) TypeConverter

NewTypeConverter creates a new DefaultTypeConverter.

Jump to

Keyboard shortcuts

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