Documentation
¶
Overview ¶
Simple implementation of a KubeClient that caches reads and falls back to make direct API calls on failure. Write calls are not cached.
Index ¶
- func KubeClientConfig(host string, auth Auth) (*restclient.Config, error)
- func MaybeUpdatePhaseVersion(phaseInfo *pluginsCore.PhaseInfo, pluginState *PluginState)
- func MaybeUpdatePhaseVersionFromPluginContext(phaseInfo *pluginsCore.PhaseInfo, pluginContext *PluginContext) error
- func NewDefaultKubeClient(config *rest.Config) (core.KubeClient, error)
- func NewKubeClient(config *rest.Config, options Options) (core.KubeClient, error)
- type AbortBehavior
- func AbortBehaviorDelete(resource client.Object) AbortBehavior
- func AbortBehaviorDeleteDefaultResource() AbortBehavior
- func AbortBehaviorPatch(patchOperation PatchResourceOperation, deleteOnErr bool, ...) AbortBehavior
- func AbortBehaviorPatchDefaultResource(patchOperation PatchResourceOperation, deleteOnErr bool) AbortBehavior
- func AbortBehaviorUpdate(updateOperation UpdateResourceOperation, deleteOnErr bool, ...) AbortBehavior
- func AbortBehaviorUpdateDefaultResource(updateOperation UpdateResourceOperation, deleteOnErr bool) AbortBehavior
- type Auth
- type ClusterConfig
- type GarbageCollectable
- type Options
- type PatchResourceOperation
- type Plugin
- type PluginAbortOverride
- type PluginContext
- type PluginEntry
- type PluginProperties
- type PluginState
- type UpdateResourceOperation
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func KubeClientConfig ¶
func KubeClientConfig(host string, auth Auth) (*restclient.Config, error)
KubeClientConfig ...
func MaybeUpdatePhaseVersion ¶
func MaybeUpdatePhaseVersion(phaseInfo *pluginsCore.PhaseInfo, pluginState *PluginState)
func MaybeUpdatePhaseVersionFromPluginContext ¶
func MaybeUpdatePhaseVersionFromPluginContext(phaseInfo *pluginsCore.PhaseInfo, pluginContext *PluginContext) error
func NewDefaultKubeClient ¶
func NewDefaultKubeClient(config *rest.Config) (core.KubeClient, error)
NewDefaultKubeClient creates a new KubeClient with default options set. This client caches reads and falls back to make API calls on failure. Write calls are not cached.
func NewKubeClient ¶
NewKubeClient creates a new KubeClient that caches reads and falls back to make API calls on failure. Write calls are not cached.
Types ¶
type AbortBehavior ¶
type AbortBehavior struct {
// Optional override to the default k8s Resource being acted on.
Resource client.Object
DeleteResource bool
Update *UpdateResourceOperation
Patch *PatchResourceOperation
// Determines whether to delete the Resource if the specified operations return an error
DeleteOnErr bool
}
Defines the overridden OnAbort behavior. The resource (by default, the underlying resource, although this can be overridden) can be either patched, updated, or deleted.
func AbortBehaviorDelete ¶
func AbortBehaviorDelete(resource client.Object) AbortBehavior
AbortBehavior that deletes the specified resource
func AbortBehaviorDeleteDefaultResource ¶
func AbortBehaviorDeleteDefaultResource() AbortBehavior
AbortBehavior that deletes the default resource
func AbortBehaviorPatch ¶
func AbortBehaviorPatch(patchOperation PatchResourceOperation, deleteOnErr bool, resource client.Object) AbortBehavior
AbortBehavior that patches the specified resource
func AbortBehaviorPatchDefaultResource ¶
func AbortBehaviorPatchDefaultResource(patchOperation PatchResourceOperation, deleteOnErr bool) AbortBehavior
AbortBehavior that patches the default resource
func AbortBehaviorUpdate ¶
func AbortBehaviorUpdate(updateOperation UpdateResourceOperation, deleteOnErr bool, resource client.Object) AbortBehavior
AbortBehavior that updates the specified resource
func AbortBehaviorUpdateDefaultResource ¶
func AbortBehaviorUpdateDefaultResource(updateOperation UpdateResourceOperation, deleteOnErr bool) AbortBehavior
AbortBehavior that updates the default resource
type Auth ¶
type ClusterConfig ¶
type ClusterConfig struct {
Name string `json:"name" pflag:",Friendly name of the remote cluster"`
Endpoint string `json:"endpoint" pflag:", Remote K8s cluster endpoint"`
Auth Auth `json:"auth" pflag:"-, Auth setting for the cluster"`
Enabled bool `json:"enabled" pflag:", Boolean flag to enable or disable"`
}
type GarbageCollectable ¶ added in v2.0.1
type GarbageCollectable interface {
// IsTerminal returns true if the resource is in a terminal state
IsTerminal(ctx context.Context, resource client.Object) (bool, error)
// GetCompletionTime returns when the resource reached terminal state
GetCompletionTime(resource client.Object) (time.Time, error)
}
GarbageCollectable is an interface plugins implement to provide an external garbage collector information.
type PatchResourceOperation ¶
type PatchResourceOperation struct {
Patch client.Patch
Options []client.PatchOption
}
Defines a Patch operation on a Resource
type Plugin ¶
type Plugin interface {
// Defines a func to create a query object (typically just object and type meta portions) that's used to query k8s
// resources.
BuildIdentityResource(ctx context.Context, taskCtx pluginsCore.TaskExecutionMetadata) (client.Object, error)
// Defines a func to create the full resource object that will be posted to k8s.
BuildResource(ctx context.Context, taskCtx pluginsCore.TaskExecutionContext) (client.Object, error)
// Analyses the k8s resource and reports the status as TaskPhase. This call is expected to be relatively fast,
// any operations that might take a long time (limits are configured system-wide) should be offloaded to the
// background.
GetTaskPhase(ctx context.Context, pluginContext PluginContext, resource client.Object) (pluginsCore.PhaseInfo, error)
// Properties desired by the plugin
GetProperties() PluginProperties
// GarbageCollectable enables an external garbage collector to clean up resources created by the plugin
GarbageCollectable
}
Defines a simplified interface to author plugins for k8s resources.
type PluginAbortOverride ¶
type PluginAbortOverride interface {
OnAbort(ctx context.Context, tCtx pluginsCore.TaskExecutionContext, resource client.Object) (behavior AbortBehavior, err error)
}
An optional interface a Plugin can implement to override its default OnAbort finalizer (deletion of the underlying resource).
type PluginContext ¶
type PluginContext interface {
// Returns a TaskReader, to retrieve task details
TaskReader() pluginsCore.TaskReader
// Returns an input reader to retrieve input data
InputReader() io.InputReader
// Provides an output sync of type io.OutputWriter
OutputWriter() io.OutputWriter
// Returns a handle to the currently configured storage backend that can be used to communicate with the tasks or write metadata
DataStore() *storage.DataStore
// Returns a handle to the Task's execution metadata.
TaskExecutionMetadata() pluginsCore.TaskExecutionMetadata
// Returns a reader that retrieves previously stored plugin internal state. the state itself is immutable
PluginStateReader() pluginsCore.PluginStateReader
// K8sReader returns a read-only k8s client that can fetch pod(s) for given node execution
K8sReader() client.Reader
}
Special context passed in to plugins when checking task phase
type PluginEntry ¶
type PluginEntry struct {
// ID/Name of the plugin. This will be used to identify this plugin and has to be unique in the entire system
// All functions like enabling and disabling a plugin use this ID
ID pluginsCore.TaskType
// A list of all the task types for which this plugin is applicable.
RegisteredTaskTypes []pluginsCore.TaskType
// An instance of the kubernetes resource this plugin is responsible for, for example v1.Pod{}
ResourceToWatch client.Object
// An instance of the plugin
Plugin Plugin
// Boolean that indicates if this plugin can be used as the default for unknown task types. There can only be
// one default in the system
IsDefault bool
// Returns a new KubeClient to be used instead of the internal controller-runtime client.
CustomKubeClient func(ctx context.Context) (pluginsCore.KubeClient, error)
}
PluginEntry is a structure that is used to indicate to the system a K8s plugin
type PluginProperties ¶
type PluginProperties struct {
// Disables the inclusion of OwnerReferences in kubernetes resources that this plugin is responsible for.
// Disabling is only useful if resources will be created in a remote cluster.
DisableInjectOwnerReferences bool
// Boolean that indicates if finalizer injection should be disabled for resources that this plugin is
// responsible for.
DisableInjectFinalizer bool
// Specifies the length of TaskExecutionID generated name. default: 50
GeneratedNameMaxLength *int
// DisableDeleteResourceOnFinalize disables deleting the created resource on finalize. That behavior is controllable
// on the base K8sPluginConfig level but can be disabled for individual plugins. Plugins should generally not
// override that behavior unless the resource that gets created for this plugin does not consume resources (cluster's
// cpu/memory... etc. or external resources) once the plugin's Plugin.GetTaskPhase() returns a terminal phase.
DisableDeleteResourceOnFinalize bool
}
System level properties that this Plugin supports
type PluginState ¶
type PluginState struct {
// Phase is the plugin phase.
Phase pluginsCore.Phase
// PhaseVersion is an number used to indicate reportable changes to state that have the same phase.
PhaseVersion uint32
// Reason is the message explaining the purpose for being in the reported state.
Reason string
}
PluginState defines the state of a k8s plugin. This information must be maintained between propeller evaluations to determine if there have been any updates since the previously evaluation.
type UpdateResourceOperation ¶
type UpdateResourceOperation struct {
Options []client.UpdateOption
}
Defines an Update operation on a Resource