util

package
v1.1.5 Latest Latest
Warning

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

Go to latest
Published: May 12, 2021 License: Apache-2.0 Imports: 35 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddFinalizer

func AddFinalizer(obj client.Object, finalizer string)

AddFinalizer adds the passed finalizer this object

func AdvancedTemplateFuncMap added in v1.1.5

func AdvancedTemplateFuncMap(config *rest.Config) template.FuncMap

AdvancedTemplateFuncMap to add Sprig and additional templating functions

func HasFinalizer

func HasFinalizer(obj client.Object, finalizer string) bool

HasFinalizer returns whether this object has the passed finalizer

func IsBeingDeleted

func IsBeingDeleted(obj client.Object) bool

IsBeingDeleted returns whether this object has been requested to be deleted

func IsGVKDefined added in v1.1.5

func IsGVKDefined(gvk schema.GroupVersionKind, discoveryClient *discovery.DiscoveryClient) (*v1.APIResource, error)

IsGVKDefined verifies if a resource is defined and returns it

func IsJSONArray added in v1.1.5

func IsJSONArray(data []byte) bool

IsJSONArray checks to see if a byte array containing JSON is an array of data

func IsOwner

func IsOwner(owner, owned metav1.Object) bool

func IsUnstructuredDefined added in v1.1.5

func IsUnstructuredDefined(obj *unstructured.Unstructured, discoveryClient *discovery.DiscoveryClient) (*v1.APIResource, error)

IsUnstructuredDefined checks whether the content of a unstructured is defined against the passed DiscoveryClient

func NewLookupFunction added in v1.1.5

func NewLookupFunction(config *rest.Config) lookupFunc

NewLookupFunction get information at runtime from cluster

func ProcessTemplate

func ProcessTemplate(data interface{}, template *template.Template) (*unstructured.Unstructured, error)

ProcessTemplate processes an initialized Go template with a set of data. It expects one API object to be defined in the template

func ProcessTemplateArray

func ProcessTemplateArray(data interface{}, template *template.Template) ([]unstructured.Unstructured, error)

ProcessTemplateArray processes an initialized Go template with a set of data. It expects an arrays of API objects to be defined in the template. Dishomogeneus types are supported

func RemoveFinalizer

func RemoveFinalizer(obj client.Object, finalizer string)

RemoveFinalizer removes the passed finalizer from object

func ValidateUnstructured added in v1.1.5

func ValidateUnstructured(obj *unstructured.Unstructured, validationSchema *validation.SchemaValidation) error

ValidateUnstructured validates the content of an unstructured against an openapi schema. the schema is intended to be retrieved from a running instance of kubernetes, but other usages are possible.

Types

type ReconcilerBase

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

ReconcilerBase is a base struct from which all reconcilers can be derived from. By doing so your reconcilers will also inherit a set of utility functions To inherit from reconciler just build your finalizer this way:

type MyReconciler struct {
  util.ReconcilerBase
  ... other optional fields ...
}

func NewFromManager added in v1.1.5

func NewFromManager(mgr manager.Manager, recorder record.EventRecorder) ReconcilerBase

NewReconcilerBase is a contruction function to create a new ReconcilerBase.

func NewReconcilerBase

func NewReconcilerBase(client client.Client, scheme *runtime.Scheme, restConfig *rest.Config, recorder record.EventRecorder, apireader client.Reader) ReconcilerBase

func (*ReconcilerBase) CreateIfNotExistTemplatedResources

func (r *ReconcilerBase) CreateIfNotExistTemplatedResources(context context.Context, owner client.Object, namespace string, data interface{}, template *template.Template) error

CreateIfNotExistTemplatedResources processes an initialized template expecting an array of objects as a result and then processes them with the CreateResourceIfNotExists function

func (*ReconcilerBase) CreateOrUpdateResource

func (r *ReconcilerBase) CreateOrUpdateResource(context context.Context, owner client.Object, namespace string, obj client.Object) error

CreateOrUpdateResource creates a resource if it doesn't exist, and updates (overwrites it), if it exist if owner is not nil, the owner field os set if namespace is not "", the namespace field of the object is overwritten with the passed value

func (*ReconcilerBase) CreateOrUpdateResources

func (r *ReconcilerBase) CreateOrUpdateResources(context context.Context, owner client.Object, namespace string, objs []client.Object) error

CreateOrUpdateResources operates as CreateOrUpdate, but on an array of resources

func (*ReconcilerBase) CreateOrUpdateTemplatedResources

