kubernetes

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Jul 27, 2025 License: MPL-2.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseKubernetesManager

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

BaseKubernetesManager implements KubernetesManager interface

func NewKubernetesManager

func NewKubernetesManager(injector di.Injector) *BaseKubernetesManager

NewKubernetesManager creates a new instance of BaseKubernetesManager

func (*BaseKubernetesManager) ApplyConfigMap

func (k *BaseKubernetesManager) ApplyConfigMap(name, namespace string, data map[string]string) error

ApplyConfigMap creates or updates a ConfigMap using SSA

func (*BaseKubernetesManager) ApplyGitRepository

func (k *BaseKubernetesManager) ApplyGitRepository(repo *sourcev1.GitRepository) error

ApplyGitRepository creates or updates a GitRepository resource using SSA

func (*BaseKubernetesManager) ApplyKustomization

func (k *BaseKubernetesManager) ApplyKustomization(kustomization kustomizev1.Kustomization) error

ApplyKustomization creates or updates a Kustomization resource using SSA

func (*BaseKubernetesManager) ApplyOCIRepository

func (k *BaseKubernetesManager) ApplyOCIRepository(repo *sourcev1.OCIRepository) error

ApplyOCIRepository creates or updates an OCIRepository resource using SSA

func (*BaseKubernetesManager) CheckGitRepositoryStatus

func (k *BaseKubernetesManager) CheckGitRepositoryStatus() error

CheckGitRepositoryStatus checks the status of all GitRepository and OCIRepository resources

func (*BaseKubernetesManager) CreateNamespace

func (k *BaseKubernetesManager) CreateNamespace(name string) error

CreateNamespace creates a new namespace

func (*BaseKubernetesManager) DeleteKustomization

func (k *BaseKubernetesManager) DeleteKustomization(name, namespace string) error

DeleteKustomization removes a Kustomization resource using background deletion. Background deletion allows the kustomization to enter "Terminating" state while its children are deleted in the background. The method waits for the deletion to complete.

func (*BaseKubernetesManager) DeleteNamespace

func (k *BaseKubernetesManager) DeleteNamespace(name string) error

DeleteNamespace deletes the specified namespace using foreground deletion. Foreground deletion ensures all resources in the namespace are removed before the namespace is deleted. This method waits for the deletion to complete before returning. Returns nil if the namespace is deleted successfully, or an error if deletion fails or times out.

func (*BaseKubernetesManager) GetHelmReleasesForKustomization

func (k *BaseKubernetesManager) GetHelmReleasesForKustomization(name, namespace string) ([]helmv2.HelmRelease, error)

GetHelmReleasesForKustomization gets HelmReleases associated with a Kustomization

func (*BaseKubernetesManager) GetKustomizationStatus

func (k *BaseKubernetesManager) GetKustomizationStatus(names []string) (map[string]bool, error)

GetKustomizationStatus returns a map indicating readiness for each specified kustomization in the default Flux system namespace. If a kustomization is not found, its status is set to false. If any kustomization has a Ready condition with Status False and Reason "ReconciliationFailed", an error is returned with the failure message.

func (*BaseKubernetesManager) GetNodeReadyStatus

func (k *BaseKubernetesManager) GetNodeReadyStatus(ctx context.Context, nodeNames []string) (map[string]bool, error)

GetNodeReadyStatus returns a map of node names to their Ready condition status. Returns a map of node names to Ready status (true if Ready, false if NotReady), or an error if listing fails.

func (*BaseKubernetesManager) Initialize

func (k *BaseKubernetesManager) Initialize() error

Initialize sets up the BaseKubernetesManager by resolving dependencies

func (*BaseKubernetesManager) SuspendHelmRelease

func (k *BaseKubernetesManager) SuspendHelmRelease(name, namespace string) error

SuspendHelmRelease applies a JSON merge patch to set spec.suspend=true on the specified HelmRelease.

func (*BaseKubernetesManager) SuspendKustomization

func (k *BaseKubernetesManager) SuspendKustomization(name, namespace string) error

SuspendKustomization applies a JSON merge patch to set spec.suspend=true on the specified Kustomization.

func (*BaseKubernetesManager) WaitForKubernetesHealthy

func (k *BaseKubernetesManager) WaitForKubernetesHealthy(ctx context.Context, endpoint string, outputFunc func(string), nodeNames ...string) error

