remove featureGate from PluginManager

Signed-off-by: carlory <baofa.fan@daocloud.io>
This commit is contained in:
carlory 2025-11-13 11:46:20 +08:00
parent 6d1afce678
commit be0e68ba84
12 changed files with 16 additions and 26 deletions

View file

@ -423,7 +423,7 @@ func newPersistentVolumeExpanderController(ctx context.Context, controllerContex
controllerContext.InformerFactory.Core().V1().PersistentVolumeClaims(),
plugins,
csiTranslator,
csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
csimigration.NewPluginManager(csiTranslator),
)
if err != nil {
return nil, fmt.Errorf("failed to init volume expand controller: %w", err)

View file

@ -31,7 +31,6 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
utilfeature "k8s.io/apiserver/pkg/util/feature"
coreinformers "k8s.io/client-go/informers/core/v1"
storageinformersv1 "k8s.io/client-go/informers/storage/v1"
clientset "k8s.io/client-go/kubernetes"
@ -181,7 +180,7 @@ func NewAttachDetachController(
csiTranslator := csitrans.New()
adc.intreeToCSITranslator = csiTranslator
adc.csiMigratedPluginManager = csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate)
adc.csiMigratedPluginManager = csimigration.NewPluginManager(csiTranslator)
adc.desiredStateOfWorldPopulator = populator.NewDesiredStateOfWorldPopulator(
timerConfig.DesiredStateOfWorldPopulatorLoopSleepPeriod,
@ -715,9 +714,7 @@ func (adc *attachDetachController) processVolumeAttachments(logger klog.Logger)
var plugin volume.AttachableVolumePlugin
volumeSpec := volume.NewSpecFromPersistentVolume(pv, false)
// Consult csiMigratedPluginManager first before querying the plugins registered during runtime in volumePluginMgr.
// In-tree plugins that provisioned PVs will not be registered anymore after migration to CSI, once the respective
// feature gate is enabled.
// If the PV has been migrated, translate the in-tree volumeSpec to CSI volumeSpec.
if inTreePluginName, err := adc.csiMigratedPluginManager.GetInTreePluginNameFromSpec(pv, nil); err == nil {
if adc.csiMigratedPluginManager.IsMigrationEnabledForPlugin(inTreePluginName) {
// PV is migrated and should be handled by the CSI plugin instead of the in-tree one

View file

@ -23,7 +23,6 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8stypes "k8s.io/apimachinery/pkg/types"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes/fake"
csitrans "k8s.io/csi-translation-lib"
@ -120,7 +119,7 @@ func TestVolumesInUseMetricCollection(t *testing.T) {
nil,
nil,
fakeVolumePluginMgr,
csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
csimigration.NewPluginManager(csiTranslator),
csiTranslator)
logger, _ := ktesting.NewTestContext(t)
nodeUseMap := metricCollector.getVolumeInUseCount(logger)
@ -163,7 +162,7 @@ func TestTotalVolumesMetricCollection(t *testing.T) {
asw,
dsw,
fakeVolumePluginMgr,
csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
csimigration.NewPluginManager(csiTranslator),
csiTranslator)
totalVolumesMap := metricCollector.getTotalVolumesCount()

View file

@ -23,7 +23,6 @@ import (
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8stypes "k8s.io/apimachinery/pkg/types"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes/fake"
csitrans "k8s.io/csi-translation-lib"
@ -86,7 +85,7 @@ func TestFindAndAddActivePods_FindAndRemoveDeletedPods(t *testing.T) {
podLister: fakePodInformer.Lister(),
pvcLister: pvcLister,
pvLister: pvLister,
csiMigratedPluginManager: csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
csiMigratedPluginManager: csimigration.NewPluginManager(csiTranslator),
intreeToCSITranslator: csiTranslator,
}
@ -191,7 +190,7 @@ func TestFindAndRemoveNonattachableVolumes(t *testing.T) {
podLister: fakePodInformer.Lister(),
pvcLister: pvcLister,
pvLister: pvLister,
csiMigratedPluginManager: csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
csiMigratedPluginManager: csimigration.NewPluginManager(csiTranslator),
intreeToCSITranslator: csiTranslator,
}

View file

@ -35,7 +35,6 @@ import (
"k8s.io/kubernetes/pkg/volume/csimigration"
"k8s.io/kubernetes/pkg/volume/fc"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/kubernetes/fake"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/kubernetes/pkg/volume"
@ -291,7 +290,7 @@ func setup(nodeName string, t *testing.T) (*volume.VolumePluginMgr, csimigration
*fsVolumeMode = v1.PersistentVolumeFilesystem
csiTranslator := csitrans.New()
intreeToCSITranslator := csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate)
intreeToCSITranslator := csimigration.NewPluginManager(csiTranslator)
kubeClient := fake.NewSimpleClientset()
factory := informers.NewSharedInformerFactory(kubeClient, time.Minute)

View file

@ -30,7 +30,6 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/strategicpatch"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/informers"
coretesting "k8s.io/client-go/testing"
csitrans "k8s.io/csi-translation-lib"
@ -108,7 +107,7 @@ func TestSyncHandler(t *testing.T) {
}
allPlugins := []volume.VolumePlugin{}
translator := csitrans.New()
expc, err := NewExpandController(tCtx, fakeKubeClient, pvcInformer, allPlugins, translator, csimigration.NewPluginManager(translator, utilfeature.DefaultFeatureGate))
expc, err := NewExpandController(tCtx, fakeKubeClient, pvcInformer, allPlugins, translator, csimigration.NewPluginManager(translator))
if err != nil {
t.Fatalf("error creating expand controller : %v", err)
}

View file

@ -141,7 +141,7 @@ func NewController(ctx context.Context, p ControllerParameters) (*PersistentVolu
csiTranslator := csitrans.New()
controller.translator = csiTranslator
controller.csiMigratedPluginManager = csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate)
controller.csiMigratedPluginManager = csimigration.NewPluginManager(csiTranslator)
return controller, nil
}

View file

@ -583,7 +583,7 @@ func TestAnnealMigrationAnnotations(t *testing.T) {
}
translator := csitrans.New()
cmpm := csimigration.NewPluginManager(translator, utilfeature.DefaultFeatureGate)
cmpm := csimigration.NewPluginManager(translator)
logger, _ := ktesting.NewTestContext(t)
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
@ -745,7 +745,7 @@ func TestModifyDeletionFinalizers(t *testing.T) {
}
translator := csitrans.New()
cmpm := csimigration.NewPluginManager(translator, utilfeature.DefaultFeatureGate)
cmpm := csimigration.NewPluginManager(translator)
logger, _ := ktesting.NewTestContext(t)
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {

View file

@ -29,7 +29,6 @@ import (
errorutils "k8s.io/apimachinery/pkg/util/errors"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
utilfeature "k8s.io/apiserver/pkg/util/feature"
coreinformers "k8s.io/client-go/informers/core/v1"
storageinformersv1 "k8s.io/client-go/informers/storage/v1"
clientset "k8s.io/client-go/kubernetes"
@ -130,7 +129,7 @@ func NewController(
}
csiTranslator := csitrans.New()
c.csiTranslator = csiTranslator
c.cmpm = csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate)
c.cmpm = csimigration.NewPluginManager(csiTranslator)
// Index pods by its PVC keys. Then we don't need to iterate all pods every time to find
// pods which reference given PVC.

View file

@ -1613,7 +1613,7 @@ func createDswpWithVolumeWithCustomPluginMgr(pv *v1.PersistentVolume, pvc *v1.Pe
actualStateOfWorld: fakeASW,
pods: processedPods{
processedPods: make(map[types.UniquePodName]bool)},
csiMigratedPluginManager: csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
csiMigratedPluginManager: csimigration.NewPluginManager(csiTranslator),
intreeToCSITranslator: csiTranslator,
volumePluginMgr: fakeVolumePluginMgr,
}

View file

@ -207,7 +207,7 @@ func NewVolumeManager(
}
intreeToCSITranslator := csitrans.New()
csiMigratedPluginManager := csimigration.NewPluginManager(intreeToCSITranslator, utilfeature.DefaultFeatureGate)
csiMigratedPluginManager := csimigration.NewPluginManager(intreeToCSITranslator)
vm.intreeToCSITranslator = intreeToCSITranslator
vm.csiMigratedPluginManager = csiMigratedPluginManager

View file

@ -37,14 +37,12 @@ type PluginNameMapper interface {
// PluginManager keeps track of migrated state of in-tree plugins
type PluginManager struct {
PluginNameMapper
featureGate featuregate.FeatureGate
}
// NewPluginManager returns a new PluginManager instance
func NewPluginManager(m PluginNameMapper, featureGate featuregate.FeatureGate) PluginManager {
func NewPluginManager(m PluginNameMapper) PluginManager {
return PluginManager{
PluginNameMapper: m,
featureGate: featureGate,
}
}