hook

package
v0.0.0-...-1eaa894 Latest Latest
Warning

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

Go to latest
Published: Dec 13, 2024 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const (
	HookSourceAnnotation = "annotation"
	HookSourceSpec       = "spec"
)

Variables

This section is empty.

Functions

func GroupRestoreExecHooks

func GroupRestoreExecHooks(
	restoreName string,
	resourceRestoreHooks []ResourceRestoreHook,
	pod *corev1api.Pod,
	log logrus.FieldLogger,
	hookTrack *MultiHookTracker,
) (map[string][]PodExecRestoreHook, error)

GroupRestoreExecHooks returns a list of hooks to be executed in a pod grouped by container name. If an exec hook is defined in annotation that is used, else applicable exec hooks from the restore resource are accumulated.

func ValidateContainer

func ValidateContainer(raw []byte) error

ValidateContainer validate whether a map contains mandatory k8s Container fields. mandatory fields include name, image and commands.

Types

type DefaultItemHookHandler

type DefaultItemHookHandler struct {
	PodCommandExecutor podexec.PodCommandExecutor
}

DefaultItemHookHandler is the default itemHookHandler.

func (*DefaultItemHookHandler) HandleHooks

func (h *DefaultItemHookHandler) HandleHooks(
	log logrus.FieldLogger,
	groupResource schema.GroupResource,
	obj runtime.Unstructured,
	resourceHooks []ResourceHook,
	phase HookPhase,
	hookTracker *HookTracker,
) error

type DefaultListWatchFactory

type DefaultListWatchFactory struct {
	PodsGetter cache.Getter
}

func (*DefaultListWatchFactory) NewListWatch

func (d *DefaultListWatchFactory) NewListWatch(namespace string, selector fields.Selector) cache.ListerWatcher

type DefaultWaitExecHookHandler

type DefaultWaitExecHookHandler struct {
	ListWatchFactory   ListWatchFactory
	PodCommandExecutor podexec.PodCommandExecutor
}

func (*DefaultWaitExecHookHandler) HandleHooks

func (e *DefaultWaitExecHookHandler) HandleHooks(
	ctx context.Context,
	log logrus.FieldLogger,
	pod *v1.Pod,
	byContainer map[string][]PodExecRestoreHook,
	multiHookTracker *MultiHookTracker,
	restoreName string,
) []error

type HookErrInfo

type HookErrInfo struct {
	Namespace string
	Err       error
}

type HookPhase

type HookPhase string
const (
	PhasePre  HookPhase = "pre"
	PhasePost HookPhase = "post"
)

type HookTracker

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

HookTracker tracks all hooks' execution status in a single backup/restore.

func NewHookTracker

func NewHookTracker() *HookTracker

NewHookTracker creates a hookTracker instance.

func (*HookTracker) Add

func (ht *HookTracker) Add(podNamespace, podName, container, source, hookName string, hookPhase HookPhase)

Add adds a hook to the hook tracker Add must precede the Record for each individual hook. In other words, a hook must be added to the tracker before its execution result is recorded.

func (*HookTracker) HookErrs

func (ht *HookTracker) HookErrs() []HookErrInfo

HooksErr returns hook execution errors

func (*HookTracker) IsComplete

func (ht *HookTracker) IsComplete() bool

IsComplete returns whether the execution of all hooks has finished or not

func (*HookTracker) Record

func (ht *HookTracker) Record(podNamespace, podName, container, source, hookName string, hookPhase HookPhase, hookFailed bool, hookErr error) error

Record records the hook's execution status Add must precede the Record for each individual hook. In other words, a hook must be added to the tracker before its execution result is recorded.

func (*HookTracker) Stat

func (ht *HookTracker) Stat() (hookAttemptedCnt int, hookFailedCnt int)

Stat returns the number of attempted hooks and failed hooks

type InitContainerRestoreHookHandler

type InitContainerRestoreHookHandler struct{}

InitContainerRestoreHookHandler is the restore hook handler to add init containers to restored pods.

func (*InitContainerRestoreHookHandler) HandleRestoreHooks

func (i *InitContainerRestoreHookHandler) HandleRestoreHooks(
	log logrus.FieldLogger,
	groupResource schema.GroupResource,
	obj runtime.Unstructured,
	resourceRestoreHooks []ResourceRestoreHook,
	namespaceMapping map[string]string,
) (runtime.Unstructured, error)

HandleRestoreHooks runs the restore hooks for an item. If the item is a pod, then hooks are chosen to be run as follows: If the pod has the appropriate annotations specifying the hook action, then hooks from the annotation are run Otherwise, the supplied ResourceRestoreHooks are applied.

