Documentation ¶
Index ¶
- Constants
- Variables
- func EnhancedDefaultControllerRateLimiter() workqueue.RateLimiter
- func GetClientForEngine(e *longhorn.Engine, engines engineapi.EngineClientCollection, image string) (client engineapi.EngineClient, err error)
- func GetGuaranteedResourceRequirement(ds *datastore.DataStore) (*corev1.ResourceRequirements, error)
- func IsSameGuaranteedCPURequirement(a, b *corev1.ResourceRequirements) bool
- type BackupStoreMonitor
- type CheckUpgradeRequest
- type CheckUpgradeResponse
- type EngineController
- func (ec *EngineController) CreateInstance(obj interface{}) (*types.InstanceProcess, error)
- func (ec *EngineController) DeleteInstance(obj interface{}) error
- func (ec *EngineController) GetInstance(obj interface{}) (*types.InstanceProcess, error)
- func (ec *EngineController) LogInstance(obj interface{}) (*imapi.LogStream, error)
- func (ec *EngineController) ReconcileEngineState(e *longhorn.Engine) error
- func (ec *EngineController) Run(workers int, stopCh <-chan struct{})
- func (ec *EngineController) Upgrade(e *longhorn.Engine) (err error)
- func (ec *EngineController) UpgradeEngineProcess(e *longhorn.Engine) error
- type EngineImageController
- type EngineMonitor
- type GenerateDiskConfig
- type GetDiskConfig
- type GetDiskInfoHandler
- type InstanceHandler
- type InstanceManagerController
- type InstanceManagerHandler
- type InstanceManagerMonitor
- type InstanceManagerNotifier
- type InstanceManagerUpdater
- type KubernetesNodeController
- type KubernetesPVController
- type NodeController
- type ReplicaController
- func (rc *ReplicaController) CreateInstance(obj interface{}) (*types.InstanceProcess, error)
- func (rc *ReplicaController) DeleteInstance(obj interface{}) error
- func (rc *ReplicaController) GetInstance(obj interface{}) (*types.InstanceProcess, error)
- func (rc *ReplicaController) LogInstance(obj interface{}) (*imapi.LogStream, error)
- func (rc *ReplicaController) Run(workers int, stopCh <-chan struct{})
- type SettingController
- type SimpleResourceEventHandler
- type TopologyLabelsChecker
- type UninstallController
- type Version
- type VolumeController
- func (vc *VolumeController) ReconcileEngineReplicaState(v *longhorn.Volume, e *longhorn.Engine, rs map[string]*longhorn.Replica) (err error)
- func (vc *VolumeController) ReconcileVolumeState(v *longhorn.Volume, es map[string]*longhorn.Engine, ...) (err error)
- func (vc *VolumeController) ResolveRefAndEnqueue(namespace string, ref *metav1.OwnerReference)
- func (vc *VolumeController) Run(workers int, stopCh <-chan struct{})
- type Watcher
- type WebsocketController
Constants ¶
View Source
const ( EventReasonCreate = "Create" EventReasonFailedCreating = "FailedCreating" EventReasonDelete = "Delete" EventReasonFailedDeleting = "FailedDeleting" EventReasonStart = "Start" EventReasonFailedStarting = "FailedStarting" EventReasonStop = "Stop" EventReasonFailedStopping = "FailedStopping" EventReasonRebuilded = "Rebuilded" EventReasonRebuilding = "Rebuilding" EventReasonFailedRebuilding = "FailedRebuilding" EventReasonFailedExpansion = "FailedExpansion" EventReasonSucceededExpansion = "SucceededExpansion" EventReasonCanceledExpansion = "CanceledExpansion" EventReasonAttached = "Attached" EventReasonDetached = "Detached" EventReasonHealthy = "Healthy" EventReasonFaulted = "Faulted" EventReasonDegraded = "Degraded" EventReasonOrphaned = "Orphaned" EventReasonDetachedUnexpectly = "DetachedUnexpectly" EventReasonRemount = "Remount" EventReasonAutoSalvaged = "AutoSalvaged" )
View Source
const ( MaxPollCount = 60 MinPollCount = 1 PollInterval = 1 * time.Second )
View Source
const ( CRDEngineName = "engines.longhorn.io" CRDReplicaName = "replicas.longhorn.io" CRDVolumeName = "volumes.longhorn.io" CRDEngineImageName = "engineimages.longhorn.io" CRDNodeName = "nodes.longhorn.io" CRDInstanceManagerName = "instancemanagers.longhorn.io" )
View Source
const (
ConflictRetryCount = 5
)
View Source
const (
CronJobBackoffLimit = 3
)
View Source
const (
VersionTagLatest = "latest"
)
Variables ¶
View Source
var ( EnginePollInterval = 5 * time.Second EnginePollTimeout = 30 * time.Second )
View Source
var ( RetryInterval = 100 * time.Millisecond RetryCounts = 20 AutoSalvageTimeLimit = 1 * time.Minute )
View Source
var (
ExpiredEngineImageTimeout = 60 * time.Minute
)
View Source
var (
Workers = 5
)
Functions ¶
func EnhancedDefaultControllerRateLimiter ¶ added in v0.8.0
func EnhancedDefaultControllerRateLimiter() workqueue.RateLimiter
EnhancedDefaultControllerRateLimiter is an enhanced version of workqueue.DefaultControllerRateLimiter() See https://github.com/longhorn/longhorn/issues/1058 for details
func GetClientForEngine ¶
func GetClientForEngine(e *longhorn.Engine, engines engineapi.EngineClientCollection, image string) (client engineapi.EngineClient, err error)
func GetGuaranteedResourceRequirement ¶ added in v0.5.0
func GetGuaranteedResourceRequirement(ds *datastore.DataStore) (*corev1.ResourceRequirements, error)
func IsSameGuaranteedCPURequirement ¶ added in v1.0.0
func IsSameGuaranteedCPURequirement(a, b *corev1.ResourceRequirements) bool
Types ¶
type BackupStoreMonitor ¶ added in v0.5.0
type BackupStoreMonitor struct {
// contains filtered or unexported fields
}
func (*BackupStoreMonitor) Start ¶ added in v0.5.0
func (bm *BackupStoreMonitor) Start()
func (*BackupStoreMonitor) Stop ¶ added in v0.5.0
func (bm *BackupStoreMonitor) Stop()
type CheckUpgradeRequest ¶ added in v0.3.2
type CheckUpgradeResponse ¶ added in v0.3.2
type CheckUpgradeResponse struct {
Versions []Version `json:"versions"`
}
type EngineController ¶
type EngineController struct {
// contains filtered or unexported fields
}
func NewEngineController ¶
func NewEngineController( ds *datastore.DataStore, scheme *runtime.Scheme, engineInformer lhinformers.EngineInformer, instanceManagerInformer lhinformers.InstanceManagerInformer, kubeClient clientset.Interface, engines engineapi.EngineClientCollection, namespace string, controllerID string) *EngineController
func (*EngineController) CreateInstance ¶ added in v0.6.0
func (ec *EngineController) CreateInstance(obj interface{}) (*types.InstanceProcess, error)
func (*EngineController) DeleteInstance ¶ added in v0.6.0
func (ec *EngineController) DeleteInstance(obj interface{}) error
func (*EngineController) GetInstance ¶ added in v0.6.0
func (ec *EngineController) GetInstance(obj interface{}) (*types.InstanceProcess, error)
func (*EngineController) LogInstance ¶ added in v0.6.0
func (ec *EngineController) LogInstance(obj interface{}) (*imapi.LogStream, error)
func (*EngineController) ReconcileEngineState ¶
func (ec *EngineController) ReconcileEngineState(e *longhorn.Engine) error
func (*EngineController) Run ¶
func (ec *EngineController) Run(workers int, stopCh <-chan struct{})
func (*EngineController) Upgrade ¶
func (ec *EngineController) Upgrade(e *longhorn.Engine) (err error)
func (*EngineController) UpgradeEngineProcess ¶ added in v0.8.0
func (ec *EngineController) UpgradeEngineProcess(e *longhorn.Engine) error
type EngineImageController ¶
type EngineImageController struct {
// contains filtered or unexported fields
}
func NewEngineImageController ¶
func NewEngineImageController( ds *datastore.DataStore, scheme *runtime.Scheme, engineImageInformer lhinformers.EngineImageInformer, volumeInformer lhinformers.VolumeInformer, dsInformer appsinformers.DaemonSetInformer, kubeClient clientset.Interface, namespace string, controllerID, serviceAccount string) *EngineImageController
func (*EngineImageController) ResolveRefAndEnqueue ¶
func (ic *EngineImageController) ResolveRefAndEnqueue(namespace string, ref *metav1.OwnerReference)
func (*EngineImageController) Run ¶
func (ic *EngineImageController) Run(workers int, stopCh <-chan struct{})
type EngineMonitor ¶
type EngineMonitor struct { Name string // contains filtered or unexported fields }
func (*EngineMonitor) Run ¶
func (m *EngineMonitor) Run()
type GenerateDiskConfig ¶ added in v0.8.1
type GenerateDiskConfig func(string) (*util.DiskConfig, error)
type GetDiskConfig ¶ added in v0.8.1
type GetDiskConfig func(string) (*util.DiskConfig, error)
type InstanceHandler ¶
type InstanceHandler struct {
// contains filtered or unexported fields
}
InstanceHandler can handle the state transition of correlated instance and engine/replica object. It assumed the instance it's going to operate with is using the SAME NAME from the engine/replica object
func NewInstanceHandler ¶
func NewInstanceHandler(ds *datastore.DataStore, instanceManagerHandler InstanceManagerHandler, eventRecorder record.EventRecorder) *InstanceHandler
func (*InstanceHandler) ReconcileInstanceState ¶
func (h *InstanceHandler) ReconcileInstanceState(obj interface{}, spec *types.InstanceSpec, status *types.InstanceStatus) (err error)
type InstanceManagerController ¶ added in v0.6.0
type InstanceManagerController struct {
// contains filtered or unexported fields
}
func NewInstanceManagerController ¶ added in v0.6.0
func NewInstanceManagerController( ds *datastore.DataStore, scheme *runtime.Scheme, imInformer lhinformers.InstanceManagerInformer, pInformer coreinformers.PodInformer, kubeClient clientset.Interface, namespace, controllerID, serviceAccount string) *InstanceManagerController
func (*InstanceManagerController) Run ¶ added in v0.6.0
func (imc *InstanceManagerController) Run(workers int, stopCh <-chan struct{})
type InstanceManagerHandler ¶ added in v0.6.0
type InstanceManagerHandler interface { GetInstance(obj interface{}) (*types.InstanceProcess, error) CreateInstance(obj interface{}) (*types.InstanceProcess, error) DeleteInstance(obj interface{}) error LogInstance(obj interface{}) (*imapi.LogStream, error) }
type InstanceManagerMonitor ¶ added in v0.6.0
type InstanceManagerMonitor struct { Name string // contains filtered or unexported fields }
func (*InstanceManagerMonitor) Run ¶ added in v0.6.0
func (m *InstanceManagerMonitor) Run()
type InstanceManagerNotifier ¶ added in v0.6.0
type InstanceManagerNotifier struct {
// contains filtered or unexported fields
}
func NewInstanceManagerNotifier ¶ added in v0.8.0
func NewInstanceManagerNotifier(stream *api.ProcessStream) *InstanceManagerNotifier
func (*InstanceManagerNotifier) Close ¶ added in v0.6.0
func (notifier *InstanceManagerNotifier) Close()
func (*InstanceManagerNotifier) Recv ¶ added in v0.6.0
func (notifier *InstanceManagerNotifier) Recv() (struct{}, error)
type InstanceManagerUpdater ¶ added in v0.6.0
type InstanceManagerUpdater struct {
// contains filtered or unexported fields
}
func NewInstanceManagerUpdater ¶ added in v0.8.0
func NewInstanceManagerUpdater(im *longhorn.InstanceManager) *InstanceManagerUpdater
func (*InstanceManagerUpdater) GetNotifier ¶ added in v0.6.0
func (updater *InstanceManagerUpdater) GetNotifier() (*InstanceManagerNotifier, error)
func (*InstanceManagerUpdater) Poll ¶ added in v0.6.0
func (updater *InstanceManagerUpdater) Poll() (map[string]types.InstanceProcess, error)
type KubernetesNodeController ¶ added in v0.8.1
type KubernetesNodeController struct {
// contains filtered or unexported fields
}
func NewKubernetesNodeController ¶ added in v0.8.1
func NewKubernetesNodeController( ds *datastore.DataStore, scheme *runtime.Scheme, nodeInformer lhinformers.NodeInformer, settingInformer lhinformers.SettingInformer, kubeNodeInformer coreinformers.NodeInformer, kubeClient clientset.Interface, controllerID string) *KubernetesNodeController
func (*KubernetesNodeController) Run ¶ added in v0.8.1
func (knc *KubernetesNodeController) Run(workers int, stopCh <-chan struct{})
type KubernetesPVController ¶ added in v0.8.1
type KubernetesPVController struct {
// contains filtered or unexported fields
}
func NewKubernetesPVController ¶ added in v0.8.1
func NewKubernetesPVController( ds *datastore.DataStore, scheme *runtime.Scheme, volumeInformer lhinformers.VolumeInformer, persistentVolumeInformer coreinformers.PersistentVolumeInformer, persistentVolumeClaimInformer coreinformers.PersistentVolumeClaimInformer, podInformer coreinformers.PodInformer, volumeAttachmentInformer v1beta1.VolumeAttachmentInformer, kubeClient clientset.Interface, controllerID string) *KubernetesPVController
func (*KubernetesPVController) Run ¶ added in v0.8.1
func (kc *KubernetesPVController) Run(workers int, stopCh <-chan struct{})
type NodeController ¶
type NodeController struct {
// contains filtered or unexported fields
}
func NewNodeController ¶
func NewNodeController( ds *datastore.DataStore, scheme *runtime.Scheme, nodeInformer lhinformers.NodeInformer, settingInformer lhinformers.SettingInformer, podInformer coreinformers.PodInformer, replicaInformer lhinformers.ReplicaInformer, kubeNodeInformer coreinformers.NodeInformer, kubeClient clientset.Interface, namespace, controllerID string) *NodeController
func (*NodeController) Run ¶
func (nc *NodeController) Run(workers int, stopCh <-chan struct{})
type ReplicaController ¶
type ReplicaController struct {
// contains filtered or unexported fields
}
func NewReplicaController ¶
func NewReplicaController( ds *datastore.DataStore, scheme *runtime.Scheme, replicaInformer lhinformers.ReplicaInformer, instanceManagerInformer lhinformers.InstanceManagerInformer, kubeClient clientset.Interface, namespace string, controllerID string) *ReplicaController
func (*ReplicaController) CreateInstance ¶ added in v0.6.0
func (rc *ReplicaController) CreateInstance(obj interface{}) (*types.InstanceProcess, error)
func (*ReplicaController) DeleteInstance ¶ added in v0.6.0
func (rc *ReplicaController) DeleteInstance(obj interface{}) error
func (*ReplicaController) GetInstance ¶ added in v0.6.0
func (rc *ReplicaController) GetInstance(obj interface{}) (*types.InstanceProcess, error)
func (*ReplicaController) LogInstance ¶ added in v0.6.0
func (rc *ReplicaController) LogInstance(obj interface{}) (*imapi.LogStream, error)
func (*ReplicaController) Run ¶
func (rc *ReplicaController) Run(workers int, stopCh <-chan struct{})
type SettingController ¶ added in v0.3.2
type SettingController struct {
// contains filtered or unexported fields
}
func NewSettingController ¶ added in v0.3.2
func NewSettingController( ds *datastore.DataStore, scheme *runtime.Scheme, settingInformer lhinformers.SettingInformer, kubeClient clientset.Interface, version string) *SettingController
func (*SettingController) CheckLatestLonghornVersion ¶ added in v0.3.2
func (sc *SettingController) CheckLatestLonghornVersion() (string, error)
func (*SettingController) Run ¶ added in v0.3.2
func (sc *SettingController) Run(stopCh <-chan struct{})
type SimpleResourceEventHandler ¶
type SimpleResourceEventHandler struct{ ChangeFunc func() }
func (SimpleResourceEventHandler) OnAdd ¶
func (s SimpleResourceEventHandler) OnAdd(obj interface{})
func (SimpleResourceEventHandler) OnDelete ¶
func (s SimpleResourceEventHandler) OnDelete(obj interface{})
func (SimpleResourceEventHandler) OnUpdate ¶
func (s SimpleResourceEventHandler) OnUpdate(oldObj, newObj interface{})
type TopologyLabelsChecker ¶ added in v0.8.0
type UninstallController ¶ added in v0.3.2
type UninstallController struct {
// contains filtered or unexported fields
}
func NewUninstallController ¶ added in v0.3.2
func NewUninstallController( namespace string, force bool, ds *datastore.DataStore, stopCh chan struct{}, extensionsClient apiextension.Interface, volumeInformer lhinformers.VolumeInformer, engineInformer lhinformers.EngineInformer, replicaInformer lhinformers.ReplicaInformer, engineImageInformer lhinformers.EngineImageInformer, nodeInformer lhinformers.NodeInformer, imInformer lhinformers.InstanceManagerInformer, daemonSetInformer appsv1.DaemonSetInformer, ) *UninstallController
func (*UninstallController) Run ¶ added in v0.3.2
func (c *UninstallController) Run() error
type VolumeController ¶
type VolumeController struct { ManagerImage string ServiceAccount string // contains filtered or unexported fields }
func NewVolumeController ¶
func NewVolumeController( ds *datastore.DataStore, scheme *runtime.Scheme, volumeInformer lhinformers.VolumeInformer, engineInformer lhinformers.EngineInformer, replicaInformer lhinformers.ReplicaInformer, kubeClient clientset.Interface, namespace, controllerID, serviceAccount string, managerImage string) *VolumeController
func (*VolumeController) ReconcileEngineReplicaState ¶
func (vc *VolumeController) ReconcileEngineReplicaState(v *longhorn.Volume, e *longhorn.Engine, rs map[string]*longhorn.Replica) (err error)
ReconcileEngineReplicaState will get the current main engine e.Status.ReplicaModeMap and e.Status.RestoreStatus, then update v and rs accordingly.
func (*VolumeController) ReconcileVolumeState ¶
func (vc *VolumeController) ReconcileVolumeState(v *longhorn.Volume, es map[string]*longhorn.Engine, rs map[string]*longhorn.Replica) (err error)
ReconcileVolumeState handles the attaching and detaching of volume
func (*VolumeController) ResolveRefAndEnqueue ¶
func (vc *VolumeController) ResolveRefAndEnqueue(namespace string, ref *metav1.OwnerReference)
func (*VolumeController) Run ¶
func (vc *VolumeController) Run(workers int, stopCh <-chan struct{})
type WebsocketController ¶
type WebsocketController struct {
// contains filtered or unexported fields
}
func NewWebsocketController ¶
func NewWebsocketController( volumeInformer lhinformers.VolumeInformer, engineInformer lhinformers.EngineInformer, replicaInformer lhinformers.ReplicaInformer, settingInformer lhinformers.SettingInformer, engineImageInformer lhinformers.EngineImageInformer, nodeInformer lhinformers.NodeInformer, ) *WebsocketController
func StartControllers ¶
func StartControllers(stopCh chan struct{}, controllerID, serviceAccount, managerImage, kubeconfigPath, version string) (*datastore.DataStore, *WebsocketController, error)
func (*WebsocketController) Close ¶
func (wc *WebsocketController) Close()
func (*WebsocketController) NewWatcher ¶
func (wc *WebsocketController) NewWatcher(resources ...string) *Watcher
func (*WebsocketController) Run ¶
func (wc *WebsocketController) Run(stopCh <-chan struct{})
Source Files ¶
- controller_manager.go
- engine_controller.go
- engine_image_controller.go
- events.go
- instance_handler.go
- instance_manager_controller.go
- kubernetes_node_controller.go
- kubernetes_pv_controller.go
- node_controller.go
- replica_controller.go
- setting_controller.go
- uninstall_controller.go
- volume_controller.go
- websocket_controller.go
Click to show internal directories.
Click to hide internal directories.