mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 09:22:44 +00:00
Merge pull request #123984 from carlory/volume-remove-cloud-provider
Remove cloud provider dependency from volume host and volume controllers
This commit is contained in:
commit
38c2a963b4
@ -337,7 +337,6 @@ func startPersistentVolumeBinderController(ctx context.Context, controllerContex
|
|||||||
KubeClient: controllerContext.ClientBuilder.ClientOrDie("persistent-volume-binder"),
|
KubeClient: controllerContext.ClientBuilder.ClientOrDie("persistent-volume-binder"),
|
||||||
SyncPeriod: controllerContext.ComponentConfig.PersistentVolumeBinderController.PVClaimBinderSyncPeriod.Duration,
|
SyncPeriod: controllerContext.ComponentConfig.PersistentVolumeBinderController.PVClaimBinderSyncPeriod.Duration,
|
||||||
VolumePlugins: plugins,
|
VolumePlugins: plugins,
|
||||||
Cloud: controllerContext.Cloud,
|
|
||||||
ClusterName: controllerContext.ComponentConfig.KubeCloudShared.ClusterName,
|
ClusterName: controllerContext.ComponentConfig.KubeCloudShared.ClusterName,
|
||||||
VolumeInformer: controllerContext.InformerFactory.Core().V1().PersistentVolumes(),
|
VolumeInformer: controllerContext.InformerFactory.Core().V1().PersistentVolumes(),
|
||||||
ClaimInformer: controllerContext.InformerFactory.Core().V1().PersistentVolumeClaims(),
|
ClaimInformer: controllerContext.InformerFactory.Core().V1().PersistentVolumeClaims(),
|
||||||
@ -384,7 +383,6 @@ func startPersistentVolumeAttachDetachController(ctx context.Context, controller
|
|||||||
csiNodeInformer,
|
csiNodeInformer,
|
||||||
csiDriverInformer,
|
csiDriverInformer,
|
||||||
controllerContext.InformerFactory.Storage().V1().VolumeAttachments(),
|
controllerContext.InformerFactory.Storage().V1().VolumeAttachments(),
|
||||||
controllerContext.Cloud,
|
|
||||||
plugins,
|
plugins,
|
||||||
GetDynamicPluginProber(controllerContext.ComponentConfig.PersistentVolumeBinderController.VolumeConfiguration),
|
GetDynamicPluginProber(controllerContext.ComponentConfig.PersistentVolumeBinderController.VolumeConfiguration),
|
||||||
controllerContext.ComponentConfig.AttachDetachController.DisableAttachDetachReconcilerSync,
|
controllerContext.ComponentConfig.AttachDetachController.DisableAttachDetachReconcilerSync,
|
||||||
@ -419,7 +417,6 @@ func startPersistentVolumeExpanderController(ctx context.Context, controllerCont
|
|||||||
ctx,
|
ctx,
|
||||||
controllerContext.ClientBuilder.ClientOrDie("expand-controller"),
|
controllerContext.ClientBuilder.ClientOrDie("expand-controller"),
|
||||||
controllerContext.InformerFactory.Core().V1().PersistentVolumeClaims(),
|
controllerContext.InformerFactory.Core().V1().PersistentVolumeClaims(),
|
||||||
controllerContext.Cloud,
|
|
||||||
plugins,
|
plugins,
|
||||||
csiTranslator,
|
csiTranslator,
|
||||||
csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
|
csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
|
||||||
|
@ -46,7 +46,6 @@ import (
|
|||||||
kcache "k8s.io/client-go/tools/cache"
|
kcache "k8s.io/client-go/tools/cache"
|
||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
"k8s.io/client-go/util/workqueue"
|
"k8s.io/client-go/util/workqueue"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
|
||||||
csitrans "k8s.io/csi-translation-lib"
|
csitrans "k8s.io/csi-translation-lib"
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
|
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/metrics"
|
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/metrics"
|
||||||
@ -114,7 +113,6 @@ func NewAttachDetachController(
|
|||||||
csiNodeInformer storageinformersv1.CSINodeInformer,
|
csiNodeInformer storageinformersv1.CSINodeInformer,
|
||||||
csiDriverInformer storageinformersv1.CSIDriverInformer,
|
csiDriverInformer storageinformersv1.CSIDriverInformer,
|
||||||
volumeAttachmentInformer storageinformersv1.VolumeAttachmentInformer,
|
volumeAttachmentInformer storageinformersv1.VolumeAttachmentInformer,
|
||||||
cloud cloudprovider.Interface,
|
|
||||||
plugins []volume.VolumePlugin,
|
plugins []volume.VolumePlugin,
|
||||||
prober volume.DynamicPluginProber,
|
prober volume.DynamicPluginProber,
|
||||||
disableReconciliationSync bool,
|
disableReconciliationSync bool,
|
||||||
@ -135,7 +133,6 @@ func NewAttachDetachController(
|
|||||||
podIndexer: podInformer.Informer().GetIndexer(),
|
podIndexer: podInformer.Informer().GetIndexer(),
|
||||||
nodeLister: nodeInformer.Lister(),
|
nodeLister: nodeInformer.Lister(),
|
||||||
nodesSynced: nodeInformer.Informer().HasSynced,
|
nodesSynced: nodeInformer.Informer().HasSynced,
|
||||||
cloud: cloud,
|
|
||||||
pvcQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "pvcs"),
|
pvcQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "pvcs"),
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -277,9 +274,6 @@ type attachDetachController struct {
|
|||||||
volumeAttachmentLister storagelistersv1.VolumeAttachmentLister
|
volumeAttachmentLister storagelistersv1.VolumeAttachmentLister
|
||||||
volumeAttachmentSynced kcache.InformerSynced
|
volumeAttachmentSynced kcache.InformerSynced
|
||||||
|
|
||||||
// cloud provider used by volume host
|
|
||||||
cloud cloudprovider.Interface
|
|
||||||
|
|
||||||
// volumePluginMgr used to initialize and fetch volume plugins
|
// volumePluginMgr used to initialize and fetch volume plugins
|
||||||
volumePluginMgr volume.VolumePluginMgr
|
volumePluginMgr volume.VolumePluginMgr
|
||||||
|
|
||||||
@ -809,10 +803,6 @@ func (adc *attachDetachController) NewWrapperUnmounter(volName string, spec volu
|
|||||||
return nil, fmt.Errorf("NewWrapperUnmounter not supported by Attach/Detach controller's VolumeHost implementation")
|
return nil, fmt.Errorf("NewWrapperUnmounter not supported by Attach/Detach controller's VolumeHost implementation")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (adc *attachDetachController) GetCloudProvider() cloudprovider.Interface {
|
|
||||||
return adc.cloud
|
|
||||||
}
|
|
||||||
|
|
||||||
func (adc *attachDetachController) GetMounter(pluginName string) mount.Interface {
|
func (adc *attachDetachController) GetMounter(pluginName string) mount.Interface {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,6 @@ func createADC(t testing.TB, tCtx ktesting.TContext, fakeKubeClient *fake.Client
|
|||||||
informerFactory.Storage().V1().CSINodes(),
|
informerFactory.Storage().V1().CSINodes(),
|
||||||
informerFactory.Storage().V1().CSIDrivers(),
|
informerFactory.Storage().V1().CSIDrivers(),
|
||||||
informerFactory.Storage().V1().VolumeAttachments(),
|
informerFactory.Storage().V1().VolumeAttachments(),
|
||||||
nil, /* cloud */
|
|
||||||
plugins,
|
plugins,
|
||||||
nil, /* prober */
|
nil, /* prober */
|
||||||
false,
|
false,
|
||||||
@ -272,7 +271,6 @@ func attachDetachRecoveryTestCase(t *testing.T, extraPods1 []*v1.Pod, extraPods2
|
|||||||
informerFactory.Storage().V1().CSINodes(),
|
informerFactory.Storage().V1().CSINodes(),
|
||||||
informerFactory.Storage().V1().CSIDrivers(),
|
informerFactory.Storage().V1().CSIDrivers(),
|
||||||
informerFactory.Storage().V1().VolumeAttachments(),
|
informerFactory.Storage().V1().VolumeAttachments(),
|
||||||
nil, /* cloud */
|
|
||||||
plugins,
|
plugins,
|
||||||
prober,
|
prober,
|
||||||
false,
|
false,
|
||||||
|
@ -42,7 +42,6 @@ import (
|
|||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
"k8s.io/client-go/util/workqueue"
|
"k8s.io/client-go/util/workqueue"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/events"
|
"k8s.io/kubernetes/pkg/controller/volume/events"
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
@ -80,9 +79,6 @@ type expandController struct {
|
|||||||
pvcLister corelisters.PersistentVolumeClaimLister
|
pvcLister corelisters.PersistentVolumeClaimLister
|
||||||
pvcsSynced cache.InformerSynced
|
pvcsSynced cache.InformerSynced
|
||||||
|
|
||||||
// cloud provider used by volume host
|
|
||||||
cloud cloudprovider.Interface
|
|
||||||
|
|
||||||
// volumePluginMgr used to initialize and fetch volume plugins
|
// volumePluginMgr used to initialize and fetch volume plugins
|
||||||
volumePluginMgr volume.VolumePluginMgr
|
volumePluginMgr volume.VolumePluginMgr
|
||||||
|
|
||||||
@ -103,14 +99,12 @@ func NewExpandController(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
kubeClient clientset.Interface,
|
kubeClient clientset.Interface,
|
||||||
pvcInformer coreinformers.PersistentVolumeClaimInformer,
|
pvcInformer coreinformers.PersistentVolumeClaimInformer,
|
||||||
cloud cloudprovider.Interface,
|
|
||||||
plugins []volume.VolumePlugin,
|
plugins []volume.VolumePlugin,
|
||||||
translator CSINameTranslator,
|
translator CSINameTranslator,
|
||||||
csiMigratedPluginManager csimigration.PluginManager) (ExpandController, error) {
|
csiMigratedPluginManager csimigration.PluginManager) (ExpandController, error) {
|
||||||
|
|
||||||
expc := &expandController{
|
expc := &expandController{
|
||||||
kubeClient: kubeClient,
|
kubeClient: kubeClient,
|
||||||
cloud: cloud,
|
|
||||||
pvcLister: pvcInformer.Lister(),
|
pvcLister: pvcInformer.Lister(),
|
||||||
pvcsSynced: pvcInformer.Informer().HasSynced,
|
pvcsSynced: pvcInformer.Informer().HasSynced,
|
||||||
queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "volume_expand"),
|
queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "volume_expand"),
|
||||||
@ -407,10 +401,6 @@ func (expc *expandController) NewWrapperUnmounter(volName string, spec volume.Sp
|
|||||||
return nil, fmt.Errorf("NewWrapperUnmounter not supported by expand controller's VolumeHost implementation")
|
return nil, fmt.Errorf("NewWrapperUnmounter not supported by expand controller's VolumeHost implementation")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (expc *expandController) GetCloudProvider() cloudprovider.Interface {
|
|
||||||
return expc.cloud
|
|
||||||
}
|
|
||||||
|
|
||||||
func (expc *expandController) GetMounter(pluginName string) mount.Interface {
|
func (expc *expandController) GetMounter(pluginName string) mount.Interface {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ func TestSyncHandler(t *testing.T) {
|
|||||||
}
|
}
|
||||||
allPlugins := []volume.VolumePlugin{}
|
allPlugins := []volume.VolumePlugin{}
|
||||||
translator := csitrans.New()
|
translator := csitrans.New()
|
||||||
expc, err := NewExpandController(tCtx, fakeKubeClient, pvcInformer, nil, allPlugins, translator, csimigration.NewPluginManager(translator, utilfeature.DefaultFeatureGate))
|
expc, err := NewExpandController(tCtx, fakeKubeClient, pvcInformer, allPlugins, translator, csimigration.NewPluginManager(translator, utilfeature.DefaultFeatureGate))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error creating expand controller : %v", err)
|
t.Fatalf("error creating expand controller : %v", err)
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,6 @@ import (
|
|||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
ref "k8s.io/client-go/tools/reference"
|
ref "k8s.io/client-go/tools/reference"
|
||||||
"k8s.io/client-go/util/workqueue"
|
"k8s.io/client-go/util/workqueue"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
|
||||||
volerr "k8s.io/cloud-provider/volume/errors"
|
volerr "k8s.io/cloud-provider/volume/errors"
|
||||||
storagehelpers "k8s.io/component-helpers/storage/volume"
|
storagehelpers "k8s.io/component-helpers/storage/volume"
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/common"
|
"k8s.io/kubernetes/pkg/controller/volume/common"
|
||||||
@ -119,18 +118,6 @@ import (
|
|||||||
// claims at the same time. The controller must recover from any conflicts
|
// claims at the same time. The controller must recover from any conflicts
|
||||||
// that may arise from these conditions.
|
// that may arise from these conditions.
|
||||||
|
|
||||||
// CloudVolumeCreatedForClaimNamespaceTag is a name of a tag attached to a real volume in cloud (e.g. AWS EBS or GCE PD)
|
|
||||||
// with namespace of a persistent volume claim used to create this volume.
|
|
||||||
const CloudVolumeCreatedForClaimNamespaceTag = "kubernetes.io/created-for/pvc/namespace"
|
|
||||||
|
|
||||||
// CloudVolumeCreatedForClaimNameTag is a name of a tag attached to a real volume in cloud (e.g. AWS EBS or GCE PD)
|
|
||||||
// with name of a persistent volume claim used to create this volume.
|
|
||||||
const CloudVolumeCreatedForClaimNameTag = "kubernetes.io/created-for/pvc/name"
|
|
||||||
|
|
||||||
// CloudVolumeCreatedForVolumeNameTag is a name of a tag attached to a real volume in cloud (e.g. AWS EBS or GCE PD)
|
|
||||||
// with name of appropriate Kubernetes persistent volume .
|
|
||||||
const CloudVolumeCreatedForVolumeNameTag = "kubernetes.io/created-for/pv/name"
|
|
||||||
|
|
||||||
// Number of retries when we create a PV object for a provisioned volume.
|
// Number of retries when we create a PV object for a provisioned volume.
|
||||||
const createProvisionedPVRetryCount = 5
|
const createProvisionedPVRetryCount = 5
|
||||||
|
|
||||||
@ -167,7 +154,6 @@ type PersistentVolumeController struct {
|
|||||||
kubeClient clientset.Interface
|
kubeClient clientset.Interface
|
||||||
eventBroadcaster record.EventBroadcaster
|
eventBroadcaster record.EventBroadcaster
|
||||||
eventRecorder record.EventRecorder
|
eventRecorder record.EventRecorder
|
||||||
cloud cloudprovider.Interface
|
|
||||||
volumePluginMgr vol.VolumePluginMgr
|
volumePluginMgr vol.VolumePluginMgr
|
||||||
enableDynamicProvisioning bool
|
enableDynamicProvisioning bool
|
||||||
clusterName string
|
clusterName string
|
||||||
@ -1653,16 +1639,9 @@ func (ctrl *PersistentVolumeController) provisionClaimOperation(
|
|||||||
return pluginName, err
|
return pluginName, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gather provisioning options
|
|
||||||
tags := make(map[string]string)
|
|
||||||
tags[CloudVolumeCreatedForClaimNamespaceTag] = claim.Namespace
|
|
||||||
tags[CloudVolumeCreatedForClaimNameTag] = claim.Name
|
|
||||||
tags[CloudVolumeCreatedForVolumeNameTag] = pvName
|
|
||||||
|
|
||||||
options := vol.VolumeOptions{
|
options := vol.VolumeOptions{
|
||||||
PersistentVolumeReclaimPolicy: *storageClass.ReclaimPolicy,
|
PersistentVolumeReclaimPolicy: *storageClass.ReclaimPolicy,
|
||||||
MountOptions: storageClass.MountOptions,
|
MountOptions: storageClass.MountOptions,
|
||||||
CloudTags: &tags,
|
|
||||||
ClusterName: ctrl.clusterName,
|
ClusterName: ctrl.clusterName,
|
||||||
PVName: pvName,
|
PVName: pvName,
|
||||||
PVC: claim,
|
PVC: claim,
|
||||||
|
@ -40,7 +40,6 @@ import (
|
|||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
"k8s.io/client-go/util/workqueue"
|
"k8s.io/client-go/util/workqueue"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
|
||||||
storagehelpers "k8s.io/component-helpers/storage/volume"
|
storagehelpers "k8s.io/component-helpers/storage/volume"
|
||||||
csitrans "k8s.io/csi-translation-lib"
|
csitrans "k8s.io/csi-translation-lib"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
@ -65,7 +64,6 @@ type ControllerParameters struct {
|
|||||||
KubeClient clientset.Interface
|
KubeClient clientset.Interface
|
||||||
SyncPeriod time.Duration
|
SyncPeriod time.Duration
|
||||||
VolumePlugins []vol.VolumePlugin
|
VolumePlugins []vol.VolumePlugin
|
||||||
Cloud cloudprovider.Interface
|
|
||||||
ClusterName string
|
ClusterName string
|
||||||
VolumeInformer coreinformers.PersistentVolumeInformer
|
VolumeInformer coreinformers.PersistentVolumeInformer
|
||||||
ClaimInformer coreinformers.PersistentVolumeClaimInformer
|
ClaimInformer coreinformers.PersistentVolumeClaimInformer
|
||||||
@ -87,7 +85,6 @@ func NewController(ctx context.Context, p ControllerParameters) (*PersistentVolu
|
|||||||
eventBroadcaster: eventBroadcaster,
|
eventBroadcaster: eventBroadcaster,
|
||||||
eventRecorder: eventRecorder,
|
eventRecorder: eventRecorder,
|
||||||
runningOperations: goroutinemap.NewGoRoutineMap(true /* exponentialBackOffOnError */),
|
runningOperations: goroutinemap.NewGoRoutineMap(true /* exponentialBackOffOnError */),
|
||||||
cloud: p.Cloud,
|
|
||||||
enableDynamicProvisioning: p.EnableDynamicProvisioning,
|
enableDynamicProvisioning: p.EnableDynamicProvisioning,
|
||||||
clusterName: p.ClusterName,
|
clusterName: p.ClusterName,
|
||||||
createProvisionedPVRetryCount: createProvisionedPVRetryCount,
|
createProvisionedPVRetryCount: createProvisionedPVRetryCount,
|
||||||
|
@ -29,7 +29,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
|
||||||
vol "k8s.io/kubernetes/pkg/volume"
|
vol "k8s.io/kubernetes/pkg/volume"
|
||||||
"k8s.io/kubernetes/pkg/volume/util/subpath"
|
"k8s.io/kubernetes/pkg/volume/util/subpath"
|
||||||
)
|
)
|
||||||
@ -74,10 +73,6 @@ func (ctrl *PersistentVolumeController) NewWrapperUnmounter(volName string, spec
|
|||||||
return nil, fmt.Errorf("PersistentVolumeController.NewWrapperMounter is not implemented")
|
return nil, fmt.Errorf("PersistentVolumeController.NewWrapperMounter is not implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctrl *PersistentVolumeController) GetCloudProvider() cloudprovider.Interface {
|
|
||||||
return ctrl.cloud
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ctrl *PersistentVolumeController) GetMounter(pluginName string) mount.Interface {
|
func (ctrl *PersistentVolumeController) GetMounter(pluginName string) mount.Interface {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,6 @@ import (
|
|||||||
storagelisters "k8s.io/client-go/listers/storage/v1"
|
storagelisters "k8s.io/client-go/listers/storage/v1"
|
||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
|
||||||
"k8s.io/kubernetes/pkg/kubelet/clustertrustbundle"
|
"k8s.io/kubernetes/pkg/kubelet/clustertrustbundle"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/configmap"
|
"k8s.io/kubernetes/pkg/kubelet/configmap"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/secret"
|
"k8s.io/kubernetes/pkg/kubelet/secret"
|
||||||
@ -217,10 +216,6 @@ func (kvh *kubeletVolumeHost) NewWrapperUnmounter(volName string, spec volume.Sp
|
|||||||
return plugin.NewUnmounter(spec.Name(), podUID)
|
return plugin.NewUnmounter(spec.Name(), podUID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (kvh *kubeletVolumeHost) GetCloudProvider() cloudprovider.Interface {
|
|
||||||
return kvh.kubelet.cloud
|
|
||||||
}
|
|
||||||
|
|
||||||
func (kvh *kubeletVolumeHost) GetMounter(pluginName string) mount.Interface {
|
func (kvh *kubeletVolumeHost) GetMounter(pluginName string) mount.Interface {
|
||||||
return kvh.kubelet.mounter
|
return kvh.kubelet.mounter
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,6 @@ import (
|
|||||||
storagelistersv1 "k8s.io/client-go/listers/storage/v1"
|
storagelistersv1 "k8s.io/client-go/listers/storage/v1"
|
||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
|
||||||
"k8s.io/kubernetes/pkg/volume/util/hostutil"
|
"k8s.io/kubernetes/pkg/volume/util/hostutil"
|
||||||
"k8s.io/kubernetes/pkg/volume/util/recyclerclient"
|
"k8s.io/kubernetes/pkg/volume/util/recyclerclient"
|
||||||
"k8s.io/kubernetes/pkg/volume/util/subpath"
|
"k8s.io/kubernetes/pkg/volume/util/subpath"
|
||||||
@ -85,8 +84,6 @@ type VolumeOptions struct {
|
|||||||
PVC *v1.PersistentVolumeClaim
|
PVC *v1.PersistentVolumeClaim
|
||||||
// Unique name of Kubernetes cluster.
|
// Unique name of Kubernetes cluster.
|
||||||
ClusterName string
|
ClusterName string
|
||||||
// Tags to attach to the real volume in the cloud provider - e.g. AWS EBS
|
|
||||||
CloudTags *map[string]string
|
|
||||||
// Volume provisioning parameters from StorageClass
|
// Volume provisioning parameters from StorageClass
|
||||||
Parameters map[string]string
|
Parameters map[string]string
|
||||||
}
|
}
|
||||||
@ -382,9 +379,6 @@ type VolumeHost interface {
|
|||||||
// context.
|
// context.
|
||||||
NewWrapperUnmounter(volName string, spec Spec, podUID types.UID) (Unmounter, error)
|
NewWrapperUnmounter(volName string, spec Spec, podUID types.UID) (Unmounter, error)
|
||||||
|
|
||||||
// Get cloud provider from kubelet.
|
|
||||||
GetCloudProvider() cloudprovider.Interface
|
|
||||||
|
|
||||||
// Get mounter interface.
|
// Get mounter interface.
|
||||||
GetMounter(pluginName string) mount.Interface
|
GetMounter(pluginName string) mount.Interface
|
||||||
|
|
||||||
|
@ -40,7 +40,6 @@ import (
|
|||||||
storagelistersv1 "k8s.io/client-go/listers/storage/v1"
|
storagelistersv1 "k8s.io/client-go/listers/storage/v1"
|
||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
|
||||||
csilibplugins "k8s.io/csi-translation-lib/plugins"
|
csilibplugins "k8s.io/csi-translation-lib/plugins"
|
||||||
. "k8s.io/kubernetes/pkg/volume"
|
. "k8s.io/kubernetes/pkg/volume"
|
||||||
"k8s.io/kubernetes/pkg/volume/util/hostutil"
|
"k8s.io/kubernetes/pkg/volume/util/hostutil"
|
||||||
@ -62,7 +61,6 @@ type fakeVolumeHost struct {
|
|||||||
rootDir string
|
rootDir string
|
||||||
kubeClient clientset.Interface
|
kubeClient clientset.Interface
|
||||||
pluginMgr *VolumePluginMgr
|
pluginMgr *VolumePluginMgr
|
||||||
cloud cloudprovider.Interface
|
|
||||||
mounter mount.Interface
|
mounter mount.Interface
|
||||||
hostUtil hostutil.HostUtils
|
hostUtil hostutil.HostUtils
|
||||||
exec *testingexec.FakeExec
|
exec *testingexec.FakeExec
|
||||||
@ -81,19 +79,19 @@ var _ VolumeHost = &fakeVolumeHost{}
|
|||||||
var _ FakeVolumeHost = &fakeVolumeHost{}
|
var _ FakeVolumeHost = &fakeVolumeHost{}
|
||||||
|
|
||||||
func NewFakeVolumeHost(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin) FakeVolumeHost {
|
func NewFakeVolumeHost(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin) FakeVolumeHost {
|
||||||
return newFakeVolumeHost(t, rootDir, kubeClient, plugins, nil, nil, "", nil, nil)
|
return newFakeVolumeHost(t, rootDir, kubeClient, plugins, nil, "", nil, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewFakeVolumeHostWithCloudProvider(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, cloud cloudprovider.Interface) FakeVolumeHost {
|
func NewFakeVolumeHostWithCloudProvider(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin) FakeVolumeHost {
|
||||||
return newFakeVolumeHost(t, rootDir, kubeClient, plugins, cloud, nil, "", nil, nil)
|
return newFakeVolumeHost(t, rootDir, kubeClient, plugins, nil, "", nil, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewFakeVolumeHostWithCSINodeName(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) FakeVolumeHost {
|
func NewFakeVolumeHostWithCSINodeName(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) FakeVolumeHost {
|
||||||
return newFakeVolumeHost(t, rootDir, kubeClient, plugins, nil, nil, nodeName, driverLister, volumeAttachLister)
|
return newFakeVolumeHost(t, rootDir, kubeClient, plugins, nil, nodeName, driverLister, volumeAttachLister)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newFakeVolumeHost(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, cloud cloudprovider.Interface, pathToTypeMap map[string]hostutil.FileType, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) FakeVolumeHost {
|
func newFakeVolumeHost(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, pathToTypeMap map[string]hostutil.FileType, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) FakeVolumeHost {
|
||||||
host := &fakeVolumeHost{rootDir: rootDir, kubeClient: kubeClient, cloud: cloud, nodeName: nodeName, csiDriverLister: driverLister, volumeAttachmentLister: volumeAttachLister}
|
host := &fakeVolumeHost{rootDir: rootDir, kubeClient: kubeClient, nodeName: nodeName, csiDriverLister: driverLister, volumeAttachmentLister: volumeAttachLister}
|
||||||
host.mounter = mount.NewFakeMounter(nil)
|
host.mounter = mount.NewFakeMounter(nil)
|
||||||
host.hostUtil = hostutil.NewFakeHostUtil(pathToTypeMap)
|
host.hostUtil = hostutil.NewFakeHostUtil(pathToTypeMap)
|
||||||
host.exec = &testingexec.FakeExec{DisableScripts: true}
|
host.exec = &testingexec.FakeExec{DisableScripts: true}
|
||||||
@ -138,10 +136,6 @@ func (f *fakeVolumeHost) GetKubeClient() clientset.Interface {
|
|||||||
return f.kubeClient
|
return f.kubeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *fakeVolumeHost) GetCloudProvider() cloudprovider.Interface {
|
|
||||||
return f.cloud
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *fakeVolumeHost) GetMounter(pluginName string) mount.Interface {
|
func (f *fakeVolumeHost) GetMounter(pluginName string) mount.Interface {
|
||||||
return f.mounter
|
return f.mounter
|
||||||
}
|
}
|
||||||
@ -259,14 +253,13 @@ var _ AttachDetachVolumeHost = &fakeAttachDetachVolumeHost{}
|
|||||||
var _ FakeVolumeHost = &fakeAttachDetachVolumeHost{}
|
var _ FakeVolumeHost = &fakeAttachDetachVolumeHost{}
|
||||||
|
|
||||||
func NewFakeAttachDetachVolumeHostWithCSINodeName(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) FakeVolumeHost {
|
func NewFakeAttachDetachVolumeHostWithCSINodeName(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) FakeVolumeHost {
|
||||||
return newFakeAttachDetachVolumeHost(t, rootDir, kubeClient, plugins, nil, nil, nodeName, driverLister, volumeAttachLister)
|
return newFakeAttachDetachVolumeHost(t, rootDir, kubeClient, plugins, nil, nodeName, driverLister, volumeAttachLister)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newFakeAttachDetachVolumeHost(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, cloud cloudprovider.Interface, pathToTypeMap map[string]hostutil.FileType, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) FakeVolumeHost {
|
func newFakeAttachDetachVolumeHost(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, pathToTypeMap map[string]hostutil.FileType, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) FakeVolumeHost {
|
||||||
host := &fakeAttachDetachVolumeHost{}
|
host := &fakeAttachDetachVolumeHost{}
|
||||||
host.rootDir = rootDir
|
host.rootDir = rootDir
|
||||||
host.kubeClient = kubeClient
|
host.kubeClient = kubeClient
|
||||||
host.cloud = cloud
|
|
||||||
host.nodeName = nodeName
|
host.nodeName = nodeName
|
||||||
host.csiDriverLister = driverLister
|
host.csiDriverLister = driverLister
|
||||||
host.volumeAttachmentLister = volumeAttachLister
|
host.volumeAttachmentLister = volumeAttachLister
|
||||||
@ -331,26 +324,21 @@ var _ KubeletVolumeHost = &fakeKubeletVolumeHost{}
|
|||||||
var _ FakeVolumeHost = &fakeKubeletVolumeHost{}
|
var _ FakeVolumeHost = &fakeKubeletVolumeHost{}
|
||||||
|
|
||||||
func NewFakeKubeletVolumeHost(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin) *fakeKubeletVolumeHost {
|
func NewFakeKubeletVolumeHost(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin) *fakeKubeletVolumeHost {
|
||||||
return newFakeKubeletVolumeHost(t, rootDir, kubeClient, plugins, nil, nil, "", nil, nil)
|
return newFakeKubeletVolumeHost(t, rootDir, kubeClient, plugins, nil, "", nil, nil)
|
||||||
}
|
|
||||||
|
|
||||||
func NewFakeKubeletVolumeHostWithCloudProvider(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, cloud cloudprovider.Interface) *fakeKubeletVolumeHost {
|
|
||||||
return newFakeKubeletVolumeHost(t, rootDir, kubeClient, plugins, cloud, nil, "", nil, nil)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewFakeKubeletVolumeHostWithCSINodeName(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) *fakeKubeletVolumeHost {
|
func NewFakeKubeletVolumeHostWithCSINodeName(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) *fakeKubeletVolumeHost {
|
||||||
return newFakeKubeletVolumeHost(t, rootDir, kubeClient, plugins, nil, nil, nodeName, driverLister, volumeAttachLister)
|
return newFakeKubeletVolumeHost(t, rootDir, kubeClient, plugins, nil, nodeName, driverLister, volumeAttachLister)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewFakeKubeletVolumeHostWithMounterFSType(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, pathToTypeMap map[string]hostutil.FileType) *fakeKubeletVolumeHost {
|
func NewFakeKubeletVolumeHostWithMounterFSType(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, pathToTypeMap map[string]hostutil.FileType) *fakeKubeletVolumeHost {
|
||||||
return newFakeKubeletVolumeHost(t, rootDir, kubeClient, plugins, nil, pathToTypeMap, "", nil, nil)
|
return newFakeKubeletVolumeHost(t, rootDir, kubeClient, plugins, pathToTypeMap, "", nil, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newFakeKubeletVolumeHost(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, cloud cloudprovider.Interface, pathToTypeMap map[string]hostutil.FileType, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) *fakeKubeletVolumeHost {
|
func newFakeKubeletVolumeHost(t *testing.T, rootDir string, kubeClient clientset.Interface, plugins []VolumePlugin, pathToTypeMap map[string]hostutil.FileType, nodeName string, driverLister storagelistersv1.CSIDriverLister, volumeAttachLister storagelistersv1.VolumeAttachmentLister) *fakeKubeletVolumeHost {
|
||||||
host := &fakeKubeletVolumeHost{}
|
host := &fakeKubeletVolumeHost{}
|
||||||
host.rootDir = rootDir
|
host.rootDir = rootDir
|
||||||
host.kubeClient = kubeClient
|
host.kubeClient = kubeClient
|
||||||
host.cloud = cloud
|
|
||||||
host.nodeName = nodeName
|
host.nodeName = nodeName
|
||||||
host.csiDriverLister = driverLister
|
host.csiDriverLister = driverLister
|
||||||
host.volumeAttachmentLister = volumeAttachLister
|
host.volumeAttachmentLister = volumeAttachLister
|
||||||
@ -404,7 +392,6 @@ func (f *fakeKubeletVolumeHost) SetKubeletError(err error) {
|
|||||||
f.mux.Lock()
|
f.mux.Lock()
|
||||||
defer f.mux.Unlock()
|
defer f.mux.Unlock()
|
||||||
f.kubeletErr = err
|
f.kubeletErr = err
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *fakeKubeletVolumeHost) GetInformerFactory() informers.SharedInformerFactory {
|
func (f *fakeKubeletVolumeHost) GetInformerFactory() informers.SharedInformerFactory {
|
||||||
|
@ -30,7 +30,6 @@ import (
|
|||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
fakecloud "k8s.io/cloud-provider/fake"
|
|
||||||
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
|
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/attachdetach"
|
"k8s.io/kubernetes/pkg/controller/volume/attachdetach"
|
||||||
volumecache "k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
|
volumecache "k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
|
||||||
@ -348,7 +347,6 @@ func createAdClients(ctx context.Context, t *testing.T, server *kubeapiservertes
|
|||||||
Detachers: nil,
|
Detachers: nil,
|
||||||
}
|
}
|
||||||
plugins := []volume.VolumePlugin{plugin}
|
plugins := []volume.VolumePlugin{plugin}
|
||||||
cloud := &fakecloud.Cloud{}
|
|
||||||
informers := clientgoinformers.NewSharedInformerFactory(testClient, resyncPeriod)
|
informers := clientgoinformers.NewSharedInformerFactory(testClient, resyncPeriod)
|
||||||
ctrl, err := attachdetach.NewAttachDetachController(
|
ctrl, err := attachdetach.NewAttachDetachController(
|
||||||
ctx,
|
ctx,
|
||||||
@ -360,7 +358,6 @@ func createAdClients(ctx context.Context, t *testing.T, server *kubeapiservertes
|
|||||||
informers.Storage().V1().CSINodes(),
|
informers.Storage().V1().CSINodes(),
|
||||||
informers.Storage().V1().CSIDrivers(),
|
informers.Storage().V1().CSIDrivers(),
|
||||||
informers.Storage().V1().VolumeAttachments(),
|
informers.Storage().V1().VolumeAttachments(),
|
||||||
cloud,
|
|
||||||
plugins,
|
plugins,
|
||||||
nil, /* prober */
|
nil, /* prober */
|
||||||
false,
|
false,
|
||||||
@ -379,7 +376,6 @@ func createAdClients(ctx context.Context, t *testing.T, server *kubeapiservertes
|
|||||||
KubeClient: testClient,
|
KubeClient: testClient,
|
||||||
SyncPeriod: controllerOptions.PVClaimBinderSyncPeriod,
|
SyncPeriod: controllerOptions.PVClaimBinderSyncPeriod,
|
||||||
VolumePlugins: plugins,
|
VolumePlugins: plugins,
|
||||||
Cloud: nil,
|
|
||||||
ClusterName: "volume-test-cluster",
|
ClusterName: "volume-test-cluster",
|
||||||
VolumeInformer: informers.Core().V1().PersistentVolumes(),
|
VolumeInformer: informers.Core().V1().PersistentVolumes(),
|
||||||
ClaimInformer: informers.Core().V1().PersistentVolumeClaims(),
|
ClaimInformer: informers.Core().V1().PersistentVolumeClaims(),
|
||||||
|
@ -34,7 +34,6 @@ import (
|
|||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
ref "k8s.io/client-go/tools/reference"
|
ref "k8s.io/client-go/tools/reference"
|
||||||
fakecloud "k8s.io/cloud-provider/fake"
|
|
||||||
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
|
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
persistentvolumecontroller "k8s.io/kubernetes/pkg/controller/volume/persistentvolume"
|
persistentvolumecontroller "k8s.io/kubernetes/pkg/controller/volume/persistentvolume"
|
||||||
@ -1353,7 +1352,6 @@ func createClients(ctx context.Context, namespaceName string, t *testing.T, s *k
|
|||||||
Detachers: nil,
|
Detachers: nil,
|
||||||
}
|
}
|
||||||
plugins := []volume.VolumePlugin{plugin}
|
plugins := []volume.VolumePlugin{plugin}
|
||||||
cloud := &fakecloud.Cloud{}
|
|
||||||
informers := informers.NewSharedInformerFactory(testClient, getSyncPeriod(syncPeriod))
|
informers := informers.NewSharedInformerFactory(testClient, getSyncPeriod(syncPeriod))
|
||||||
ctrl, err := persistentvolumecontroller.NewController(
|
ctrl, err := persistentvolumecontroller.NewController(
|
||||||
ctx,
|
ctx,
|
||||||
@ -1361,7 +1359,6 @@ func createClients(ctx context.Context, namespaceName string, t *testing.T, s *k
|
|||||||
KubeClient: binderClient,
|
KubeClient: binderClient,
|
||||||
SyncPeriod: getSyncPeriod(syncPeriod),
|
SyncPeriod: getSyncPeriod(syncPeriod),
|
||||||
VolumePlugins: plugins,
|
VolumePlugins: plugins,
|
||||||
Cloud: cloud,
|
|
||||||
VolumeInformer: informers.Core().V1().PersistentVolumes(),
|
VolumeInformer: informers.Core().V1().PersistentVolumes(),
|
||||||
ClaimInformer: informers.Core().V1().PersistentVolumeClaims(),
|
ClaimInformer: informers.Core().V1().PersistentVolumeClaims(),
|
||||||
ClassInformer: informers.Storage().V1().StorageClasses(),
|
ClassInformer: informers.Storage().V1().StorageClasses(),
|
||||||
|
@ -1111,7 +1111,6 @@ func initPVController(t *testing.T, testCtx *testutil.TestContext, provisionDela
|
|||||||
// https://github.com/kubernetes/kubernetes/issues/85320
|
// https://github.com/kubernetes/kubernetes/issues/85320
|
||||||
SyncPeriod: 5 * time.Second,
|
SyncPeriod: 5 * time.Second,
|
||||||
VolumePlugins: plugins,
|
VolumePlugins: plugins,
|
||||||
Cloud: nil,
|
|
||||||
ClusterName: "volume-test-cluster",
|
ClusterName: "volume-test-cluster",
|
||||||
VolumeInformer: informerFactory.Core().V1().PersistentVolumes(),
|
VolumeInformer: informerFactory.Core().V1().PersistentVolumes(),
|
||||||
ClaimInformer: informerFactory.Core().V1().PersistentVolumeClaims(),
|
ClaimInformer: informerFactory.Core().V1().PersistentVolumeClaims(),
|
||||||
|
Loading…
Reference in New Issue
Block a user