types

package
v0.6.0-alpha.6 Latest Latest
Warning

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

Go to latest
Published: May 29, 2023 License: AGPL-3.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ComponentPhaseTransition the event reason indicates that the component transits  to a new phase.
	ComponentPhaseTransition = "ComponentPhaseTransition"

	// PodContainerFailedTimeout the timeout for container of pod failures, the component phase will be set to Failed/Abnormal after this time.
	PodContainerFailedTimeout = time.Minute

	// PodScheduledFailedTimeout timeout for scheduling failure.
	PodScheduledFailedTimeout = 30 * time.Second
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Component

type Component interface {
	GetName() string
	GetNamespace() string
	GetClusterName() string
	GetDefinitionName() string
	GetWorkloadType() appsv1alpha1.WorkloadType

	GetCluster() *appsv1alpha1.Cluster
	GetClusterVersion() *appsv1alpha1.ClusterVersion
	GetSynthesizedComponent() *component.SynthesizedComponent

	GetMatchingLabels() client.MatchingLabels

	GetReplicas() int32

	GetConsensusSpec() *appsv1alpha1.ConsensusSetSpec
	GetPrimaryIndex() int32

	GetPhase() appsv1alpha1.ClusterComponentPhase

	// GetBuiltObjects returns all objects that will be created by this component
	GetBuiltObjects(reqCtx intctrlutil.RequestCtx, cli client.Client) ([]client.Object, error)

	Create(reqCtx intctrlutil.RequestCtx, cli client.Client) error
	Delete(reqCtx intctrlutil.RequestCtx, cli client.Client) error
	Update(reqCtx intctrlutil.RequestCtx, cli client.Client) error
	Status(reqCtx intctrlutil.RequestCtx, cli client.Client) error

	Restart(reqCtx intctrlutil.RequestCtx, cli client.Client) error

	ExpandVolume(reqCtx intctrlutil.RequestCtx, cli client.Client) error

	HorizontalScale(reqCtx intctrlutil.RequestCtx, cli client.Client) error

	// TODO(impl): impl-related, replace them with component workload
	SetWorkload(obj client.Object, action *ictrltypes.LifecycleAction, parent *ictrltypes.LifecycleVertex)
	AddResource(obj client.Object, action *ictrltypes.LifecycleAction, parent *ictrltypes.LifecycleVertex) *ictrltypes.LifecycleVertex
}

type ComponentSet

type ComponentSet interface {
	SetComponent(component Component)

	// IsRunning when relevant k8s workloads changes, it checks whether the component is running.
	// you can also reconcile the pods of component till the component is Running here.
	IsRunning(ctx context.Context, obj client.Object) (bool, error)

	// PodsReady checks whether all pods of the component are ready.
	// it means the pods are available in StatefulSet or Deployment.
	PodsReady(ctx context.Context, obj client.Object) (bool, error)

	// PodIsAvailable checks whether a pod of the component is available.
	// if the component is Stateless/StatefulSet, the available conditions follows as:
	// 1. the pod is ready.
	// 2. readyTime reached minReadySeconds.
	// if the component is ConsensusSet,it will be available when the pod is ready and labeled with its role.
	PodIsAvailable(pod *corev1.Pod, minReadySeconds int32) bool

	// GetPhaseWhenPodsReadyAndProbeTimeout when the pods of component are ready but the probe timed-out,
	//  calculate the component phase is Failed or Abnormal.
	GetPhaseWhenPodsReadyAndProbeTimeout(pods []*corev1.Pod) (appsv1alpha1.ClusterComponentPhase, appsv1alpha1.ComponentMessageMap)

	// GetPhaseWhenPodsNotReady when the pods of component are not ready, calculate the component phase is Failed or Abnormal.
	// if return an empty phase, means the pods of component are ready and skips it.
	GetPhaseWhenPodsNotReady(ctx context.Context, componentName string) (appsv1alpha1.ClusterComponentPhase, appsv1alpha1.ComponentMessageMap, error)

	HandleRestart(ctx context.Context, obj client.Object) ([]graph.Vertex, error)

	HandleRoleChange(ctx context.Context, obj client.Object) ([]graph.Vertex, error)

	HandleHA(ctx context.Context, obj client.Object) ([]graph.Vertex, error)
}

type ComponentSetBase

type ComponentSetBase struct {
	Cli           client.Client
	Cluster       *appsv1alpha1.Cluster
	ComponentSpec *appsv1alpha1.ClusterComponentSpec
	ComponentDef  *appsv1alpha1.ClusterComponentDefinition
	Component     Component
}

ComponentSetBase is a common component set base struct.

type ComponentWorkload

type ComponentWorkload interface{}

Jump to

Keyboard shortcuts

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