WaitForKubernetesHealthy waits for the Kubernetes API to become healthy within the context deadline. If nodeNames are provided, verifies all specified nodes reach Ready state before returning. Returns an error if the API is unreachable or any specified nodes are not Ready within the deadline.

func (*BaseKubernetesManager) WaitForKustomizations

func (k *BaseKubernetesManager) WaitForKustomizations(message string, names ...string) error

WaitForKustomizations waits for kustomizations to be ready

type DynamicKubernetesClient

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

DynamicKubernetesClient implements KubernetesClient using dynamic client

func NewDynamicKubernetesClient

func NewDynamicKubernetesClient() *DynamicKubernetesClient

NewDynamicKubernetesClient creates a new DynamicKubernetesClient

func (*DynamicKubernetesClient) ApplyResource

ApplyResource applies a resource using server-side apply

func (*DynamicKubernetesClient) CheckHealth

func (c *DynamicKubernetesClient) CheckHealth(ctx context.Context, endpoint string) error

CheckHealth verifies Kubernetes API connectivity by listing nodes using the dynamic client. If an endpoint is specified, it overrides the default kubeconfig for this check. Returns an error if the client cannot be initialized or the API is unreachable.

func (*DynamicKubernetesClient) DeleteResource

func (c *DynamicKubernetesClient) DeleteResource(gvr schema.GroupVersionResource, namespace, name string, opts metav1.DeleteOptions) error

DeleteResource deletes a resource

func (*DynamicKubernetesClient) GetNodeReadyStatus

func (c *DynamicKubernetesClient) GetNodeReadyStatus(ctx context.Context, nodeNames []string) (map[string]bool, error)

GetNodeReadyStatus returns a map of node names to their Ready condition status. It checks the Ready condition for each specified node using the dynamic client. If nodeNames is empty, all nodes are checked. Nodes not found are omitted from the result. Returns a map of node names to Ready status (true if Ready, false if NotReady), or an error if listing fails.

func (*DynamicKubernetesClient) GetResource

func (c *DynamicKubernetesClient) GetResource(gvr schema.GroupVersionResource, namespace, name string) (*unstructured.Unstructured, error)

GetResource gets a resource by name and namespace

func (*DynamicKubernetesClient) ListResources

ListResources lists resources in a namespace

func (*DynamicKubernetesClient) PatchResource

func (c *DynamicKubernetesClient) PatchResource(gvr schema.GroupVersionResource, namespace, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions) (*unstructured.Unstructured, error)

PatchResource patches a resource

type KubernetesClient

type KubernetesClient interface {
	// Resource operations
	GetResource(gvr schema.GroupVersionResource, namespace, name string) (*unstructured.Unstructured, error)
	ListResources(gvr schema.GroupVersionResource, namespace string) (*unstructured.UnstructuredList, error)
	ApplyResource(gvr schema.GroupVersionResource, obj *unstructured.Unstructured, opts metav1.ApplyOptions) (*unstructured.Unstructured, error)
	DeleteResource(gvr schema.GroupVersionResource, namespace, name string, opts metav1.DeleteOptions) error
	PatchResource(gvr schema.GroupVersionResource, namespace, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions) (*unstructured.Unstructured, error)
	CheckHealth(ctx context.Context, endpoint string) error
	// Node health operations
	GetNodeReadyStatus(ctx context.Context, nodeNames []string) (map[string]bool, error)
}

KubernetesClient defines methods for Kubernetes resource operations

type KubernetesManager

type KubernetesManager interface {
	Initialize() error
	ApplyKustomization(kustomization kustomizev1.Kustomization) error
	DeleteKustomization(name, namespace string) error
	WaitForKustomizations(message string, names ...string) error
	CreateNamespace(name string) error
	DeleteNamespace(name string) error
	ApplyConfigMap(name, namespace string, data map[string]string) error
	GetHelmReleasesForKustomization(name, namespace string) ([]helmv2.HelmRelease, error)
	SuspendKustomization(name, namespace string) error
	SuspendHelmRelease(name, namespace string) error
	ApplyGitRepository(repo *sourcev1.GitRepository) error
	ApplyOCIRepository(repo *sourcev1.OCIRepository) error
	CheckGitRepositoryStatus() error
	GetKustomizationStatus(names []string) (map[string]bool, error)
	WaitForKubernetesHealthy(ctx context.Context, endpoint string, outputFunc func(string), nodeNames ...string) error
	GetNodeReadyStatus(ctx context.Context, nodeNames []string) (map[string]bool, error)
}

