kubernetes

package
v1.38.0 Latest Latest
Warning

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

Go to latest
Published: May 17, 2023 License: Apache-2.0 Imports: 19 Imported by: 1

Documentation

Overview

Package kubernetes encapsulates all calls to the Kubernetes API into meaningful functions for use by the CLI and controllers

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type EventInterface

type EventInterface interface {
	// Retrieve all events from a namespace
	GetEvents(namespace string) (*v1beta1.EventList, error)
}

EventInterface has functions that interacts with pod object in the Kubernetes cluster

func Event

func Event() EventInterface

Event will fetch the inner API for Kubernetes event resource with a default client

func EventC

func EventC(c *client.Client) EventInterface

EventC will use a defined client to fetch the Kubernetes event resources

type NamespaceInterface

type NamespaceInterface interface {
	Fetch(name string) (*corev1.Namespace, error)
	Create(name string) (*corev1.Namespace, error)
	CreateIfNotExists(name string) (*corev1.Namespace, error)
}

NamespaceInterface has functions that interacts with namespace object in the Kubernetes cluster

func Namespace

func Namespace() NamespaceInterface

Namespace will fetch the inner Kubernetes API with a default client

func NamespaceC

func NamespaceC(c *client.Client) NamespaceInterface

NamespaceC will use a defined client to fetch the Kubernetes API

type PodInterface

type PodInterface interface {
	// Immediately return pod log
	GetLogs(namespace, podName, containerName string) (string, error)
	// Wait until pod is terminated and then return pod log
	GetLogsWithFollow(namespace, podName, containerName string) (string, error)
}

PodInterface has functions that interacts with pod object in the Kubernetes cluster

func Pod

func Pod() PodInterface

Pod will fetch the inner API for Kubernetes pod resource with a default client

func PodC

func PodC(c *client.Client) PodInterface

PodC will use a defined client to fetch the Kubernetes pod resources

type ResourceInterface

type ResourceInterface interface {
	ResourceReader
	ResourceWriter
	// CreateIfNotExists will fetch for the object resource in the Kubernetes cluster, if not exists, will create it.
	CreateIfNotExists(resource client.Object) (err error)
	// CreateIfNotExistsForOwner sets the controller owner to the given resource and creates if it not exists.
	// If the given resource exists, won't update the object with the given owner.
	CreateIfNotExistsForOwner(resource client.Object, owner metav1.Object, scheme *runtime.Scheme) (err error)
	// CreateForOwner sets the controller owner to the given resource and creates the resource.
	CreateForOwner(resource client.Object, owner metav1.Object, scheme *runtime.Scheme) error
	// CreateFromYamlContent creates Kubernetes resources from a yaml string content
	CreateFromYamlContent(yamlContent, namespace string, resourceRef client.Object, beforeCreate func(object interface{})) error
}

ResourceInterface has functions that interacts with any resource object in the Kubernetes cluster

func Resource

func Resource() ResourceInterface

Resource will fetch the inner API for any Kubernetes resource with a default client

func ResourceC

func ResourceC(c *client.Client) ResourceInterface

ResourceC will use a defined client to fetch the Kubernetes API

type ResourceReader

type ResourceReader interface {
	// FetchWithKey fetches and binds a resource from the Kubernetes cluster with the defined key. If not exists, returns false.
	FetchWithKey(key types.NamespacedName, resource client.Object) (exists bool, err error)
	// Fetch fetches and binds a resource with given name and namespace from the Kubernetes cluster. If not exists, returns false.
	Fetch(resource client.Object) (exists bool, err error)
	// ListWithNamespace fetches and binds a list resource from the Kubernetes cluster with the defined namespace.
	ListWithNamespace(namespace string, list client.ObjectList) error
	// ListWithNamespaceAndLabel same as ListWithNamespace, but also limit the query scope by the given labels
	ListWithNamespaceAndLabel(namespace string, list client.ObjectList, labels map[string]string) error
	// ListAll returns a map of Kubernetes resources organized by type, based on provided List objects
	ListAll(objectTypes []client.ObjectList, namespace string, ownerObject metav1.Object) (map[reflect.Type][]client.Object, error)
}

ResourceReader interface to read kubernetes object

func ResourceReaderC

func ResourceReaderC(cli *kogitocli.Client) ResourceReader

ResourceReaderC provide ResourceReader reference

type ResourceWriter

type ResourceWriter interface {
	// Create creates a new Kubernetes object in the cluster.
	// Note that no checks will be performed in the cluster. If you're not sure, use CreateIfNotExists.
	Create(resource client.Object) error
	// Delete delete the given object
	Delete(resource client.Object) error
	// Update the given object
	Update(resource client.Object) error
	// UpdateStatus update the given object status
	UpdateStatus(resource client.Object) error
	// CreateResources create provided objects
	CreateResources(resources []client.Object) (bool, error)
	// UpdateResources update provided objects
	UpdateResources(existing []client.Object, resources []client.Object) (bool, error)
	// DeleteResources delete provided objects
	DeleteResources(resources []client.Object) (bool, error)
}

ResourceWriter interface to write kubernetes object

func ResourceWriterC

func ResourceWriterC(cli *kogitocli.Client) ResourceWriter

ResourceWriterC provide ResourceWrite reference

Jump to

Keyboard shortcuts

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