controller

package
v1.6.0-dev-20231217 Latest Latest
Warning

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

Go to latest
Published: Dec 17, 2023 License: Apache-2.0 Imports: 77 Imported by: 2

Documentation

Index

Constants

View Source
const (
	VersionTagLatest = "latest"
	VersionTagStable = "stable"
)
View Source
const (
	ClusterInfoNamespaceUID = util.StructName("LonghornNamespaceUid")
	ClusterInfoNodeCount    = util.StructName("LonghornNodeCount")

	ClusterInfoVolumeAvgActualSize    = util.StructName("LonghornVolumeAverageActualSizeBytes")
	ClusterInfoVolumeAvgSize          = util.StructName("LonghornVolumeAverageSizeBytes")
	ClusterInfoVolumeAvgSnapshotCount = util.StructName("LonghornVolumeAverageSnapshotCount")
	ClusterInfoVolumeAvgNumOfReplicas = util.StructName("LonghornVolumeAverageNumberOfReplicas")

	ClusterInfoPodAvgCPUUsageFmt                         = "Longhorn%sAverageCpuUsageMilliCores"
	ClusterInfoPodAvgMemoryUsageFmt                      = "Longhorn%sAverageMemoryUsageBytes"
	ClusterInfoSettingFmt                                = "LonghornSetting%s"
	ClusterInfoVolumeAccessModeCountFmt                  = "LonghornVolumeAccessMode%sCount"
	ClusterInfoVolumeBackendStoreDriverCountFmt          = "LonghornVolumeBackendStoreDriver%sCount"
	ClusterInfoVolumeDataLocalityCountFmt                = "LonghornVolumeDataLocality%sCount"
	ClusterInfoVolumeFrontendCountFmt                    = "LonghornVolumeFrontend%sCount"
	ClusterInfoVolumeOfflineReplicaRebuildingCountFmt    = "LonghornVolumeOfflineReplicaRebuilding%sCount"
	ClusterInfoVolumeReplicaAutoBalanceCountFmt          = "LonghornVolumeReplicaAutoBalance%sCount"
	ClusterInfoVolumeReplicaSoftAntiAffinityCountFmt     = "LonghornVolumeReplicaSoftAntiAffinity%sCount"
	ClusterInfoVolumeReplicaZoneSoftAntiAffinityCountFmt = "LonghornVolumeReplicaZoneSoftAntiAffinity%sCount"
	ClusterInfoVolumeReplicaDiskSoftAntiAffinityCountFmt = "LonghornVolumeReplicaDiskSoftAntiAffinity%sCount"
	ClusterInfoVolumeRestoreVolumeRecurringJobCountFmt   = "LonghornVolumeRestoreVolumeRecurringJob%sCount"
	ClusterInfoVolumeSnapshotDataIntegrityCountFmt       = "LonghornVolumeSnapshotDataIntegrity%sCount"
	ClusterInfoVolumeUnmapMarkSnapChainRemovedCountFmt   = "LonghornVolumeUnmapMarkSnapChainRemoved%sCount"
)

Cluster Scope Info: will be sent from one of the Longhorn cluster nodes

View Source
const (
	ClusterInfoKubernetesVersion      = util.StructName("KubernetesVersion")
	ClusterInfoKubernetesNodeProvider = util.StructName("KubernetesNodeProvider")

	ClusterInfoHostKernelRelease = util.StructName("HostKernelRelease")
	ClusterInfoHostOsDistro      = util.StructName("HostOsDistro")

	ClusterInfoDiskCountFmt     = "LonghornDisk%sCount"
	ClusterInfoNodeDiskCountFmt = "LonghornNodeDisk%sCount"
)

Node Scope Info: will be sent from all Longhorn cluster nodes