KubernetesManager defines methods for Kubernetes resource management

type MockKubernetesClient

type MockKubernetesClient struct {
	GetResourceFunc        func(gvr schema.GroupVersionResource, namespace, name string) (*unstructured.Unstructured, error)
	ListResourcesFunc      func(gvr schema.GroupVersionResource, namespace string) (*unstructured.UnstructuredList, error)
	ApplyResourceFunc      func(gvr schema.GroupVersionResource, obj *unstructured.Unstructured, opts metav1.ApplyOptions) (*unstructured.Unstructured, error)
	DeleteResourceFunc     func(gvr schema.GroupVersionResource, namespace, name string, opts metav1.DeleteOptions) error
	PatchResourceFunc      func(gvr schema.GroupVersionResource, namespace, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions) (*unstructured.Unstructured, error)
	CheckHealthFunc        func(ctx context.Context, endpoint string) error
	GetNodeReadyStatusFunc func(ctx context.Context, nodeNames []string) (map[string]bool, error)
}

MockKubernetesClient is a mock implementation of KubernetesClient interface for testing

func NewMockKubernetesClient

func NewMockKubernetesClient() *MockKubernetesClient

NewMockKubernetesClient creates a new MockKubernetesClient

func (*MockKubernetesClient) ApplyResource

ApplyResource implements KubernetesClient interface

func (*MockKubernetesClient) CheckHealth

func (m *MockKubernetesClient) CheckHealth(ctx context.Context, endpoint string) error

CheckHealth implements KubernetesClient interface

func (*MockKubernetesClient) DeleteResource

func (m *MockKubernetesClient) DeleteResource(gvr schema.GroupVersionResource, namespace, name string, opts metav1.DeleteOptions) error

DeleteResource implements KubernetesClient interface

func (*MockKubernetesClient) GetNodeReadyStatus

func (m *MockKubernetesClient) GetNodeReadyStatus(ctx context.Context, nodeNames []string) (map[string]bool, error)

GetNodeReadyStatus implements KubernetesClient interface

func (*MockKubernetesClient) GetResource

func (m *MockKubernetesClient) GetResource(gvr schema.GroupVersionResource, namespace, name string) (*unstructured.Unstructured, error)

GetResource implements KubernetesClient interface

func (*MockKubernetesClient) ListResources

ListResources implements KubernetesClient interface

func (*MockKubernetesClient) PatchResource

func (m *MockKubernetesClient) PatchResource(gvr schema.GroupVersionResource, namespace, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions) (*unstructured.Unstructured, error)

PatchResource implements KubernetesClient interface

type MockKubernetesManager

type MockKubernetesManager struct {
	InitializeFunc                      func() error
	ApplyKustomizationFunc              func(kustomization kustomizev1.Kustomization) error
	DeleteKustomizationFunc             func(name, namespace string) error
	WaitForKustomizationsFunc           func(message string, names ...string) error
	GetKustomizationStatusFunc          func(names []string) (map[string]bool, error)
	CreateNamespaceFunc                 func(name string) error
	DeleteNamespaceFunc                 func(name string) error
	ApplyConfigMapFunc                  func(name, namespace string, data map[string]string) error
	GetHelmReleasesForKustomizationFunc func(name, namespace string) ([]helmv2.HelmRelease, error)
	SuspendKustomizationFunc            func(name, namespace string) error
	SuspendHelmReleaseFunc              func(name, namespace string) error
	ApplyGitRepositoryFunc              func(repo *sourcev1.GitRepository) error
	ApplyOCIRepositoryFunc              func(repo *sourcev1.OCIRepository) error
	CheckGitRepositoryStatusFunc        func() error
	WaitForKubernetesHealthyFunc        func(ctx context.Context, endpoint string, outputFunc func(string), nodeNames ...string) error
	GetNodeReadyStatusFunc              func(ctx context.Context, nodeNames []string) (map[string]bool, error)
}

MockKubernetesManager is a mock implementation of KubernetesManager interface for testing

func NewMockKubernetesManager

