diff --git a/pkg/features/features.go b/pkg/features/features.go index 51aef93b..fbc51849 100644 --- a/pkg/features/features.go +++ b/pkg/features/features.go @@ -37,6 +37,7 @@ const ( // kep: https://kep.k8s.io/3751 // alpha: v1.29 // beta: v1.31 + // GA: v1.34 // // Pass VolumeAttributesClass parameters to supporting CSI drivers during ModifyVolume VolumeAttributesClass featuregate.Feature = "VolumeAttributesClass" @@ -55,6 +56,6 @@ func init() { var defaultResizerFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{ AnnotateFsResize: {Default: false, PreRelease: featuregate.Alpha}, RecoverVolumeExpansionFailure: {Default: true, PreRelease: featuregate.Beta}, - VolumeAttributesClass: {Default: false, PreRelease: featuregate.Beta}, + VolumeAttributesClass: {Default: true, PreRelease: featuregate.GA}, ReleaseLeaderElectionOnExit: {Default: false, PreRelease: featuregate.Alpha}, } diff --git a/pkg/modifycontroller/controller.go b/pkg/modifycontroller/controller.go index 16054a67..68f386d5 100644 --- a/pkg/modifycontroller/controller.go +++ b/pkg/modifycontroller/controller.go @@ -36,7 +36,7 @@ import ( "k8s.io/client-go/kubernetes/scheme" corev1 "k8s.io/client-go/kubernetes/typed/core/v1" corelisters "k8s.io/client-go/listers/core/v1" - storagev1beta1listers "k8s.io/client-go/listers/storage/v1beta1" + storagev1listers "k8s.io/client-go/listers/storage/v1" "k8s.io/client-go/tools/cache" "k8s.io/client-go/tools/record" "k8s.io/client-go/util/workqueue" @@ -60,7 +60,7 @@ type modifyController struct { pvListerSynced cache.InformerSynced pvcLister corelisters.PersistentVolumeClaimLister pvcListerSynced cache.InformerSynced - vacLister storagev1beta1listers.VolumeAttributesClassLister + vacLister storagev1listers.VolumeAttributesClassLister vacListerSynced cache.InformerSynced extraModifyMetadata bool // the key of the map is {PVC_NAMESPACE}/{PVC_NAME} @@ -81,7 +81,7 @@ func NewModifyController( pvcRateLimiter workqueue.TypedRateLimiter[string]) ModifyController { pvInformer := informerFactory.Core().V1().PersistentVolumes() pvcInformer := informerFactory.Core().V1().PersistentVolumeClaims() - vacInformer := informerFactory.Storage().V1beta1().VolumeAttributesClasses() + vacInformer := informerFactory.Storage().V1().VolumeAttributesClasses() eventBroadcaster := record.NewBroadcaster() eventBroadcaster.StartStructuredLogging(0) eventBroadcaster.StartRecordingToSink(&corev1.EventSinkImpl{Interface: kubeClient.CoreV1().Events(v1.NamespaceAll)}) diff --git a/pkg/modifycontroller/controller_test.go b/pkg/modifycontroller/controller_test.go index 6b016c5d..759b2447 100644 --- a/pkg/modifycontroller/controller_test.go +++ b/pkg/modifycontroller/controller_test.go @@ -14,7 +14,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" v1 "k8s.io/api/core/v1" - storagev1beta1 "k8s.io/api/storage/v1beta1" + storagev1 "k8s.io/api/storage/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" utilfeature "k8s.io/apiserver/pkg/util/feature" @@ -331,7 +331,7 @@ func setupFakeK8sEnvironment(t *testing.T, client *csi.MockClient, initialObject kubeClient, informerFactory := fakeK8s(initialObjects) pvInformer := informerFactory.Core().V1().PersistentVolumes() pvcInformer := informerFactory.Core().V1().PersistentVolumeClaims() - vacInformer := informerFactory.Storage().V1beta1().VolumeAttributesClasses() + vacInformer := informerFactory.Storage().V1().VolumeAttributesClasses() driverName, _ := client.GetDriverName(context.TODO()) @@ -358,7 +358,7 @@ func setupFakeK8sEnvironment(t *testing.T, client *csi.MockClient, initialObject pvInformer.Informer().GetStore().Add(obj) case *v1.PersistentVolumeClaim: pvcInformer.Informer().GetStore().Add(obj) - case *storagev1beta1.VolumeAttributesClass: + case *storagev1.VolumeAttributesClass: vacInformer.Informer().GetStore().Add(obj) default: t.Fatalf("Test %s: Unknown initalObject type: %+v", t.Name(), obj) diff --git a/pkg/modifycontroller/modify_status_test.go b/pkg/modifycontroller/modify_status_test.go index 50c7de27..cb946989 100644 --- a/pkg/modifycontroller/modify_status_test.go +++ b/pkg/modifycontroller/modify_status_test.go @@ -14,7 +14,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" v1 "k8s.io/api/core/v1" - storagev1beta1 "k8s.io/api/storage/v1beta1" + storagev1 "k8s.io/api/storage/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -306,7 +306,7 @@ func TestRemovePVCFromModifyVolumeUncertainCache(t *testing.T) { pvInformer := informerFactory.Core().V1().PersistentVolumes() pvcInformer := informerFactory.Core().V1().PersistentVolumeClaims() podInformer := informerFactory.Core().V1().Pods() - vacInformer := informerFactory.Storage().V1beta1().VolumeAttributesClasses() + vacInformer := informerFactory.Storage().V1().VolumeAttributesClasses() csiModifier, err := modifier.NewModifierFromClient(client, 15*time.Second, kubeClient, informerFactory, false, driverName) if err != nil { @@ -335,7 +335,7 @@ func TestRemovePVCFromModifyVolumeUncertainCache(t *testing.T) { pvcInformer.Informer().GetStore().Add(obj) case *v1.Pod: podInformer.Informer().GetStore().Add(obj) - case *storagev1beta1.VolumeAttributesClass: + case *storagev1.VolumeAttributesClass: vacInformer.Informer().GetStore().Add(obj) default: t.Fatalf("Test %s: Unknown initalObject type: %+v", test.name, obj) diff --git a/pkg/modifycontroller/modify_volume.go b/pkg/modifycontroller/modify_volume.go index 7523ab62..4a8a691a 100644 --- a/pkg/modifycontroller/modify_volume.go +++ b/pkg/modifycontroller/modify_volume.go @@ -25,7 +25,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" v1 "k8s.io/api/core/v1" - storagev1beta1 "k8s.io/api/storage/v1beta1" + storagev1 "k8s.io/api/storage/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/client-go/tools/cache" "k8s.io/klog/v2" @@ -112,7 +112,7 @@ func (ctrl *modifyController) validateVACAndModifyVolumeWithTarget( func (ctrl *modifyController) controllerModifyVolumeWithTarget( pvc *v1.PersistentVolumeClaim, pv *v1.PersistentVolume, - vacObj *storagev1beta1.VolumeAttributesClass, + vacObj *storagev1.VolumeAttributesClass, pvcSpecVacName *string) (*v1.PersistentVolumeClaim, *v1.PersistentVolume, error, bool) { var err error pvc, pv, err = ctrl.callModifyVolumeOnPlugin(pvc, pv, vacObj) @@ -160,7 +160,7 @@ func (ctrl *modifyController) controllerModifyVolumeWithTarget( func (ctrl *modifyController) callModifyVolumeOnPlugin( pvc *v1.PersistentVolumeClaim, pv *v1.PersistentVolume, - vac *storagev1beta1.VolumeAttributesClass) (*v1.PersistentVolumeClaim, *v1.PersistentVolume, error) { + vac *storagev1.VolumeAttributesClass) (*v1.PersistentVolumeClaim, *v1.PersistentVolume, error) { if ctrl.extraModifyMetadata { vac.Parameters[pvcNameKey] = pvc.GetName() vac.Parameters[pvcNamespaceKey] = pvc.GetNamespace() diff --git a/pkg/modifycontroller/modify_volume_test.go b/pkg/modifycontroller/modify_volume_test.go index 97490c47..549de055 100644 --- a/pkg/modifycontroller/modify_volume_test.go +++ b/pkg/modifycontroller/modify_volume_test.go @@ -6,7 +6,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/kubernetes-csi/external-resizer/pkg/csi" v1 "k8s.io/api/core/v1" - storagev1beta1 "k8s.io/api/storage/v1beta1" + storagev1 "k8s.io/api/storage/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -16,13 +16,13 @@ import ( ) var ( - testVacObject = &storagev1beta1.VolumeAttributesClass{ + testVacObject = &storagev1.VolumeAttributesClass{ ObjectMeta: metav1.ObjectMeta{Name: testVac}, DriverName: testDriverName, Parameters: map[string]string{"iops": "3000"}, } - targetVacObject = &storagev1beta1.VolumeAttributesClass{ + targetVacObject = &storagev1.VolumeAttributesClass{ ObjectMeta: metav1.ObjectMeta{Name: targetVac}, DriverName: testDriverName, Parameters: map[string]string{