util

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Dec 20, 2020 License: Apache-2.0 Imports: 29 Imported by: 73

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 v0.3.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 v0.2.5

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

IsGVKDefined verifuled if a resource is defined and returns it

func IsJSONArray added in v0.3.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 v0.2.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 v0.3.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 v0.2.5

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

ValidateUnstructured validates the content of an unstructred against an openapi schema. the schema is intented 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. By doing so your finalizers will also inherir a set of utility functions To inherit from reconciler just build your finalizer this way:

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

func NewReconcilerBase

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

NewReconcilerBase is a contructionr fucntion to create a new ReconcilerBase. To use ReconsicerBase as the base for you reconciler, replace the standart consturctor generated by the oiperator sdk with this:

func newReconciler(mgr manager.Manager) reconcile.Reconciler {
	return &MyReconciler{
		ReconcilerBase: util.NewReconcilerBase(mgr.GetClient(), mgr.GetScheme(),mgr.GetConfig()),
	}
}

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 v0.2.0

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 v0.2.0

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 v0.2.0

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 v0.2.0

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 v0.2.0

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

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

func (*ReconcilerBase) GetClient

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

GetClient returns the underlying client

func (*ReconcilerBase) GetDiscoveryClient

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

GetDiscoveryClient returns a disocvery 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) 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 v0.2.1

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) 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) 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 preducates 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