Documentation ¶
Index ¶
- Constants
- func DeleteOpsRequestAnnotationInCluster(ctx context.Context, cli client.Client, opsRes *OpsResource) error
- func GetOpsRecorderFromSlice(opsRequestSlice []appsv1alpha1.OpsRecorder, opsRequestName string) (int, appsv1alpha1.OpsRecorder)
- func PatchClusterNotFound(ctx context.Context, cli client.Client, opsRes *OpsResource) error
- func PatchOpsStatus(ctx context.Context, cli client.Client, opsRes *OpsResource, ...) error
- func PatchOpsStatusWithOpsDeepCopy(ctx context.Context, cli client.Client, opsRes *OpsResource, ...) error
- type DataScriptOpsHandler
- func (o DataScriptOpsHandler) Action(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) error
- func (o DataScriptOpsHandler) ActionStartedCondition(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (*metav1.Condition, error)
- func (o DataScriptOpsHandler) ReconcileAction(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) (appsv1alpha1.OpsPhase, time.Duration, error)
- func (o DataScriptOpsHandler) SaveLastConfiguration(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) error
- type ExposeOpsHandler
- func (e ExposeOpsHandler) Action(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) error
- func (e ExposeOpsHandler) ActionStartedCondition(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (*metav1.Condition, error)
- func (e ExposeOpsHandler) ReconcileAction(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) (appsv1alpha1.OpsPhase, time.Duration, error)
- func (e ExposeOpsHandler) SaveLastConfiguration(reqCtx intctrlutil.RequestCtx, cli client.Client, opsResource *OpsResource) error
- type FastFaileError
- type OpsBehaviour
- type OpsHandler
- type OpsManager
- func (opsMgr *OpsManager) Do(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (*ctrl.Result, error)
- func (opsMgr *OpsManager) Reconcile(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (time.Duration, error)
- func (opsMgr *OpsManager) RegisterOps(opsType appsv1alpha1.OpsType, opsBehaviour OpsBehaviour)
- type OpsResource
- type PersistentVolumeClaimEventHandler
- type StartOpsHandler
- func (start StartOpsHandler) Action(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) error
- func (start StartOpsHandler) ActionStartedCondition(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (*metav1.Condition, error)
- func (start StartOpsHandler) ReconcileAction(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (appsv1alpha1.OpsPhase, time.Duration, error)
- func (start StartOpsHandler) SaveLastConfiguration(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) error
- type StopOpsHandler
- func (stop StopOpsHandler) Action(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) error
- func (stop StopOpsHandler) ActionStartedCondition(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (*metav1.Condition, error)
- func (stop StopOpsHandler) ReconcileAction(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) (appsv1alpha1.OpsPhase, time.Duration, error)
- func (stop StopOpsHandler) SaveLastConfiguration(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) error
- type SwitchoverMessage
- type WaitForClusterPhaseErr
Constants ¶
const ( SwitchoverCheckJobKey = "CheckJob" SwitchoverCheckRoleLabelKey = "CheckRoleLabel" OpsReasonForSkipSwitchover = "SkipSwitchover" )
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" )
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" )
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 ¶
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) 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) 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 // 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 }
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) 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) 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