View Source
const (
	SupportBundleServiceAccount = "longhorn-support-bundle"

	SupportBundleRequeueDelay = time.Second

	SupportBundleMsgRequeueOnConflictFmt = "Requeue %v due to conflict"
	SupportBundleMsgRequeueNextPhaseFmt  = "Requeue %v for next phase: %v"

	SupportBundleMsgManagerPhase = "Support bundle manager updated phase: %v"

	SupportBundleMsgDeleting = "Deleting support bundle manager"
	SupportBundleMsgPurging  = "Purging failed support bundle"
)
View Source
const (
	SystemBackupControllerName = "longhorn-system-backup"

	SystemBackupTempDir = "/tmp"

	SystemBackupErrArchive       = "failed to archive system backup file"
	SystemBackupErrDelete        = "failed to delete system backup in backup target"
	SystemBackupErrGenerate      = "failed to generate system backup file"
	SystemBackupErrGenerateYAML  = "failed to generate resource YAMLs"
	SystemBackupErrGetFmt        = "failed to get %v"
	SystemBackupErrGetConfig     = "failed to get system backup config"
	SystemBackupErrMkdir         = "failed to create system backup file directory"
	SystemBackupErrRemoveAll     = "failed to remove system backup directory"
	SystemBackupErrRemove        = "failed to remove system backup file"
	SystemBackupErrOSStat        = "failed to compute system backup file size"
	SystemBackupErrSync          = "failed to sync from backup target"
	SystemBackupErrTimeoutUpload = "timeout uploading system backup"
	SystemBackupErrUpload        = "failed to upload system backup file"
	SystemBackupErrVolumeBackup  = "failed to backup volumes"

	SystemBackupMsgCreatedArchieveFmt  = "Created system backup file: %v"
	SystemBackupMsgDeletingRemote      = "Deleting system backup in backup target"
	SystemBackupMsgDeleted             = "Deleted system backup"
	SystemBackupMsgRequeueNextPhaseFmt = "Requeue %v for next phase: %v"
	SystemBackupMsgStarting            = "Starting system backup"
	SystemBackupMsgSyncedBackupTarget  = "Synced system backup from backup target"
	SystemBackupMsgSyncingBackupTarget = "Syncing system backup from backup target"
	SystemBackupMsgUploadBackupTarget  = "Uploaded system backup to backup target"
)
View Source
const (
	SystemRestoreControllerName = "longhorn-system-restore"

	RestoreJobBackoffLimit = 3

	SystemRestoreErrJobCreate     = "failed to create system restore Job"
	SystemRestoreMsgJobCreatedFmt = "Created system restore Job %v"
	SystemRestoreMsgDeleting      = "Deleting SystemRestore"
)
View Source
const (
	SystemRolloutControllerName = "longhorn-system-rollout"
	SystemRolloutNamePrefix     = "longhorn-system-rollout-"

	SystemRolloutErrFailedConvertToObjectFmt = "failed converting %v to %v object"
	SystemRolloutErrFailedToCreateFmt        = "failed to create item: %v %v"
	SystemRolloutErrMissingDependencyFmt     = "cannot rollout %v due to missing dependency: %v %v"

	SystemRolloutMsgDownloadedFmt       = "Downloaded from %v"
	SystemRolloutMsgIdentical           = "identical"
	SystemRolloutMsgInitializedFmt      = "Initialized system rollout for %v"
	SystemRolloutMsgRestoringFmt        = "Restoring %v"
	SystemRolloutMsgRequeueNextPhaseFmt = "Requeue for next phase: %v"
	SystemRolloutMsgRequeueDueToFmt     = "Requeue due to %v"
	SystemRolloutMsgUnpackedFmt         = "Unpacked %v"

	SystemRolloutMsgCompleted       = "System rollout completed"
	SystemRolloutMsgCreating        = "System rollout creating"
	SystemRolloutMsgIgnoreItemFmt   = "System rollout ignoring item: %v"
	SystemRolloutMsgRestoredItem    = "System rollout restored item"
	SystemRolloutMsgRestoredKindFmt = "System rollout restored Kind: %v"
	SystemRolloutMsgUpdating        = "System rollout updating"
)
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"
	CRDShareManagerName           = "sharemanagers.longhorn.io"
	CRDBackingImageName           = "backingimages.longhorn.io"
	CRDBackingImageManagerName    = "backingimagemanagers.longhorn.io"
	CRDBackingImageDataSourceName = "backingimagedatasources.longhorn.io"
	CRDBackupTargetName           = "backuptargets.longhorn.io"
	CRDBackupVolumeName           = "backupvolumes.longhorn.io"
	CRDBackupName                 = "backups.longhorn.io"
	CRDRecurringJobName           = "recurringjobs.longhorn.io"
	CRDOrphanName                 = "orphans.longhorn.io"
	CRDSnapshotName               = "snapshots.longhorn.io"

	EnvLonghornNamespace = "LONGHORN_NAMESPACE"
)
View Source
const (
	CronJobBackoffLimit             = 3
	VolumeSnapshotsWarningThreshold = 100

	LastAppliedCronJobSpecAnnotationKeySuffix = "last-applied-cronjob-spec"
)
View Source
const (
	BackingImageDataSourcePodContainerName = "backing-image-data-source"
)
View Source
const (
	BackingImageManagerPodContainerName = "backing-image-manager"
)
View Source
const (
	ConflictRetryCount = 5
)

