operations

package
v0.6.0-beta.7 Latest Latest
Warning

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

Go to latest
Published: Jul 18, 2023 License: AGPL-3.0 Imports: 37 Imported by: 1

Documentation

Index

Constants

View Source
const (
	SwitchoverCheckJobKey       = "CheckJob"
	SwitchoverCheckRoleLabelKey = "CheckRoleLabel"

	OpsReasonForSkipSwitchover = "SkipSwitchover"
)
View Source
const (
	// ProcessingReasonHorizontalScaling is the reason of the "OpsRequestProcessed" condition for the horizontal scaling opsRequest processing in cluster.
	ProcessingReasonHorizontalScaling = "HorizontalScaling"
	// ProcessingReasonVerticalScaling is the reason of the "OpsRequestProcessed" condition for the vertical scaling opsRequest processing in cluster.
	ProcessingReasonVerticalScaling = "VerticalScaling"
	// ProcessingReasonStarting is the reason of the "OpsRequestProcessed" condition for the start opsRequest processing in cluster.
	ProcessingReasonStarting = "Starting"
	// ProcessingReasonStopping is the reason of the "OpsRequestProcessed" condition for the stop opsRequest processing in cluster.
	ProcessingReasonStopping = "Stopping"
	// ProcessingReasonRestarting is the reason of the "OpsRequestProcessed" condition for the restart opsRequest processing in cluster.
	ProcessingReasonRestarting = "Restarting"
	// ProcessingReasonReconfiguring is the reason of the "OpsRequestProcessed" condition for the reconfiguration opsRequest processing in cluster.
	ProcessingReasonReconfiguring = "Reconfiguring"
	// ProcessingReasonVersionUpgrading is the reason of the "OpsRequestProcessed" condition for the version upgrade opsRequest processing in cluster.
	ProcessingReasonVersionUpgrading = "VersionUpgrading"
	// ProcessingReasonSwitchovering is the reason of the "OpsRequestProcessed" condition for the switchover opsRequest processing in cluster.
	ProcessingReasonSwitchovering = "Switchovering"
)
View Source
const (
	// PVCEventTimeOut timeout of the pvc event
	PVCEventTimeOut = 30 * time.Second

	// VolumeResizeFailed the event reason of volume resize failed on external-resizer(the csi driver sidecar)
	VolumeResizeFailed = "VolumeResizeFailed"
	// FileSystemResizeFailed the event reason of fileSystem resize failed on kubelet volume manager
	FileSystemResizeFailed = "FileSystemResizeFailed"
)
View Source
const (
	// VolumeExpansionTimeOut volume expansion timeout.
	VolumeExpansionTimeOut = 30 * time.Minute
)

Variables

This section is empty.

Functions

func DeleteOpsRequestAnnotationInCluster

func DeleteOpsRequestAnnotationInCluster(ctx context.Context, cli client.Client, opsRes *OpsResource) error

DeleteOpsRequestAnnotationInCluster when OpsRequest.status.phase is Succeeded or Failed we should remove the OpsRequest Annotation of cluster, then unlock cluster

func GetOpsRecorderFromSlice

func GetOpsRecorderFromSlice(opsRequestSlice []appsv1alpha1.OpsRecorder,
	opsRequestName string) (int, appsv1alpha1.OpsRecorder)

GetOpsRecorderFromSlice gets OpsRequest recorder from slice by target cluster phase

func PatchClusterNotFound

func PatchClusterNotFound(ctx context.Context, cli client.Client, opsRes *OpsResource) error

PatchClusterNotFound patches ClusterNotFound condition to the OpsRequest.status.conditions.

func PatchOpsStatus

func PatchOpsStatus(ctx context.Context,
	cli client.Client,
	opsRes *OpsResource,
	phase appsv1alpha1.OpsPhase,
	condition ...*metav1.Condition) error

PatchOpsStatus patches OpsRequest.status

func PatchOpsStatusWithOpsDeepCopy added in v0.6.0

func PatchOpsStatusWithOpsDeepCopy(ctx context.Context,
	cli client.Client,
	opsRes *OpsResource,
	opsRequestDeepCopy *appsv1alpha1.OpsRequest,
	phase appsv1alpha1.OpsPhase,
	condition ...*metav1.Condition) error

PatchOpsStatusWithOpsDeepCopy patches OpsRequest.status with the deepCopy opsRequest.

Types

type DataScriptOpsHandler added in v0.6.0

type DataScriptOpsHandler struct {
}

DataScriptOpsHandler handles DataScript operation, it is more like a one-time command operation.