func NewMockKubernetesManager(injector di.Injector) *MockKubernetesManager

NewMockKubernetesManager creates a new instance of MockKubernetesManager

func (*MockKubernetesManager) ApplyConfigMap

func (m *MockKubernetesManager) ApplyConfigMap(name, namespace string, data map[string]string) error

ApplyConfigMap implements KubernetesManager interface

func (*MockKubernetesManager) ApplyGitRepository

func (m *MockKubernetesManager) ApplyGitRepository(repo *sourcev1.GitRepository) error

ApplyGitRepository implements KubernetesManager interface

func (*MockKubernetesManager) ApplyKustomization

func (m *MockKubernetesManager) ApplyKustomization(kustomization kustomizev1.Kustomization) error

ApplyKustomization implements KubernetesManager interface

func (*MockKubernetesManager) ApplyOCIRepository

func (m *MockKubernetesManager) ApplyOCIRepository(repo *sourcev1.OCIRepository) error

ApplyOCIRepository implements KubernetesManager interface

func (*MockKubernetesManager) CheckGitRepositoryStatus

func (m *MockKubernetesManager) CheckGitRepositoryStatus() error

CheckGitRepositoryStatus checks the status of all GitRepository resources

func (*MockKubernetesManager) CreateNamespace

func (m *MockKubernetesManager) CreateNamespace(name string) error

CreateNamespace implements KubernetesManager interface

func (*MockKubernetesManager) DeleteKustomization

func (m *MockKubernetesManager) DeleteKustomization(name, namespace string) error

DeleteKustomization implements KubernetesManager interface

func (*MockKubernetesManager) DeleteNamespace

func (m *MockKubernetesManager) DeleteNamespace(name string) error

DeleteNamespace implements KubernetesManager interface

func (*MockKubernetesManager) GetHelmReleasesForKustomization

func (m *MockKubernetesManager) GetHelmReleasesForKustomization(name, namespace string) ([]helmv2.HelmRelease, error)

GetHelmReleasesForKustomization implements KubernetesManager interface

func (*MockKubernetesManager) GetKustomizationStatus

func (m *MockKubernetesManager) GetKustomizationStatus(names []string) (map[string]bool, error)

GetKustomizationStatus implements KubernetesManager interface

func (*MockKubernetesManager) GetNodeReadyStatus

func (m *MockKubernetesManager) GetNodeReadyStatus(ctx context.Context, nodeNames []string) (map[string]bool, error)

GetNodeReadyStatus returns a map of node names to their Ready condition status.

func (*MockKubernetesManager) Initialize

func (m *MockKubernetesManager) Initialize() error

Initialize implements KubernetesManager interface

func (*MockKubernetesManager) SuspendHelmRelease

func (m *MockKubernetesManager) SuspendHelmRelease(name, namespace string) error

SuspendHelmRelease implements KubernetesManager interface

func (*MockKubernetesManager) SuspendKustomization

func (m *MockKubernetesManager) SuspendKustomization(name, namespace string) error

SuspendKustomization implements KubernetesManager interface

func (*MockKubernetesManager) WaitForKubernetesHealthy

func (m *MockKubernetesManager) WaitForKubernetesHealthy(ctx context.Context, endpoint string, outputFunc func(string), nodeNames ...string) error

WaitForKubernetesHealthy waits for the Kubernetes API endpoint to be healthy with polling and timeout

func (*MockKubernetesManager) WaitForKustomizations

func (m *MockKubernetesManager) WaitForKustomizations(message string, names ...string) error

WaitForKustomizations implements KubernetesManager interface

type Shims

type Shims struct {
	// Other operations
	RegexpMatchString func(pattern string, s string) (bool, error)
	YamlMarshal       func(v any) ([]byte, error)
	YamlUnmarshal     func(data []byte, v any, opts ...yaml.JSONOpt) error
	K8sYamlUnmarshal  func(data []byte, v any, opts ...yaml.JSONOpt) error
	TimeSleep         func(d time.Duration)
	ToUnstructured    func(obj any) (map[string]any, error)
	FromUnstructured  func(obj map[string]any, target any) error
}

Shims provides testable interfaces for external dependencies

func NewShims

func NewShims() *Shims

NewShims creates a new Shims instance with default implementations

Jump to

Keyboard shortcuts

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