Skip to content

Commit a56fa34

Browse files
authored
Merge pull request kubernetes#99942 from jsafrane/refactor-migration-featuregates
Refactor CSI migration plugin manager to get featureGates as a parameter
2 parents 16e9c68 + 219cbc8 commit a56fa34

File tree

11 files changed

+33
-28
lines changed

11 files changed

+33
-28
lines changed

cmd/kube-controller-manager/app/core.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ func startVolumeExpandController(ctx ControllerContext) (http.Handler, bool, err
379379
ctx.Cloud,
380380
plugins,
381381
csiTranslator,
382-
csimigration.NewPluginManager(csiTranslator),
382+
csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
383383
filteredDialOptions,
384384
)
385385

pkg/controller/volume/attachdetach/attach_detach_controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ func NewAttachDetachController(
184184

185185
csiTranslator := csitrans.New()
186186
adc.intreeToCSITranslator = csiTranslator
187-
adc.csiMigratedPluginManager = csimigration.NewPluginManager(csiTranslator)
187+
adc.csiMigratedPluginManager = csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate)
188188

189189
adc.desiredStateOfWorldPopulator = populator.NewDesiredStateOfWorldPopulator(
190190
timerConfig.DesiredStateOfWorldPopulatorLoopSleepPeriod,

pkg/controller/volume/attachdetach/metrics/metrics_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"k8s.io/apimachinery/pkg/api/resource"
2424
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2525
k8stypes "k8s.io/apimachinery/pkg/types"
26+
utilfeature "k8s.io/apiserver/pkg/util/feature"
2627
"k8s.io/client-go/informers"
2728
"k8s.io/client-go/kubernetes/fake"
2829
csitrans "k8s.io/csi-translation-lib"
@@ -117,7 +118,7 @@ func TestVolumesInUseMetricCollection(t *testing.T) {
117118
nil,
118119
nil,
119120
fakeVolumePluginMgr,
120-
csimigration.NewPluginManager(csiTranslator),
121+
csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
121122
csiTranslator)
122123
nodeUseMap := metricCollector.getVolumeInUseCount()
123124
if len(nodeUseMap) < 1 {
@@ -158,7 +159,7 @@ func TestTotalVolumesMetricCollection(t *testing.T) {
158159
asw,
159160
dsw,
160161
fakeVolumePluginMgr,
161-
csimigration.NewPluginManager(csiTranslator),
162+
csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
162163
csiTranslator)
163164

164165
totalVolumesMap := metricCollector.getTotalVolumesCount()

pkg/controller/volume/attachdetach/populator/desired_state_of_world_populator_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
v1 "k8s.io/api/core/v1"
2424
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2525
k8stypes "k8s.io/apimachinery/pkg/types"
26+
utilfeature "k8s.io/apiserver/pkg/util/feature"
2627
"k8s.io/client-go/informers"
2728
"k8s.io/client-go/kubernetes/fake"
2829
csitrans "k8s.io/csi-translation-lib"
@@ -84,7 +85,7 @@ func TestFindAndAddActivePods_FindAndRemoveDeletedPods(t *testing.T) {
8485
podLister: fakePodInformer.Lister(),
8586
pvcLister: pvcLister,
8687
pvLister: pvLister,
87-
csiMigratedPluginManager: csimigration.NewPluginManager(csiTranslator),
88+
csiMigratedPluginManager: csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
8889
intreeToCSITranslator: csiTranslator,
8990
}
9091

@@ -189,7 +190,7 @@ func TestFindAndRemoveNonattachableVolumes(t *testing.T) {
189190
podLister: fakePodInformer.Lister(),
190191
pvcLister: pvcLister,
191192
pvLister: pvLister,
192-
csiMigratedPluginManager: csimigration.NewPluginManager(csiTranslator),
193+
csiMigratedPluginManager: csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
193194
intreeToCSITranslator: csiTranslator,
194195
}
195196

pkg/controller/volume/expand/expand_controller_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ func TestSyncHandler(t *testing.T) {
105105
allPlugins := []volume.VolumePlugin{}
106106
allPlugins = append(allPlugins, awsebs.ProbeVolumePlugins()...)
107107
translator := csitrans.New()
108-
expc, err := NewExpandController(fakeKubeClient, pvcInformer, pvInformer, nil, allPlugins, translator, csimigration.NewPluginManager(translator), nil)
108+
expc, err := NewExpandController(fakeKubeClient, pvcInformer, pvInformer, nil, allPlugins, translator, csimigration.NewPluginManager(translator, utilfeature.DefaultFeatureGate), nil)
109109
if err != nil {
110110
t.Fatalf("error creating expand controller : %v", err)
111111
}

pkg/controller/volume/persistentvolume/pv_controller_base.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"k8s.io/apimachinery/pkg/labels"
3030
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
3131
"k8s.io/apimachinery/pkg/util/wait"
32+
utilfeature "k8s.io/apiserver/pkg/util/feature"
3233
coreinformers "k8s.io/client-go/informers/core/v1"
3334
storageinformers "k8s.io/client-go/informers/storage/v1"
3435
clientset "k8s.io/client-go/kubernetes"
@@ -142,7 +143,7 @@ func NewController(p ControllerParameters) (*PersistentVolumeController, error)
142143

143144
csiTranslator := csitrans.New()
144145
controller.translator = csiTranslator
145-
controller.csiMigratedPluginManager = csimigration.NewPluginManager(csiTranslator)
146+
controller.csiMigratedPluginManager = csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate)
146147

147148
controller.filteredDialOptions = p.FilteredDialOptions
148149

pkg/controller/volume/persistentvolume/pv_controller_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ func TestAnnealMigrationAnnotations(t *testing.T) {
604604
}
605605

606606
translator := csitrans.New()
607-
cmpm := csimigration.NewPluginManager(translator)
607+
cmpm := csimigration.NewPluginManager(translator, utilfeature.DefaultFeatureGate)
608608

609609
for _, tc := range tests {
610610
t.Run(tc.name, func(t *testing.T) {

pkg/kubelet/volumemanager/populator/desired_state_of_world_populator_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1303,7 +1303,7 @@ func createDswpWithVolumeWithCustomPluginMgr(t *testing.T, pv *v1.PersistentVolu
13031303
processedPods: make(map[types.UniquePodName]bool)},
13041304
kubeContainerRuntime: fakeRuntime,
13051305
keepTerminatedPodVolumes: false,
1306-
csiMigratedPluginManager: csimigration.NewPluginManager(csiTranslator),
1306+
csiMigratedPluginManager: csimigration.NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate),
13071307
intreeToCSITranslator: csiTranslator,
13081308
volumePluginMgr: fakeVolumePluginMgr,
13091309
}

pkg/kubelet/volumemanager/volume_manager.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"strings"
2525
"time"
2626

27+
utilfeature "k8s.io/apiserver/pkg/util/feature"
2728
"k8s.io/klog/v2"
2829
"k8s.io/mount-utils"
2930

@@ -178,7 +179,7 @@ func NewVolumeManager(
178179
}
179180

180181
intreeToCSITranslator := csitrans.New()
181-
csiMigratedPluginManager := csimigration.NewPluginManager(intreeToCSITranslator)
182+
csiMigratedPluginManager := csimigration.NewPluginManager(intreeToCSITranslator, utilfeature.DefaultFeatureGate)
182183

183184
vm.intreeToCSITranslator = intreeToCSITranslator
184185
vm.csiMigratedPluginManager = csiMigratedPluginManager

pkg/volume/csimigration/plugin_manager.go

+16-15
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"fmt"
2222

2323
v1 "k8s.io/api/core/v1"
24-
utilfeature "k8s.io/apiserver/pkg/util/feature"
2524
"k8s.io/component-base/featuregate"
2625
csilibplugins "k8s.io/csi-translation-lib/plugins"
2726
"k8s.io/kubernetes/pkg/features"
@@ -38,12 +37,14 @@ type PluginNameMapper interface {
3837
// PluginManager keeps track of migrated state of in-tree plugins
3938
type PluginManager struct {
4039
PluginNameMapper
40+
featureGate featuregate.FeatureGate
4141
}
4242

4343
// NewPluginManager returns a new PluginManager instance
44-
func NewPluginManager(m PluginNameMapper) PluginManager {
44+
func NewPluginManager(m PluginNameMapper, featureGate featuregate.FeatureGate) PluginManager {
4545
return PluginManager{
4646
PluginNameMapper: m,
47+
featureGate: featureGate,
4748
}
4849
}
4950

@@ -60,17 +61,17 @@ func (pm PluginManager) IsMigrationCompleteForPlugin(pluginName string) bool {
6061

6162
switch pluginName {
6263
case csilibplugins.AWSEBSInTreePluginName:
63-
return utilfeature.DefaultFeatureGate.Enabled(features.InTreePluginAWSUnregister)
64+
return pm.featureGate.Enabled(features.InTreePluginAWSUnregister)
6465
case csilibplugins.GCEPDInTreePluginName:
65-
return utilfeature.DefaultFeatureGate.Enabled(features.InTreePluginGCEUnregister)
66+
return pm.featureGate.Enabled(features.InTreePluginGCEUnregister)
6667
case csilibplugins.AzureFileInTreePluginName:
67-
return utilfeature.DefaultFeatureGate.Enabled(features.InTreePluginAzureFileUnregister)
68+
return pm.featureGate.Enabled(features.InTreePluginAzureFileUnregister)
6869
case csilibplugins.AzureDiskInTreePluginName:
69-
return utilfeature.DefaultFeatureGate.Enabled(features.InTreePluginAzureDiskUnregister)
70+
return pm.featureGate.Enabled(features.InTreePluginAzureDiskUnregister)
7071
case csilibplugins.CinderInTreePluginName:
71-
return utilfeature.DefaultFeatureGate.Enabled(features.InTreePluginOpenStackUnregister)
72+
return pm.featureGate.Enabled(features.InTreePluginOpenStackUnregister)
7273
case csilibplugins.VSphereInTreePluginName:
73-
return utilfeature.DefaultFeatureGate.Enabled(features.CSIMigrationvSphereComplete) || utilfeature.DefaultFeatureGate.Enabled(features.InTreePluginvSphereUnregister)
74+
return pm.featureGate.Enabled(features.CSIMigrationvSphereComplete) || pm.featureGate.Enabled(features.InTreePluginvSphereUnregister)
7475
default:
7576
return false
7677
}
@@ -80,23 +81,23 @@ func (pm PluginManager) IsMigrationCompleteForPlugin(pluginName string) bool {
8081
// for a particular storage plugin
8182
func (pm PluginManager) IsMigrationEnabledForPlugin(pluginName string) bool {
8283
// CSIMigration feature should be enabled along with the plugin-specific one
83-
if !utilfeature.DefaultFeatureGate.Enabled(features.CSIMigration) {
84+
if !pm.featureGate.Enabled(features.CSIMigration) {
8485
return false
8586
}
8687

8788
switch pluginName {
8889
case csilibplugins.AWSEBSInTreePluginName:
89-
return utilfeature.DefaultFeatureGate.Enabled(features.CSIMigrationAWS)
90+
return pm.featureGate.Enabled(features.CSIMigrationAWS)
9091
case csilibplugins.GCEPDInTreePluginName:
91-
return utilfeature.DefaultFeatureGate.Enabled(features.CSIMigrationGCE)
92+
return pm.featureGate.Enabled(features.CSIMigrationGCE)
9293
case csilibplugins.AzureFileInTreePluginName:
93-
return utilfeature.DefaultFeatureGate.Enabled(features.CSIMigrationAzureFile)
94+
return pm.featureGate.Enabled(features.CSIMigrationAzureFile)
9495
case csilibplugins.AzureDiskInTreePluginName:
95-
return utilfeature.DefaultFeatureGate.Enabled(features.CSIMigrationAzureDisk)
96+
return pm.featureGate.Enabled(features.CSIMigrationAzureDisk)
9697
case csilibplugins.CinderInTreePluginName:
97-
return utilfeature.DefaultFeatureGate.Enabled(features.CSIMigrationOpenStack)
98+
return pm.featureGate.Enabled(features.CSIMigrationOpenStack)
9899
case csilibplugins.VSphereInTreePluginName:
99-
return utilfeature.DefaultFeatureGate.Enabled(features.CSIMigrationvSphere)
100+
return pm.featureGate.Enabled(features.CSIMigrationvSphere)
100101
default:
101102
return false
102103
}

pkg/volume/csimigration/plugin_manager_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ func TestIsMigratable(t *testing.T) {
125125
}
126126
csiTranslator := csitrans.New()
127127
for _, test := range testCases {
128-
pm := NewPluginManager(csiTranslator)
128+
pm := NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate)
129129
t.Run(fmt.Sprintf("Testing %v", test.name), func(t *testing.T) {
130130
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.CSIMigration, test.csiMigrationEnabled)()
131131
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, test.pluginFeature, test.pluginFeatureEnabled)()
@@ -337,7 +337,7 @@ func TestMigrationFeatureFlagStatus(t *testing.T) {
337337
}
338338
csiTranslator := csitrans.New()
339339
for _, test := range testCases {
340-
pm := NewPluginManager(csiTranslator)
340+
pm := NewPluginManager(csiTranslator, utilfeature.DefaultFeatureGate)
341341
t.Run(fmt.Sprintf("Testing %v", test.name), func(t *testing.T) {
342342
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.CSIMigration, test.csiMigrationEnabled)()
343343
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, test.pluginFeature, test.pluginFeatureEnabled)()

0 commit comments

Comments
 (0)