func (DataScriptOpsHandler) Action added in v0.6.0

func (o DataScriptOpsHandler) Action(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) error

Action implements OpsHandler.Action It will create a job to execute the script. It will fail fast if the script is not valid, or the target pod is not found.

func (DataScriptOpsHandler) ActionStartedCondition added in v0.6.0

func (o DataScriptOpsHandler) ActionStartedCondition(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (*metav1.Condition, error)

func (DataScriptOpsHandler) GetRealAffectedComponentMap added in v0.6.0

func (o DataScriptOpsHandler) GetRealAffectedComponentMap(opsRequest *appsv1alpha1.OpsRequest) realAffectedComponentMap

func (DataScriptOpsHandler) ReconcileAction added in v0.6.0

func (o DataScriptOpsHandler) ReconcileAction(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) (appsv1alpha1.OpsPhase, time.Duration, error)

ReconcileAction implements OpsHandler.ReconcileAction It will check the job status, and update the opsRequest status. If the job is neither completed nor failed, it will retry after 1 second. If the job is completed, it will return OpsSucceedPhase If the job is failed, it will return OpsFailedPhase.

func (DataScriptOpsHandler) SaveLastConfiguration added in v0.6.0

func (o DataScriptOpsHandler) SaveLastConfiguration(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) error

type ExposeOpsHandler

type ExposeOpsHandler struct {
}

func (ExposeOpsHandler) Action

func (e ExposeOpsHandler) Action(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) error

func (ExposeOpsHandler) ActionStartedCondition

func (e ExposeOpsHandler) ActionStartedCondition(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (*metav1.Condition, error)

func (ExposeOpsHandler) GetRealAffectedComponentMap

func (e ExposeOpsHandler) GetRealAffectedComponentMap(opsRequest *appsv1alpha1.OpsRequest) realAffectedComponentMap

func (ExposeOpsHandler) ReconcileAction

func (e ExposeOpsHandler) ReconcileAction(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) (appsv1alpha1.OpsPhase, time.Duration, error)

func (ExposeOpsHandler) SaveLastConfiguration

func (e ExposeOpsHandler) SaveLastConfiguration(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) error

type FastFaileError added in v0.6.0

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

FastFaileError is a error type that will not retry the operation.

func (*FastFaileError) Error added in v0.6.0

func (e *FastFaileError) Error() string

type OpsBehaviour

type OpsBehaviour struct {
	FromClusterPhases []appsv1alpha1.ClusterPhase

	// ToClusterPhase indicates that the cluster will enter this phase during the operation.
	ToClusterPhase appsv1alpha1.ClusterPhase

	// MaintainClusterPhaseBySelf indicates whether the operation will maintain cluster/component phase by itself.
	// Generally, the cluster/component phase will be maintained by cluster controller, but if the operation will not update
	// StatefulSet/Deployment by Cluster controller and make pod rebuilt, maintain the cluster/component phase by self.
	MaintainClusterPhaseBySelf bool

	// ProcessingReasonInClusterCondition indicates the reason of the condition that type is "OpsRequestProcessed" in Cluster.Status.Conditions and
	// is only valid when ToClusterPhase is not empty. it will indicate what operation the cluster is doing and
	// will be displayed of "kbcli cluster list".
	ProcessingReasonInClusterCondition string

	// CancelFunc this function defines the cancel action and does not patch/update the opsRequest by client-go in here.
	// only update the opsRequest object, then opsRequest controller will update uniformly.
	CancelFunc func(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) error

	OpsHandler OpsHandler
}

type OpsHandler

type OpsHandler interface {
	// Action The action duration should be short. if it fails, it will be reconciled by the OpsRequest controller.
	// Do not patch OpsRequest status in this function with k8s client, just modify the status of ops.
	// The opsRequest controller will patch it to the k8s apiServer.
	Action(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) error

	// ReconcileAction loops till the operation is completed.
	// return OpsRequest.status.phase and requeueAfter time.
	ReconcileAction(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) (appsv1alpha1.OpsPhase, time.Duration, error)

	// ActionStartedCondition appends to OpsRequest.status.conditions when start performing Action function
	ActionStartedCondition(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (*metav1.Condition, error)

	// SaveLastConfiguration saves last configuration to the OpsRequest.status.lastConfiguration,
	// and this method will be executed together when opsRequest in running.
	SaveLastConfiguration(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) error

	// GetRealAffectedComponentMap returns a component map that is actually affected by the opsRequest.
	// when MaintainClusterPhaseBySelf of the opsBehaviour is true,
	// will change the phase of the component to Updating after Action is done which exists in this map.
	// Deprecated: will be removed soon.
	GetRealAffectedComponentMap(opsRequest *appsv1alpha1.OpsRequest) realAffectedComponentMap
}

type OpsManager

type OpsManager struct {
	OpsMap map[appsv1alpha1.OpsType]OpsBehaviour
}

func GetOpsManager

func GetOpsManager() *OpsManager

func (*OpsManager) Do

func (opsMgr *OpsManager) Do(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (*ctrl.Result, error)

Do the entry function for handling OpsRequest

func (*OpsManager) Reconcile

func (opsMgr *OpsManager) Reconcile(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (time.Duration, error)

Reconcile entry function when OpsRequest.status.phase is Running. loops till the operation is completed.

func (*OpsManager) RegisterOps

func (opsMgr *OpsManager) RegisterOps(opsType appsv1alpha1.OpsType, opsBehaviour OpsBehaviour)

RegisterOps registers operation with OpsType and OpsBehaviour

type OpsResource

type OpsResource struct {
	OpsRequest     *appsv1alpha1.OpsRequest
	Cluster        *appsv1alpha1.Cluster
	Recorder       record.EventRecorder
	ToClusterPhase appsv1alpha1.ClusterPhase
}

type PersistentVolumeClaimEventHandler

type PersistentVolumeClaimEventHandler struct {
}

func (PersistentVolumeClaimEventHandler) Handle

func (pvcEventHandler PersistentVolumeClaimEventHandler) Handle(cli client.Client,
	reqCtx intctrlutil.RequestCtx,
	recorder record.EventRecorder,
	event *corev1.Event) error

Handle the warning events of PVCs. if the events are resize-failed events, update the OpsRequest.status.

type StartOpsHandler

type StartOpsHandler struct{}

func (StartOpsHandler) Action

func (start StartOpsHandler) Action(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) error

Action modifies Cluster.spec.components[*].replicas from the opsRequest

func (StartOpsHandler) ActionStartedCondition

func (start StartOpsHandler) ActionStartedCondition(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (*metav1.Condition, error)

ActionStartedCondition the started condition when handling the start request.

func (StartOpsHandler) GetRealAffectedComponentMap

func (start StartOpsHandler) GetRealAffectedComponentMap(opsRequest *appsv1alpha1.OpsRequest) realAffectedComponentMap

GetRealAffectedComponentMap gets the real affected component map for the operation

func (StartOpsHandler) ReconcileAction

func (start StartOpsHandler) ReconcileAction(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (appsv1alpha1.OpsPhase, time.Duration, error)

ReconcileAction will be performed when action is done and loops till OpsRequest.status.phase is Succeed/Failed. the Reconcile function for start opsRequest.

func (StartOpsHandler) SaveLastConfiguration

func (start StartOpsHandler) SaveLastConfiguration(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) error

SaveLastConfiguration records last configuration to the OpsRequest.status.lastConfiguration

type StopOpsHandler

type StopOpsHandler struct{}

func (StopOpsHandler) Action

func (stop StopOpsHandler) Action(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) error

Action modifies Cluster.spec.components[*].replicas from the opsRequest

func (StopOpsHandler) ActionStartedCondition

func (stop StopOpsHandler) ActionStartedCondition(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (*metav1.Condition, error)

ActionStartedCondition the started condition when handling the stop request.

func (StopOpsHandler) GetRealAffectedComponentMap

func (stop StopOpsHandler) GetRealAffectedComponentMap(opsRequest *appsv1alpha1.OpsRequest) realAffectedComponentMap

GetRealAffectedComponentMap gets the real affected component map for the operation

func (StopOpsHandler) ReconcileAction

func (stop StopOpsHandler) ReconcileAction(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (appsv1alpha1.OpsPhase, time.Duration, error)

ReconcileAction will be performed when action is done and loops till OpsRequest.status.phase is Succeed/Failed. the Reconcile function for stop opsRequest.

func (StopOpsHandler) SaveLastConfiguration

func (stop StopOpsHandler) SaveLastConfiguration(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) error

SaveLastConfiguration records last configuration to the OpsRequest.status.lastConfiguration

type SwitchoverMessage added in v0.6.0

type SwitchoverMessage struct {
	appsv1alpha1.Switchover
	OldPrimary string
	Cluster    string
}

SwitchoverMessage is the OpsRequest.Status.Condition.Message for switchover.

type WaitForClusterPhaseErr added in v0.6.0

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

func (*WaitForClusterPhaseErr) Error added in v0.6.0

func (e *WaitForClusterPhaseErr) Error() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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