type ItemHookHandler

type ItemHookHandler interface {
	// HandleHooks invokes hooks for an item. If the item is a pod and the appropriate annotations exist
	// to specify a hook, that is executed. Otherwise, this looks at the backup context's Backup to
	// determine if there are any hooks relevant to the item, taking into account the hook spec's
	// namespaces, resources, and label selector.
	HandleHooks(
		log logrus.FieldLogger,
		groupResource schema.GroupResource,
		obj runtime.Unstructured,
		resourceHooks []ResourceHook,
		phase HookPhase,
		hookTracker *HookTracker,
	) error
}

ItemHookHandler invokes hooks for an item.

type ItemRestoreHookHandler

type ItemRestoreHookHandler interface {
	HandleRestoreHooks(
		log logrus.FieldLogger,
		groupResource schema.GroupResource,
		obj runtime.Unstructured,
		rh []ResourceRestoreHook,
	) (runtime.Unstructured, error)
}

ItemRestoreHookHandler invokes restore hooks for an item

type ListWatchFactory

type ListWatchFactory interface {
	NewListWatch(namespace string, selector fields.Selector) cache.ListerWatcher
}

type MultiHookTracker

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

MultiHookTrackers tracks all hooks' execution status for multiple backups/restores.

func NewMultiHookTracker

func NewMultiHookTracker() *MultiHookTracker

NewMultiHookTracker creates a multiHookTracker instance.

func (*MultiHookTracker) Add

func (mht *MultiHookTracker) Add(name, podNamespace, podName, container, source, hookName string, hookPhase HookPhase)

Add adds a backup/restore hook to the tracker

func (*MultiHookTracker) Delete

func (mht *MultiHookTracker) Delete(name string)

Delete removes the hook data for a particular backup/restore

func (*MultiHookTracker) HookErrs

func (mht *MultiHookTracker) HookErrs(name string) []HookErrInfo

HooksErr returns hook execution errors for a particular backup/restore

func (*MultiHookTracker) IsComplete

func (mht *MultiHookTracker) IsComplete(name string) bool

IsComplete returns whether the execution of all hooks for a particular backup/restore has finished or not

func (*MultiHookTracker) Record

func (mht *MultiHookTracker) Record(name, podNamespace, podName, container, source, hookName string, hookPhase HookPhase, hookFailed bool, hookErr error) error

Record records a backup/restore hook execution status

func (*MultiHookTracker) Stat

func (mht *MultiHookTracker) Stat(name string) (hookAttemptedCnt int, hookFailedCnt int)

Stat returns the number of attempted hooks and failed hooks for a particular backup/restore

type NoOpItemHookHandler

type NoOpItemHookHandler struct{}

NoOpItemHookHandler is the an itemHookHandler for the Finalize controller where hooks don't run

func (*NoOpItemHookHandler) HandleHooks

func (h *NoOpItemHookHandler) HandleHooks(
	log logrus.FieldLogger,
	groupResource schema.GroupResource,
	obj runtime.Unstructured,
	resourceHooks []ResourceHook,
	phase HookPhase,
	hookTracker *HookTracker,
) error

type PodExecRestoreHook

type PodExecRestoreHook struct {
	HookName   string
	HookSource string
	Hook       velerov1api.ExecRestoreHook
	// contains filtered or unexported fields
}

type ResourceHook

type ResourceHook struct {
	Name     string
	Selector ResourceHookSelector
	Pre      []velerov1api.BackupResourceHook
	Post     []velerov1api.BackupResourceHook
}

ResourceHook is a hook for a given resource.

type ResourceHookSelector

type ResourceHookSelector struct {
	Namespaces    *collections.IncludesExcludes
	Resources     *collections.IncludesExcludes
	LabelSelector labels.Selector
}

type ResourceRestoreHook

type ResourceRestoreHook struct {
	Name         string
	Selector     ResourceHookSelector
	RestoreHooks []velerov1api.RestoreResourceHook
}

ResourceRestoreHook is a restore hook for a given resource.

func GetRestoreHooksFromSpec

func GetRestoreHooksFromSpec(hooksSpec *velerov1api.RestoreHooks) ([]ResourceRestoreHook, error)

GetRestoreHooksFromSpec returns a list of ResourceRestoreHooks from the restore Spec.

type WaitExecHookHandler

type WaitExecHookHandler interface {
	HandleHooks(
		ctx context.Context,
		log logrus.FieldLogger,
		pod *v1.Pod,
		byContainer map[string][]PodExecRestoreHook,
		multiHookTracker *MultiHookTracker,
		restoreName string,
	) []error
}

Jump to

Keyboard shortcuts

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