func (r *ReconcilerBase) CreateOrUpdateTemplatedResources(context context.Context, owner client.Object, namespace string, data interface{}, template *template.Template) error

CreateOrUpdateTemplatedResources processes an initialized template expecting an array of objects as a result and the processes them with the CreateOrUpdate function

func (*ReconcilerBase) CreateOrUpdateUnstructuredResources added in v1.1.5

func (r *ReconcilerBase) CreateOrUpdateUnstructuredResources(context context.Context, owner client.Object, namespace string, objs []unstructured.Unstructured) error

CreateOrUpdateUnstructuredResources operates as CreateOrUpdate, but on an array of unstructured.Unstructured

func (*ReconcilerBase) CreateResourceIfNotExists

func (r *ReconcilerBase) CreateResourceIfNotExists(context context.Context, owner client.Object, namespace string, obj client.Object) error

CreateResourceIfNotExists create a resource if it doesn't already exists. If the resource exists it is left untouched and the functin does not fails if owner is not nil, the owner field os set if namespace is not "", the namespace field of the object is overwritten with the passed value

func (*ReconcilerBase) CreateResourcesIfNotExist

func (r *ReconcilerBase) CreateResourcesIfNotExist(context context.Context, owner client.Object, namespace string, objs []client.Object) error

CreateResourcesIfNotExist operates as CreateResourceIfNotExists, but on an array of resources

func (*ReconcilerBase) CreateUnstructuredResourcesIfNotExist added in v1.1.5

func (r *ReconcilerBase) CreateUnstructuredResourcesIfNotExist(context context.Context, owner client.Object, namespace string, objs []unstructured.Unstructured) error

CreateUnstructuredResourcesIfNotExist operates as CreateResourceIfNotExists, but on an array of unstructured.Unstructured

func (*ReconcilerBase) DeleteResourceIfExists added in v1.1.5

func (r *ReconcilerBase) DeleteResourceIfExists(context context.Context, obj client.Object) error

DeleteResourceIfExists deletes an existing resource. It doesn't fail if the resource does not exist

func (*ReconcilerBase) DeleteResourcesIfExist added in v1.1.5

func (r *ReconcilerBase) DeleteResourcesIfExist(context context.Context, objs []client.Object) error

DeleteResourcesIfExist operates like DeleteResources, but on an arrays of resources

func (*ReconcilerBase) DeleteTemplatedResources

func (r *ReconcilerBase) DeleteTemplatedResources(context context.Context, data interface{}, template *template.Template) error

DeleteTemplatedResources processes an initialized template expecting an array of objects as a result and then processes them with the Delete function

func (*ReconcilerBase) DeleteUnstructuredResources added in v1.1.5

func (r *ReconcilerBase) DeleteUnstructuredResources(context context.Context, objs []unstructured.Unstructured) error

DeleteUnstructuredResources operates like DeleteResources, but on an arrays of unstructured.Unstructured

func (*ReconcilerBase) GetAPIReader added in v1.1.5

func (r *ReconcilerBase) GetAPIReader() client.Reader

GetAPIReader returns a non cached reader

func (*ReconcilerBase) GetClient

func (r *ReconcilerBase) GetClient() client.Client

GetClient returns the underlying client

func (*ReconcilerBase) GetDirectClient added in v1.1.5

func (r *ReconcilerBase) GetDirectClient() (client.Client, error)

GetDirectClient returns a non cached client

func (*ReconcilerBase) GetDirectClientWithSchemeBuilders added in v1.1.5

func (r *ReconcilerBase) GetDirectClientWithSchemeBuilders(addToSchemes ...func(s *runtime.Scheme) error) (client.Client, error)

GetDirectClientWithSchemeBuilders returns a non cached client initialized with the scheme.buidlers passed as parameters

func (*ReconcilerBase) GetDiscoveryClient

func (r *ReconcilerBase) GetDiscoveryClient() (*discovery.DiscoveryClient, error)

GetDiscoveryClient returns a discovery client for the current reconciler

func (*ReconcilerBase) GetDynamicClientOnAPIResource

func (r *ReconcilerBase) GetDynamicClientOnAPIResource(resource metav1.APIResource) (dynamic.NamespaceableResourceInterface, error)

GetDynamicClientOnAPIResource returns a dynamic client on an APIResource. This client can be further namespaced.

func (*ReconcilerBase) GetDynamicClientOnUnstructured

