kubernetes

package
v0.0.0-...-c21c255 Latest Latest
Warning

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

Go to latest
Published: Mar 27, 2024 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Overview

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

Index

Constants

View Source
const (
	// Name is the name of the Kogito Operator deployed in a namespace
	KogitoOperatorName = "kogito-operator"
)

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