Variables

View Source
var (
	EnginePollInterval = 5 * time.Second
	EnginePollTimeout  = 30 * time.Second

	EngineMonitorConflictRetryCount = 5
)
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 BackingImageDiskFileCleanup added in v1.2.0

func BackingImageDiskFileCleanup(node *longhorn.Node, bi *longhorn.BackingImage, bids *longhorn.BackingImageDataSource, waitInterval time.Duration, haRequirement int)

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 GetBinaryClientForEngine added in v1.3.0

func GetBinaryClientForEngine(e *longhorn.Engine, engines engineapi.EngineClientCollection, image string) (client *engineapi.EngineBinary, err error)

func GetInstanceManagerCPURequirement added in v1.1.1

func GetInstanceManagerCPURequirement(ds *datastore.DataStore, imName string) (*corev1.ResourceRequirements, error)

func GetSupportBundleManagerName added in v1.4.0

func GetSupportBundleManagerName(supportBundle *longhorn.SupportBundle) string

func IsRebuildingReplica added in v1.2.1

func IsRebuildingReplica(r *longhorn.Replica) bool

func IsSameGuaranteedCPURequirement added in v1.0.0

func IsSameGuaranteedCPURequirement(a, b *corev1.ResourceRequirements) bool

func IsValidForExpansion added in v1.4.0

func IsValidForExpansion(engine *longhorn.Engine, cliAPIVersion, imAPIVersion int) (bool, error)

func ParseResourceRequirement added in v1.1.1

func ParseResourceRequirement(val string) (*corev1.ResourceRequirements, error)

Types

type BackingImageController added in v1.1.1

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

func NewBackingImageController added in v1.1.1

func NewBackingImageController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	namespace string, controllerID, serviceAccount, backingImageManagerImage string) *BackingImageController

func (*BackingImageController) IsBackingImageDataSourceCleaned added in v1.3.3

func (bic *BackingImageController) IsBackingImageDataSourceCleaned(bi *longhorn.BackingImage) (cleaned bool, err error)

func (*BackingImageController) Run added in v1.1.1

func (bic *BackingImageController) Run(workers int, stopCh <-chan struct{})

type BackingImageDataSourceController added in v1.2.0

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

func NewBackingImageDataSourceController added in v1.2.0

func NewBackingImageDataSourceController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	namespace, controllerID, serviceAccount, imageManagerImage string,
	proxyConnCounter util.Counter,
) *BackingImageDataSourceController

func (*BackingImageDataSourceController) Run added in v1.2.0

func (c *BackingImageDataSourceController) Run(workers int, stopCh <-chan struct{})

type BackingImageDataSourceMonitor added in v1.2.0

type BackingImageDataSourceMonitor struct {
	Name string
	// contains filtered or unexported fields
}

type BackingImageManagerController added in v1.1.1

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

func NewBackingImageManagerController added in v1.1.1

func NewBackingImageManagerController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	namespace, controllerID, serviceAccount, backingImageManagerImage string) *BackingImageManagerController

func (*BackingImageManagerController) Run added in v1.1.1

func (c *BackingImageManagerController) Run(workers int, stopCh <-chan struct{})

