diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index e451d372c29..e054593aea7 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -161,7 +161,7 @@ const ( // owner: @divyenpatel // beta: v1.19 (requires: vSphere vCenter/ESXi Version: 7.0u2, HW Version: VM version 15) - // + // GA: 1.26 // Enables the vSphere in-tree driver to vSphere CSI Driver migration feature. CSIMigrationvSphere featuregate.Feature = "CSIMigrationvSphere" @@ -871,7 +871,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS CSIMigrationRBD: {Default: false, PreRelease: featuregate.Alpha}, // Off by default (requires RBD CSI driver) - CSIMigrationvSphere: {Default: true, PreRelease: featuregate.Beta}, + CSIMigrationvSphere: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.28 CSINodeExpandSecret: {Default: false, PreRelease: featuregate.Alpha}, diff --git a/pkg/volume/csimigration/plugin_manager_test.go b/pkg/volume/csimigration/plugin_manager_test.go index ae23bd2c9fd..c1517075f47 100644 --- a/pkg/volume/csimigration/plugin_manager_test.go +++ b/pkg/volume/csimigration/plugin_manager_test.go @@ -112,62 +112,6 @@ func TestIsMigratable(t *testing.T) { } } -func TestCheckMigrationFeatureFlags(t *testing.T) { - testCases := []struct { - name string - pluginFeature featuregate.Feature - pluginFeatureEnabled bool - pluginUnregsiterFeature featuregate.Feature - pluginUnregsiterEnabled bool - expectMigrationComplete bool - expectErr bool - }{ - { - name: "plugin specific migration feature enabled with plugin unregister disabled", - pluginFeature: features.CSIMigrationvSphere, - pluginFeatureEnabled: true, - pluginUnregsiterFeature: features.InTreePluginvSphereUnregister, - pluginUnregsiterEnabled: false, - expectMigrationComplete: false, - expectErr: false, - }, - { - name: "plugin specific migration feature and plugin unregister disabled", - pluginFeature: features.CSIMigrationvSphere, - pluginFeatureEnabled: false, - pluginUnregsiterFeature: features.InTreePluginvSphereUnregister, - pluginUnregsiterEnabled: false, - expectMigrationComplete: false, - expectErr: false, - }, - { - name: "all features enabled", - pluginFeature: features.CSIMigrationvSphere, - pluginFeatureEnabled: true, - pluginUnregsiterFeature: features.InTreePluginvSphereUnregister, - pluginUnregsiterEnabled: true, - expectMigrationComplete: true, - expectErr: false, - }, - } - for _, test := range testCases { - t.Run(fmt.Sprintf("Testing %v", test.name), func(t *testing.T) { - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, test.pluginFeature, test.pluginFeatureEnabled)() - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, test.pluginUnregsiterFeature, test.pluginUnregsiterEnabled)() - migrationComplete, err := CheckMigrationFeatureFlags(utilfeature.DefaultFeatureGate, test.pluginFeature, test.pluginUnregsiterFeature) - if err != nil && test.expectErr == false { - t.Errorf("Unexpected error: %v", err) - } - if err == nil && test.expectErr == true { - t.Errorf("Unexpected validation pass") - } - if migrationComplete != test.expectMigrationComplete { - t.Errorf("Unexpected migrationComplete result. Exp: %v, got %v", test.expectMigrationComplete, migrationComplete) - } - }) - } -} - func TestMigrationFeatureFlagStatus(t *testing.T) { testCases := []struct { name string @@ -224,6 +168,28 @@ func TestMigrationFeatureFlagStatus(t *testing.T) { csiMigrationResult: true, csiMigrationCompleteResult: true, }, + { + name: "vsphere-volume migration flag enabled and migration-complete flag disabled with CSI migration flag enabled", + pluginName: "kubernetes.io/vsphere-volume", + pluginFeature: features.CSIMigrationvSphere, + pluginFeatureEnabled: true, + csiMigrationEnabled: true, + inTreePluginUnregister: features.InTreePluginvSphereUnregister, + inTreePluginUnregisterEnabled: false, + csiMigrationResult: true, + csiMigrationCompleteResult: false, + }, + { + name: "vsphere-volume migration flag enabled and migration-complete flag enabled with CSI migration flag enabled", + pluginName: "kubernetes.io/vsphere-volume", + pluginFeature: features.CSIMigrationvSphere, + pluginFeatureEnabled: true, + csiMigrationEnabled: true, + inTreePluginUnregister: features.InTreePluginvSphereUnregister, + inTreePluginUnregisterEnabled: true, + csiMigrationResult: true, + csiMigrationCompleteResult: true, + }, } csiTranslator := csitrans.New() for _, test := range testCases {