util

package
Version: v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Nov 12, 2021 License: Apache-2.0 Imports: 25 Imported by: 90

Documentation

Overview

Package util implements utilities.

Index

Constants

View Source
const (
	// CharSet defines the alphanumeric set for random string generation.
	CharSet = "0123456789abcdefghijklmnopqrstuvwxyz"
)

Variables

View Source
var (

	// ErrNoCluster is returned when the cluster
	// label could not be found on the object passed in.
	ErrNoCluster = fmt.Errorf("no %q label present", clusterv1.ClusterLabelName)

	// ErrUnstructuredFieldNotFound determines that a field
	// in an unstructured object could not be found.
	ErrUnstructuredFieldNotFound = fmt.Errorf("field not found")
)

Functions

func ClusterToInfrastructureMapFunc

func ClusterToInfrastructureMapFunc(gvk schema.GroupVersionKind) handler.MapFunc

ClusterToInfrastructureMapFunc returns a handler.ToRequestsFunc that watches for Cluster events and returns reconciliation requests for an infrastructure provider object.

func ClusterToObjectsMapper added in v0.3.3

func ClusterToObjectsMapper(c client.Client, ro client.ObjectList, scheme *runtime.Scheme) (handler.MapFunc, error)

ClusterToObjectsMapper returns a mapper function that gets a cluster and lists all objects for the object passed in and returns a list of requests. NB: The objects are required to have `clusterv1.ClusterLabelName` applied.

func EnsureOwnerRef

func EnsureOwnerRef(ownerReferences []metav1.OwnerReference, ref metav1.OwnerReference) []metav1.OwnerReference

EnsureOwnerRef makes sure the slice contains the OwnerReference.

func GetCRDWithContract added in v0.3.0

GetCRDWithContract retrieves a list of CustomResourceDefinitions from using controller-runtime Client, filtering with the `contract` label passed in. Returns the first CRD in the list that matches the GroupVersionKind, otherwise returns an error.

func GetClusterByName

func GetClusterByName(ctx context.Context, c client.Client, namespace, name string) (*clusterv1.Cluster, error)

GetClusterByName finds and return a Cluster object using the specified params.

func GetClusterFromMetadata

func GetClusterFromMetadata(ctx context.Context, c client.Client, obj metav1.ObjectMeta) (*clusterv1.Cluster, error)

GetClusterFromMetadata returns the Cluster object (if present) using the object metadata.

func GetGVKMetadata added in v0.4.3

GetGVKMetadata retrieves a CustomResourceDefinition metadata from the API server using partial object metadata.

This function is greatly more efficient than GetCRDWithContract and should be preferred in most cases.

func GetMachineByName

func GetMachineByName(ctx context.Context, c client.Client, namespace, name string) (*clusterv1.Machine, error)

GetMachineByName finds and return a Machine object using the specified params.

func GetMachineIfExists

func GetMachineIfExists(ctx context.Context, c client.Client, namespace, name string) (*clusterv1.Machine, error)

GetMachineIfExists gets a machine from the API server if it exists.

func GetOwnerCluster

func GetOwnerCluster(ctx context.Context, c client.Client, obj metav1.ObjectMeta) (*clusterv1.Cluster, error)

GetOwnerCluster returns the Cluster object owning the current resource.

func GetOwnerMachine

func GetOwnerMachine(ctx context.Context, c client.Client, obj metav1.ObjectMeta) (*clusterv1.Machine, error)

GetOwnerMachine returns the Machine object owning the current resource.

func HasOwner

func HasOwner(refList []metav1.OwnerReference, apiVersion string, kinds []string) bool

HasOwner checks if any of the references in the passed list match the given group from apiVersion and one of the given kinds.

func HasOwnerRef

func HasOwnerRef(ownerReferences []metav1.OwnerReference, ref metav1.OwnerReference) bool

HasOwnerRef returns true if the OwnerReference is already in the slice.

func IsControlPlaneMachine

func IsControlPlaneMachine(machine *clusterv1.Machine) bool

IsControlPlaneMachine checks machine is a control plane node.

func IsControlledBy added in v0.3.7

func IsControlledBy(obj metav1.Object, owner client.Object) bool

IsControlledBy differs from metav1.IsControlledBy in that it checks the group (but not version), kind, and name vs uid.

func IsExternalManagedControlPlane added in v0.3.10

func IsExternalManagedControlPlane(controlPlane *unstructured.Unstructured) bool

IsExternalManagedControlPlane returns a bool indicating whether the control plane referenced in the passed Unstructured resource is an externally managed control plane such as AKS, EKS, GKE, etc.

func IsNodeReady

func IsNodeReady(node *corev1.Node) bool

IsNodeReady returns true if a node is ready.

func IsOwnedByObject added in v0.3.7

func IsOwnedByObject(obj metav1.Object, target client.Object) bool

IsOwnedByObject returns true if any of the owner references point to the given target.

func IsSupportedVersionSkew added in v0.3.7

func IsSupportedVersionSkew(a, b semver.Version) bool

IsSupportedVersionSkew will return true if a and b are no more than one minor version off from each other.

func LowestNonZeroResult added in v0.3.9

func LowestNonZeroResult(i, j ctrl.Result) ctrl.Result

LowestNonZeroResult compares two reconciliation results and returns the one with lowest requeue time.

