util

package
v0.3.3 Latest Latest
Warning

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

Go to latest
Published: Jul 22, 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 apis.Resource, finalizer string)

AddFinalizer adds the passed finalizer this object

func HasFinalizer

func HasFinalizer(obj apis.Resource, finalizer string) bool

HasFinalizer returns whether this object has the passed finalizer

func IsBeingDeleted

func IsBeingDeleted(obj apis.Resource) 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 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 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 apis.Resource, 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(owner apis.Resource, 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(owner apis.Resource, namespace string, obj apis.Resource) 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(owner apis.Resource, namespace string, objs []apis.Resource) error

CreateOrUpdateResources operates as CreateOrUpdate, but on an array of resources

func (*ReconcilerBase) CreateOrUpdateTemplatedResources

func (r *ReconcilerBase) CreateOrUpdateTemplatedResources(owner apis.Resource, 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(owner apis.Resource, namespace string, objs []unstructured.Unstructured) error

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

func (*ReconcilerBase) CreateResourceIfNotExists

func (r *ReconcilerBase) CreateResourceIfNotExists(owner apis.Resource, namespace string, obj apis.Resource) 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(owner apis.Resource, namespace string, objs []apis.Resource) error

CreateResourcesIfNotExist operates as CreateResourceIfNotExists, but on an array of resources

func (*ReconcilerBase) CreateUnstructuredResourcesIfNotExist added in v0.2.0

func (r *ReconcilerBase) CreateUnstructuredResourcesIfNotExist(owner apis.Resource, 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(obj apis.Resource) 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(objs []apis.Resource) error

DeleteResourcesIfExist operates like DeleteResources, but on an arrays of resources

func (*ReconcilerBase) DeleteTemplatedResources

func (r *ReconcilerBase) DeleteTemplatedResources(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(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(obj apis.Resource, issue error) (reconcile.Result, error)

ManageError will take care of the following: 1. generate a warning event attched to the passed object 2. set the status of the passed 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(obj apis.Resource) (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