kubernetes/pkg/controller/volume/attachdetach/attach_detach_controller.go

type TimerConfig

var DefaultTimerConfig

type AttachDetachController

// NewAttachDetachController returns a new instance of AttachDetachController.
func NewAttachDetachController(
	ctx context.Context,
	kubeClient clientset.Interface,
	podInformer coreinformers.PodInformer,
	nodeInformer coreinformers.NodeInformer,
	pvcInformer coreinformers.PersistentVolumeClaimInformer,
	pvInformer coreinformers.PersistentVolumeInformer,
	csiNodeInformer storageinformersv1.CSINodeInformer,
	csiDriverInformer storageinformersv1.CSIDriverInformer,
	volumeAttachmentInformer storageinformersv1.VolumeAttachmentInformer,
	plugins []volume.VolumePlugin,
	prober volume.DynamicPluginProber,
	disableReconciliationSync bool,
	reconcilerSyncDuration time.Duration,
	disableForceDetachOnTimeout bool,
	timerConfig TimerConfig) (AttachDetachController, error) {}

type attachDetachController

func (adc *attachDetachController) Run(ctx context.Context) {}

func (adc *attachDetachController) populateActualStateOfWorld(logger klog.Logger) error {}

func (adc *attachDetachController) getNodeVolumeDevicePath(
	volumeName v1.UniqueVolumeName, nodeName types.NodeName) (string, error) {}

func (adc *attachDetachController) populateDesiredStateOfWorld(logger klog.Logger) error {}

func (adc *attachDetachController) podAdd(logger klog.Logger, obj interface{}

// GetDesiredStateOfWorld returns desired state of world associated with controller
func (adc *attachDetachController) GetDesiredStateOfWorld() cache.DesiredStateOfWorld {}

func (adc *attachDetachController) podUpdate(logger klog.Logger, oldObj, newObj interface{}

func (adc *attachDetachController) podDelete(logger klog.Logger, obj interface{}

func (adc *attachDetachController) nodeAdd(logger klog.Logger, obj interface{}

func (adc *attachDetachController) nodeUpdate(logger klog.Logger, oldObj, newObj interface{}

func (adc *attachDetachController) nodeDelete(logger klog.Logger, obj interface{}

func (adc *attachDetachController) enqueuePVC(obj interface{}

// pvcWorker processes items from pvcQueue
func (adc *attachDetachController) pvcWorker(ctx context.Context) {}

func (adc *attachDetachController) processNextItem(logger klog.Logger) bool {}

func (adc *attachDetachController) syncPVCByKey(logger klog.Logger, key string) error {}

// processVolumesInUse processes the list of volumes marked as "in-use"
// according to the specified Node's Status.VolumesInUse and updates the
// corresponding volume in the actual state of the world to indicate that it is
// mounted.
func (adc *attachDetachController) processVolumesInUse(
	logger klog.Logger, nodeName types.NodeName, volumesInUse []v1.UniqueVolumeName) {}

// Process Volume-Attachment objects.
// Should be called only after populating attached volumes in the ASW.
// For each VA object, this function checks if its present in the ASW.
// If not, adds the volume to ASW as an "uncertain" attachment.
// In the reconciler, the logic checks if the volume is present in the DSW;
//
//	if yes, the reconciler will attempt attach on the volume;
//	if not (could be a dangling attachment), the reconciler will detach this volume.
func (adc *attachDetachController) processVolumeAttachments(logger klog.Logger) error {}

var _

var _

func (adc *attachDetachController) CSINodeLister() storagelistersv1.CSINodeLister {}

func (adc *attachDetachController) CSIDriverLister() storagelistersv1.CSIDriverLister {}

func (adc *attachDetachController) IsAttachDetachController() bool {}

func (adc *attachDetachController) VolumeAttachmentLister() storagelistersv1.VolumeAttachmentLister {}

// VolumeHost implementation
// This is an unfortunate requirement of the current factoring of volume plugin
// initializing code. It requires kubelet specific methods used by the mounting
// code to be implemented by all initializers even if the initializer does not
// do mounting (like this attach/detach controller).
// Issue kubernetes/kubernetes/issues/14217 to fix this.
func (adc *attachDetachController) GetPluginDir(podUID string) string {}

func (adc *attachDetachController) GetVolumeDevicePluginDir(podUID string) string {}

func (adc *attachDetachController) GetPodsDir() string {}

func (adc *attachDetachController) GetPodVolumeDir(podUID types.UID, pluginName, volumeName string) string {}

func (adc *attachDetachController) GetPodPluginDir(podUID types.UID, pluginName string) string {}

func (adc *attachDetachController) GetPodVolumeDeviceDir(podUID types.UID, pluginName string) string {}

func (adc *attachDetachController) GetKubeClient() clientset.Interface {}

func (adc *attachDetachController) NewWrapperMounter(volName string, spec volume.Spec, pod *v1.Pod) (volume.Mounter, error) {}

func (adc *attachDetachController) NewWrapperUnmounter(volName string, spec volume.Spec, podUID types.UID) (volume.Unmounter, error) {}

func (adc *attachDetachController) GetMounter(pluginName string) mount.Interface {}

func (adc *attachDetachController) GetHostName() string {}

func (adc *attachDetachController) GetHostIP() (net.IP, error) {}

func (adc *attachDetachController) GetNodeAllocatable() (v1.ResourceList, error) {}

func (adc *attachDetachController) GetAttachedVolumesFromNodeStatus() (map[v1.UniqueVolumeName]string, error) {}

func (adc *attachDetachController) GetSecretFunc() func(namespace, name string) (*v1.Secret, error) {}

func (adc *attachDetachController) GetConfigMapFunc() func(namespace, name string) (*v1.ConfigMap, error) {}

func (adc *attachDetachController) GetServiceAccountTokenFunc() func(_, _ string, _ *authenticationv1.TokenRequest) (*authenticationv1.TokenRequest, error) {}

func (adc *attachDetachController) DeleteServiceAccountTokenFunc() func(types.UID) {}

func (adc *attachDetachController) GetExec(pluginName string) utilexec.Interface {}

func (adc *attachDetachController) addNodeToDswp(node *v1.Node, nodeName types.NodeName) {}

func (adc *attachDetachController) GetNodeLabels() (map[string]string, error) {}

func (adc *attachDetachController) GetNodeName() types.NodeName {}

func (adc *attachDetachController) GetEventRecorder() record.EventRecorder {}

func (adc *attachDetachController) GetSubpather() subpath.Interface {}

func (adc *attachDetachController) GetCSIDriverLister() storagelistersv1.CSIDriverLister {}