func MachineToInfrastructureMapFunc

func MachineToInfrastructureMapFunc(gvk schema.GroupVersionKind) handler.MapFunc

MachineToInfrastructureMapFunc returns a handler.ToRequestsFunc that watches for Machine events and returns reconciliation requests for an infrastructure provider object.

func ObjectKey added in v0.3.0

func ObjectKey(object metav1.Object) client.ObjectKey

ObjectKey returns client.ObjectKey for the object.

func ObjectReferenceToUnstructured added in v0.3.7

func ObjectReferenceToUnstructured(in corev1.ObjectReference) *unstructured.Unstructured

ObjectReferenceToUnstructured converts an object reference to an unstructured object.

func Ordinalize added in v0.3.3

func Ordinalize(n int) string

Ordinalize takes an int and returns the ordinalized version of it. Eg. 1 --> 1st, 103 --> 103rd.

func Poll

func Poll(interval, timeout time.Duration, condition wait.ConditionFunc) error

Poll tries a condition func until it returns true, an error, or the timeout is reached.

func PollImmediate

func PollImmediate(interval, timeout time.Duration, condition wait.ConditionFunc) error

PollImmediate tries a condition func until it returns true, an error, or the timeout is reached.

func RandomString

func RandomString(n int) string

RandomString returns a random alphanumeric string.

func RemoveOwnerRef added in v0.3.7

func RemoveOwnerRef(ownerReferences []metav1.OwnerReference, inputRef metav1.OwnerReference) []metav1.OwnerReference

RemoveOwnerRef returns the slice of owner references after removing the supplied owner ref.

func ReplaceOwnerRef added in v0.3.7

func ReplaceOwnerRef(ownerReferences []metav1.OwnerReference, source metav1.Object, target metav1.OwnerReference) []metav1.OwnerReference

ReplaceOwnerRef re-parents an object from one OwnerReference to another It compares strictly based on UID to avoid reparenting across an intentional deletion: if an object is deleted and re-created with the same name and namespace, the only way to tell there was an in-progress deletion is by comparing the UIDs.

func Retry

func Retry(fn wait.ConditionFunc, initialBackoffSec int) error

Retry retries a given function with exponential backoff.

func UnstructuredUnmarshalField

func UnstructuredUnmarshalField(obj *unstructured.Unstructured, v interface{}, fields ...string) error

UnstructuredUnmarshalField is a wrapper around json and unstructured objects to decode and copy a specific field value into an object.

Types

type KubeAwareAPIVersions added in v0.3.0

type KubeAwareAPIVersions []string

KubeAwareAPIVersions is a sortable slice of kube-like version strings.

Kube-like version strings are starting with a v, followed by a major version, optional "alpha" or "beta" strings followed by a minor version (e.g. v1, v2beta1). Versions will be sorted based on GA/alpha/beta first and then major and minor versions. e.g. v2, v1, v1beta2, v1beta1, v1alpha1.

func (KubeAwareAPIVersions) Len added in v0.3.0

func (k KubeAwareAPIVersions) Len() int

func (KubeAwareAPIVersions) Less added in v0.3.0

func (k KubeAwareAPIVersions) Less(i, j int) bool

func (KubeAwareAPIVersions) Swap added in v0.3.0

func (k KubeAwareAPIVersions) Swap(i, j int)

type MachinesByCreationTimestamp added in v0.3.0

type MachinesByCreationTimestamp []*clusterv1.Machine

MachinesByCreationTimestamp sorts a list of Machine by creation timestamp, using their names as a tie breaker.

func (MachinesByCreationTimestamp) Len added in v0.3.0

func (MachinesByCreationTimestamp) Less added in v0.3.0

func (o MachinesByCreationTimestamp) Less(i, j int) bool

func (MachinesByCreationTimestamp) Swap added in v0.3.0

func (o MachinesByCreationTimestamp) Swap(i, j int)

Source Files

Directories

Path Synopsis
Package annotations implements annotation helper functions.
Package annotations implements annotation helper functions.
Package certs implements cert handling utilities.
Package certs implements cert handling utilities.
Package collections implements collection utilities.
Package collections implements collection utilities.
Package conditions implements condition utilities.
Package conditions implements condition utilities.
Package container implements container utility functionality.
Package container implements container utility functionality.
Package conversion implements conversion utilities.
Package conversion implements conversion utilities.
Package defaulting implements defaulting webook functionality.
Package defaulting implements defaulting webook functionality.
Package failuredomains implements FailureDomain utility functions.
Package failuredomains implements FailureDomain utility functions.
Package kubeconfig implements utilities for working with kubeconfigs.
Package kubeconfig implements utilities for working with kubeconfigs.
Package labels implements label utility functions.
Package labels implements label utility functions.
Package patch implements patch utilities.
Package patch implements patch utilities.
Package predicates implements predicate utilities.
Package predicates implements predicate utilities.
Package record implements recording functionality.
Package record implements recording functionality.
Package resource implements resource utilites.
Package resource implements resource utilites.
Package secret implements utilities for secret handling.
Package secret implements utilities for secret handling.
Package version implements version handling.
Package version implements version handling.
Package yaml implements yaml utility functions.
Package yaml implements yaml utility functions.

Jump to

Keyboard shortcuts

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