type BackingImageManagerMonitor added in v1.1.1

type BackingImageManagerMonitor struct {
	Name string
	// contains filtered or unexported fields
}

func (*BackingImageManagerMonitor) Run added in v1.1.1

func (m *BackingImageManagerMonitor) Run()

type BackupController added in v1.2.0

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

func NewBackupController added in v1.2.0

func NewBackupController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string,
	namespace string,
	proxyConnCounter util.Counter,
) *BackupController

func (*BackupController) Run added in v1.2.0

func (bc *BackupController) Run(workers int, stopCh <-chan struct{})

func (*BackupController) VerifyAttachment added in v1.5.0

func (bc *BackupController) VerifyAttachment(backup *longhorn.Backup, volumeName string) (bool, error)

VerifyAttachment check the volume attachment ticket for this backup is satisfied

type BackupStoreTimer added in v1.2.0

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

func (*BackupStoreTimer) Start added in v1.2.0

func (bst *BackupStoreTimer) Start()

func (*BackupStoreTimer) Stop added in v1.2.0

func (bst *BackupStoreTimer) Stop()

type BackupTargetController added in v1.2.0

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

func NewBackupTargetController added in v1.2.0

func NewBackupTargetController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string,
	namespace string,
	proxyConnCounter util.Counter) *BackupTargetController

func (*BackupTargetController) Run added in v1.2.0

func (btc *BackupTargetController) Run(workers int, stopCh <-chan struct{})

type BackupVolumeController added in v1.2.0

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

func NewBackupVolumeController added in v1.2.0

func NewBackupVolumeController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string,
	namespace string,
	proxyConnCounter util.Counter,
) *BackupVolumeController

func (*BackupVolumeController) Run added in v1.2.0

func (bvc *BackupVolumeController) Run(workers int, stopCh <-chan struct{})

type CheckUpgradeExtraInfo added in v1.5.0

type CheckUpgradeExtraInfo interface {
}

type CheckUpgradeRequest added in v0.3.2

type CheckUpgradeRequest struct {
	AppVersion string `json:"appVersion"`

	ExtraTagInfo   CheckUpgradeExtraInfo `json:"extraTagInfo"`
	ExtraFieldInfo CheckUpgradeExtraInfo `json:"extraFieldInfo"`
}

type CheckUpgradeResponse added in v0.3.2

type CheckUpgradeResponse struct {
	Versions []Version `json:"versions"`
}

type ClusterInfo added in v1.5.0

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

ClusterInfo struct is used to collect information about the cluster. This provides additional usage metrics to https://metrics.longhorn.io.

type ClusterInfoStructFields added in v1.5.0

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

type EngineController

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

func NewEngineController

func NewEngineController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	engines engineapi.EngineClientCollection,
	namespace string, controllerID string,
	proxyConnCounter util.Counter) *EngineController

func (*EngineController) CreateInstance added in v0.6.0

func (ec *EngineController) CreateInstance(obj interface{}) (*longhorn.InstanceProcess, error)

func (*EngineController) DeleteInstance added in v0.6.0

func (ec *EngineController) DeleteInstance(obj interface{}) (err error)

func (*EngineController) GetInstance added in v0.6.0

func (ec *EngineController) GetInstance(obj interface{}) (*longhorn.InstanceProcess, error)

func (*EngineController) LogInstance added in v0.6.0

func (ec *EngineController) LogInstance(ctx context.Context, obj interface{}) (*engineapi.InstanceManagerClient, *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, log *logrus.Entry) (err error)

func (*EngineController) UpgradeEngineInstance added in v1.5.0

func (ec *EngineController) UpgradeEngineInstance(e *longhorn.Engine, log *logrus.Entry) error

type EngineImageController

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

func NewEngineImageController

func NewEngineImageController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	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 GetRuntimeObjectListFunc added in v1.4.0

type GetRuntimeObjectListFunc func() (runtime.Object, 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 *longhorn.InstanceSpec, status *longhorn.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(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	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{}) (*longhorn.InstanceProcess, error)
	CreateInstance(obj interface{}) (*longhorn.InstanceProcess, error)
	DeleteInstance(obj interface{}) error
	LogInstance(ctx context.Context, obj interface{}) (*engineapi.InstanceManagerClient, *imapi.LogStream, error)
}

