controller

package
v1.0.0-rc1 Latest Latest
Warning

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

Go to latest
Published: May 19, 2020 License: Apache-2.0 Imports: 59 Imported by: 2

Documentation

Index

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 CheckUpgradeRequest struct {
	LonghornVersion   string `json:"longhornVersion"`
	KubernetesVersion string `json:"kubernetesVersion"`
}

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 GetDiskInfoHandler

type GetDiskInfoHandler func(string) (*util.DiskInfo, 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 TopologyLabelsChecker func(kubeClient clientset.Interface, vers string) (bool, error)

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 Version added in v0.3.2

type Version struct {
	Name        string // must be in semantic versioning
	ReleaseDate string
	Tags        []string
}

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 Watcher

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

func (*Watcher) Close

func (w *Watcher) Close()

func (*Watcher) Events

func (w *Watcher) Events() <-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{})

Jump to

Keyboard shortcuts

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