func (r *ReconcilerBase) GetDynamicClientOnUnstructured(obj unstructured.Unstructured) (dynamic.ResourceInterface, error)

GetDynamicClientOnUnstructured returns a dynamic client on an Unstructured type. This client can be further namespaced. TODO consider refactoring using apimachinery.RESTClientForGVK in controller-runtime

func (*ReconcilerBase) GetOperatorNamespace added in v1.1.5

func (r *ReconcilerBase) GetOperatorNamespace() (string, error)

GetOperatorNamespace tries to infer the operator namespace. I first looks for the /var/run/secrets/kubernetes.io/serviceaccount/namespace file. Then it looks for a NAMESPACE environment variable (useful when running in local mode).

func (*ReconcilerBase) GetRecorder

func (r *ReconcilerBase) GetRecorder() record.EventRecorder

GetRecorder returns the underlying recorder

func (*ReconcilerBase) GetRestConfig

func (r *ReconcilerBase) GetRestConfig() *rest.Config

GetRestConfig returns the undelying rest config

func (*ReconcilerBase) GetScheme

func (r *ReconcilerBase) GetScheme() *runtime.Scheme

GetScheme returns the scheme

func (*ReconcilerBase) IsAPIResourceAvailable added in v1.1.5

func (r *ReconcilerBase) IsAPIResourceAvailable(GVK schema.GroupVersionKind) (bool, error)

IsAPIResourceAvailable checks of a give GroupVersionKind is available in the running apiserver

func (*ReconcilerBase) IsInitialized

func (r *ReconcilerBase) IsInitialized(obj metav1.Object) bool

IsInitialized determines if a CR instance is initialized. this implementation returns always true, should be overridden

func (*ReconcilerBase) IsValid

func (r *ReconcilerBase) IsValid(obj metav1.Object) (bool, error)

IsValid determines if a CR instance is valid. this implementation returns always true, should be overridden

func (*ReconcilerBase) ManageError

func (r *ReconcilerBase) ManageError(context context.Context, obj client.Object, issue error) (reconcile.Result, error)

ManageError will take care of the following: 1. generate a warning event attached to the passed CR 2. set the status of the passed CR to a error condition if the object implements the apis.ConditionsStatusAware interface 3. return a reconcile status with the passed error

func (*ReconcilerBase) ManageErrorWithRequeue added in v1.1.5

func (r *ReconcilerBase) ManageErrorWithRequeue(context context.Context, obj client.Object, issue error, requeueAfter time.Duration) (reconcile.Result, error)

ManageErrorWithRequeue will take care of the following: 1. generate a warning event attached to the passed CR 2. set the status of the passed CR to a error condition if the object implements the apis.ConditionsStatusAware interface 3. return a reconcile status with with the passed requeueAfter and error

func (*ReconcilerBase) ManageOutcomeWithRequeue added in v1.1.5

func (r *ReconcilerBase) ManageOutcomeWithRequeue(context context.Context, obj client.Object, issue error, requeueAfter time.Duration) (reconcile.Result, error)

ManageOutcomeWithRequeue is a convenience function to call either ManageErrorWithRequeue if issue is non-nil, else ManageSuccessWithRequeue

func (*ReconcilerBase) ManageSuccess

func (r *ReconcilerBase) ManageSuccess(context context.Context, obj client.Object) (reconcile.Result, error)

ManageSuccess will update the status of the CR and return a successful reconcile result

func (*ReconcilerBase) ManageSuccessWithRequeue added in v1.1.5

func (r *ReconcilerBase) ManageSuccessWithRequeue(context context.Context, obj client.Object, requeueAfter time.Duration) (reconcile.Result, error)

ManageSuccessWithRequeue will update the status of the CR and return a successful reconcile result with requeueAfter set

func (*ReconcilerBase) Reconcile

func (r *ReconcilerBase) Reconcile(request reconcile.Request) (reconcile.Result, error)

Reconcile is a stub function to have ReconsicerBase match the Reconciler interface. You must redefine this function

type ResourceGenerationOrFinalizerChangedPredicate

type ResourceGenerationOrFinalizerChangedPredicate struct {
	predicate.Funcs
}

ResourceGenerationOrFinalizerChangedPredicate this predicate will fire an update event when the spec of a resource is changed (controller by ResourceGeneration), or when the finalizers are changed

func (ResourceGenerationOrFinalizerChangedPredicate) Update

Update implements default UpdateEvent filter for validating resource version change

Jump to

Keyboard shortcuts

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