type InstanceManagerMonitor added in v0.6.0

type InstanceManagerMonitor struct {
	Name string
	// contains filtered or unexported fields
}

func (*InstanceManagerMonitor) CheckMonitorStoppedWithLock added in v1.1.2

func (m *InstanceManagerMonitor) CheckMonitorStoppedWithLock() bool

func (*InstanceManagerMonitor) Run added in v0.6.0

func (m *InstanceManagerMonitor) Run()

func (*InstanceManagerMonitor) StopMonitorWithLock added in v1.1.2

func (m *InstanceManagerMonitor) StopMonitorWithLock()

type KubernetesConfigMapController added in v1.1.0

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

func NewKubernetesConfigMapController added in v1.1.0

func NewKubernetesConfigMapController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string,
	namespace string) *KubernetesConfigMapController

func (*KubernetesConfigMapController) Run added in v1.1.0

func (kc *KubernetesConfigMapController) Run(workers int, stopCh <-chan struct{})

type KubernetesNodeController added in v0.8.1

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

func NewKubernetesNodeController added in v0.8.1

func NewKubernetesNodeController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string) *KubernetesNodeController

func (*KubernetesNodeController) Run added in v0.8.1

func (knc *KubernetesNodeController) Run(workers int, stopCh <-chan struct{})

type KubernetesPDBController added in v1.3.3

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

func NewKubernetesPDBController added in v1.3.3

func NewKubernetesPDBController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	kubeClient clientset.Interface,
	controllerID string,
	namespace string) *KubernetesPDBController

func (*KubernetesPDBController) Run added in v1.3.3

func (pc *KubernetesPDBController) 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(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string) *KubernetesPVController

func (*KubernetesPVController) Run added in v0.8.1

func (kc *KubernetesPVController) Run(workers int, stopCh <-chan struct{})

type KubernetesPodController added in v1.1.0

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

func NewKubernetesPodController added in v1.1.0

func NewKubernetesPodController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string) *KubernetesPodController

func (*KubernetesPodController) Run added in v1.1.0

func (kc *KubernetesPodController) Run(workers int, stopCh <-chan struct{})

type KubernetesSecretController added in v1.1.1

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

func NewKubernetesSecretController added in v1.1.1

func NewKubernetesSecretController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string,
	namespace string) *KubernetesSecretController

func (*KubernetesSecretController) Run added in v1.1.1

func (ks *KubernetesSecretController) Run(workers int, stopCh <-chan struct{})

type NodeController

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

func NewNodeController

func NewNodeController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	namespace, controllerID string) *NodeController

func (*NodeController) Run

func (nc *NodeController) Run(workers int, stopCh <-chan struct{})

type OrphanController added in v1.3.0

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

func NewOrphanController added in v1.3.0

func NewOrphanController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string,
	namespace string) *OrphanController

func (*OrphanController) DeleteSpdkReplicaInstance added in v1.5.0

func (oc *OrphanController) DeleteSpdkReplicaInstance(diskName, diskUUID, replicaInstanceName string) (err error)

func (*OrphanController) Run added in v1.3.0

func (oc *OrphanController) Run(workers int, stopCh <-chan struct{})

type RecurringJobController added in v1.2.0

type RecurringJobController struct {
	ManagerImage string
	// contains filtered or unexported fields
}

func NewRecurringJobController added in v1.2.0

func NewRecurringJobController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	namespace, controllerID, serviceAccount, managerImage string,
) *RecurringJobController

func (*RecurringJobController) Run added in v1.2.0

func (c *RecurringJobController) Run(workers int, stopCh <-chan struct{})

type ReplicaController

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

func NewReplicaController

func NewReplicaController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	namespace string, controllerID string) *ReplicaController

func (*ReplicaController) CanStartRebuildingReplica added in v1.2.1

func (rc *ReplicaController) CanStartRebuildingReplica(r *longhorn.Replica) (bool, error)

func (*ReplicaController) CreateInstance added in v0.6.0

