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 ExposeOpsHandler
- func (e ExposeOpsHandler) Action(reqCtx intctrlutil.RequestCtx, cli client.Client, opsRes *OpsResource) error
- func (e ExposeOpsHandler) ActionStartedCondition(opsRequest *appsv1alpha1.OpsRequest) *metav1.Condition
- func (e ExposeOpsHandler) GetRealAffectedComponentMap(opsRequest *appsv1alpha1.OpsRequest) realAffectedComponentMap
- 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 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(opsRequest *appsv1alpha1.OpsRequest) *metav1.Condition
- func (start StartOpsHandler) GetRealAffectedComponentMap(opsRequest *appsv1alpha1.OpsRequest) realAffectedComponentMap
- 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(opsRequest *appsv1alpha1.OpsRequest) *metav1.Condition
- func (stop StopOpsHandler) GetRealAffectedComponentMap(opsRequest *appsv1alpha1.OpsRequest) realAffectedComponentMap
- 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
Constants ¶
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" )
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 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(opsRequest *appsv1alpha1.OpsRequest) *metav1.Condition
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 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(opsRequest *appsv1alpha1.OpsRequest) *metav1.Condition // 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(opsRequest *appsv1alpha1.OpsRequest) *metav1.Condition
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(opsRequest *appsv1alpha1.OpsRequest) *metav1.Condition
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