func (rc *ReplicaController) CreateInstance(obj interface{}) (*longhorn.InstanceProcess, error)

func (*ReplicaController) DeleteInstance added in v0.6.0

func (rc *ReplicaController) DeleteInstance(obj interface{}) error

func (*ReplicaController) GetBackingImagePathForReplicaStarting added in v1.2.1

func (rc *ReplicaController) GetBackingImagePathForReplicaStarting(r *longhorn.Replica) (string, error)

func (*ReplicaController) GetInstance added in v0.6.0

func (rc *ReplicaController) GetInstance(obj interface{}) (*longhorn.InstanceProcess, error)

func (*ReplicaController) LogInstance added in v0.6.0

func (rc *ReplicaController) LogInstance(ctx context.Context, obj interface{}) (*engineapi.InstanceManagerClient, *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(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	metricsClient metricsclientset.Interface,
	namespace, controllerID, version string) *SettingController

func (*SettingController) CheckLatestAndStableLonghornVersions added in v1.2.1

func (sc *SettingController) CheckLatestAndStableLonghornVersions() (string, string, error)

func (*SettingController) GetCheckUpgradeRequestExtraInfo added in v1.5.0

func (sc *SettingController) GetCheckUpgradeRequestExtraInfo() (extraTagInfo CheckUpgradeExtraInfo, extraFieldInfo CheckUpgradeExtraInfo, err error)

func (*SettingController) Run added in v0.3.2

func (sc *SettingController) Run(stopCh <-chan struct{})

type ShareManagerController added in v1.1.0

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

func NewShareManagerController added in v1.1.0

func NewShareManagerController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,

	kubeClient clientset.Interface,
	namespace, controllerID, serviceAccount string) *ShareManagerController

func (*ShareManagerController) Run added in v1.1.0

func (c *ShareManagerController) Run(workers int, stopCh <-chan struct{})

type SimpleResourceEventHandler

type SimpleResourceEventHandler struct{ ChangeFunc func() }

func (SimpleResourceEventHandler) OnAdd

func (s SimpleResourceEventHandler) OnAdd(obj interface{}, isInInitialList bool)

func (SimpleResourceEventHandler) OnDelete

func (s SimpleResourceEventHandler) OnDelete(obj interface{})

func (SimpleResourceEventHandler) OnUpdate

func (s SimpleResourceEventHandler) OnUpdate(oldObj, newObj interface{})

type SnapshotController added in v1.3.0

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

func NewSnapshotController added in v1.3.0

func NewSnapshotController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	namespace string,
	controllerID string,
	engineClientCollection engineapi.EngineClientCollection,
	proxyConnCounter util.Counter,
) *SnapshotController

func (*SnapshotController) Run added in v1.3.0

func (sc *SnapshotController) Run(workers int, stopCh <-chan struct{})

type SupportBundleController added in v1.4.0

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

func NewSupportBundleController added in v1.4.0

func NewSupportBundleController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string,
	namespace, serviceAccount string) *SupportBundleController

func (*SupportBundleController) Run added in v1.4.0

func (c *SupportBundleController) Run(workers int, stopCh <-chan struct{})

type SupportBundleManager added in v1.4.0

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

type SupportBundleManagerPhase added in v1.4.0

type SupportBundleManagerPhase string

type SupportBundleManagerStatus added in v1.4.0

type SupportBundleManagerStatus struct {
	Phase        SupportBundleManagerPhase
	Error        bool
	ErrorMessage string
	Progress     int
	FileName     string
	FileSize     int64
}

type SystemBackupController added in v1.4.0

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

func NewSystemBackupController added in v1.4.0

func NewSystemBackupController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	namespace string,
	controllerID string,
	managerImage string) *SystemBackupController

func (*SystemBackupController) BackupVolumes added in v1.5.0

func (c *SystemBackupController) BackupVolumes(systemBackup *longhorn.SystemBackup) (map[string]*longhorn.Backup, error)

func (*SystemBackupController) GenerateSystemBackup added in v1.4.0

func (c *SystemBackupController) GenerateSystemBackup(systemBackup *longhorn.SystemBackup, archievePath, tempDir string)

func (*SystemBackupController) InitSystemBackup added in v1.4.0

func (c *SystemBackupController) InitSystemBackup(systemBackup *longhorn.SystemBackup, log logrus.FieldLogger) error

func (*SystemBackupController) LogErrorState added in v1.4.0

func (c *SystemBackupController) LogErrorState(record *systemBackupRecord, systemBackup *longhorn.SystemBackup, log logrus.FieldLogger)

func (*SystemBackupController) LogNormalState added in v1.4.0

func (c *SystemBackupController) LogNormalState(record *systemBackupRecord, systemBackup *longhorn.SystemBackup, log logrus.FieldLogger)

func (*SystemBackupController) Run added in v1.4.0

func (c *SystemBackupController) Run(workers int, stopCh <-chan struct{})

func (*SystemBackupController) UploadSystemBackup added in v1.4.0

func (c *SystemBackupController) UploadSystemBackup(systemBackup *longhorn.SystemBackup, archievePath, tempDir string, backupTargetClient engineapi.SystemBackupOperationInterface)

func (*SystemBackupController) WaitForVolumeBackupToComplete added in v1.5.0

func (c *SystemBackupController) WaitForVolumeBackupToComplete(backups map[string]*longhorn.Backup, systemBackup *longhorn.SystemBackup) (err error)

type SystemRestoreController added in v1.4.0

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

func NewSystemRestoreController added in v1.4.0

func NewSystemRestoreController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	namespace string,
	controllerID string) *SystemRestoreController

func (*SystemRestoreController) CreateSystemRestoreJob added in v1.4.0

func (c *SystemRestoreController) CreateSystemRestoreJob(systemRestore *longhorn.SystemRestore, backupTargetClient engineapi.SystemBackupOperationInterface) (*batchv1.Job, error)

func (*SystemRestoreController) LogErrorState added in v1.4.0

func (c *SystemRestoreController) LogErrorState(record *systemRestoreRecord, systemRestore *longhorn.SystemRestore, log logrus.FieldLogger)

func (*SystemRestoreController) LogNormalState added in v1.4.0

func (c *SystemRestoreController) LogNormalState(record *systemRestoreRecord, systemRestore *longhorn.SystemRestore, log logrus.FieldLogger)

func (*SystemRestoreController) Run added in v1.4.0

func (c *SystemRestoreController) Run(workers int, stopCh <-chan struct{})

type SystemRolloutController added in v1.4.0

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

func NewSystemRolloutController added in v1.4.0

func NewSystemRolloutController(
	systemRestoreName string,
	logger logrus.FieldLogger,
	controllerID string,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	stopCh chan struct{},
	kubeClient clientset.Interface,
	extensionsClient apiextensionsclientset.Interface,
) *SystemRolloutController

func (*SystemRolloutController) Download added in v1.4.0

func (*SystemRolloutController) GetSystemBackupURL added in v1.4.0

func (c *SystemRolloutController) GetSystemBackupURL() (string, error)

func (*SystemRolloutController) Run added in v1.4.0

func (c *SystemRolloutController) Run() error

func (*SystemRolloutController) Unpack added in v1.4.0

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(
	logger logrus.FieldLogger,
	namespace string,
	force bool,
	ds *datastore.DataStore,
	stopCh chan struct{},
	kubeClient clientset.Interface,
	extensionsClient apiextensionsclientset.Interface,
) *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 VolumeAttachmentController added in v1.5.0

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

func NewLonghornVolumeAttachmentController added in v1.5.0

func NewLonghornVolumeAttachmentController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string,
	namespace string) *VolumeAttachmentController

func (*VolumeAttachmentController) Run added in v1.5.0

func (vac *VolumeAttachmentController) Run(workers int, stopCh <-chan struct{})

type VolumeCloneController added in v1.5.0

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

func NewVolumeCloneController added in v1.5.0

func NewVolumeCloneController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string,
	namespace string,
) *VolumeCloneController

func (*VolumeCloneController) Run added in v1.5.0

func (vcc *VolumeCloneController) Run(workers int, stopCh <-chan struct{})

type VolumeController

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

func NewVolumeController

func NewVolumeController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	namespace,
	controllerID, shareManagerImage string,
	proxyConnCounter util.Counter,
) *VolumeController

func (*VolumeController) EvictReplicas added in v1.1.0

func (c *VolumeController) EvictReplicas(v *longhorn.Volume,
	e *longhorn.Engine, rs map[string]*longhorn.Replica, healthyCount int) (err error)

EvictReplicas do creating one more replica for eviction, if requested

func (*VolumeController) IsReplicaUnavailable added in v1.2.1

func (c *VolumeController) IsReplicaUnavailable(r *longhorn.Replica) (bool, error)

func (*VolumeController) ReconcileBackupVolumeState added in v1.2.0

func (c *VolumeController) ReconcileBackupVolumeState(volume *longhorn.Volume) error

ReconcileBackupVolumeState is responsible for syncing the state of backup volumes to volume.status

func (*VolumeController) ReconcileEngineReplicaState

func (c *VolumeController) ReconcileEngineReplicaState(v *longhorn.Volume, es map[string]*longhorn.Engine, rs map[string]*longhorn.Replica) (err error)

ReconcileEngineReplicaState will get the current main engine e.Status.ReplicaModeMap, e.Status.RestoreStatus, e.Status.purgeStatus, and e.Status.SnapshotCloneStatus then update v and rs accordingly.

func (*VolumeController) ReconcilePersistentVolume added in v1.4.3

func (c *VolumeController) ReconcilePersistentVolume(volume *longhorn.Volume) error

ReconcilePersistentVolume is responsible for syncing the state with the PersistentVolume

func (*VolumeController) ReconcileShareManagerState added in v1.1.0

func (c *VolumeController) ReconcileShareManagerState(volume *longhorn.Volume) error

ReconcileShareManagerState is responsible for syncing the state of shared volumes with their share manager

func (*VolumeController) ReconcileVolumeState

func (c *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 (c *VolumeController) ResolveRefAndEnqueue(namespace string, ref *metav1.OwnerReference)

func (*VolumeController) Run

func (c *VolumeController) Run(workers int, stopCh <-chan struct{})

type VolumeEvictionController added in v1.5.0

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

func NewVolumeEvictionController added in v1.5.0

func NewVolumeEvictionController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string,
	namespace string,
) *VolumeEvictionController

func (*VolumeEvictionController) Run added in v1.5.0

func (vec *VolumeEvictionController) Run(workers int, stopCh <-chan struct{})

type VolumeExpansionController added in v1.5.0

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

func NewVolumeExpansionController added in v1.5.0

func NewVolumeExpansionController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string,
	namespace string,
) *VolumeExpansionController

func (*VolumeExpansionController) Run added in v1.5.0

func (vec *VolumeExpansionController) Run(workers int, stopCh <-chan struct{})

type VolumeRebuildingController added in v1.5.0

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

func NewVolumeRebuildingController added in v1.5.0

func NewVolumeRebuildingController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string,
	namespace string,
) *VolumeRebuildingController

func (*VolumeRebuildingController) Run added in v1.5.0

func (vbc *VolumeRebuildingController) Run(workers int, stopCh <-chan struct{})

type VolumeRestoreController added in v1.5.0

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

func NewVolumeRestoreController added in v1.5.0

func NewVolumeRestoreController(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
	scheme *runtime.Scheme,
	kubeClient clientset.Interface,
	controllerID string,
	namespace string,
) *VolumeRestoreController

func (*VolumeRestoreController) Run added in v1.5.0

func (vrsc *VolumeRestoreController) 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(
	logger logrus.FieldLogger,
	ds *datastore.DataStore,
) *WebsocketController

func StartControllers

func StartControllers(logger logrus.FieldLogger, clients *client.Clients,
	controllerID, serviceAccount, managerImage, backingImageManagerImage, shareManagerImage,
	kubeconfigPath, version string, proxyConnCounter util.Counter) (*WebsocketController, error)

StartControllers initiates all Longhorn component controllers and monitors to manage the creating, updating, and deletion of Longhorn resources

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{})

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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