Merge pull request #99298 from zshihang/csi
graduate CSIServiceAccountToken to beta
This commit is contained in:
@@ -19,6 +19,7 @@ package csidriver
|
||||
import (
|
||||
"context"
|
||||
|
||||
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||
"k8s.io/apiserver/pkg/storage/names"
|
||||
@@ -64,10 +65,7 @@ func (csiDriverStrategy) PrepareForCreate(ctx context.Context, obj runtime.Objec
|
||||
func (csiDriverStrategy) Validate(ctx context.Context, obj runtime.Object) field.ErrorList {
|
||||
csiDriver := obj.(*storage.CSIDriver)
|
||||
|
||||
errs := validation.ValidateCSIDriver(csiDriver)
|
||||
errs = append(errs, validation.ValidateCSIDriver(csiDriver)...)
|
||||
|
||||
return errs
|
||||
return validation.ValidateCSIDriver(csiDriver)
|
||||
}
|
||||
|
||||
// Canonicalize normalizes the object after validation.
|
||||
@@ -82,31 +80,33 @@ func (csiDriverStrategy) AllowCreateOnUpdate() bool {
|
||||
// existing object does not already have that field set. This allows the field to remain when
|
||||
// downgrading to a version that has the feature disabled.
|
||||
func (csiDriverStrategy) PrepareForUpdate(ctx context.Context, obj, old runtime.Object) {
|
||||
if old.(*storage.CSIDriver).Spec.StorageCapacity == nil &&
|
||||
newCSIDriver := obj.(*storage.CSIDriver)
|
||||
oldCSIDriver := old.(*storage.CSIDriver)
|
||||
|
||||
if oldCSIDriver.Spec.StorageCapacity == nil &&
|
||||
!utilfeature.DefaultFeatureGate.Enabled(features.CSIStorageCapacity) {
|
||||
newCSIDriver := obj.(*storage.CSIDriver)
|
||||
newCSIDriver.Spec.StorageCapacity = nil
|
||||
}
|
||||
if old.(*storage.CSIDriver).Spec.VolumeLifecycleModes == nil &&
|
||||
if oldCSIDriver.Spec.VolumeLifecycleModes == nil &&
|
||||
!utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) {
|
||||
newCSIDriver := obj.(*storage.CSIDriver)
|
||||
newCSIDriver.Spec.VolumeLifecycleModes = nil
|
||||
}
|
||||
if old.(*storage.CSIDriver).Spec.FSGroupPolicy == nil &&
|
||||
if oldCSIDriver.Spec.FSGroupPolicy == nil &&
|
||||
!utilfeature.DefaultFeatureGate.Enabled(features.CSIVolumeFSGroupPolicy) {
|
||||
newCSIDriver := obj.(*storage.CSIDriver)
|
||||
newCSIDriver.Spec.FSGroupPolicy = nil
|
||||
}
|
||||
if old.(*storage.CSIDriver).Spec.TokenRequests == nil &&
|
||||
if oldCSIDriver.Spec.TokenRequests == nil &&
|
||||
!utilfeature.DefaultFeatureGate.Enabled(features.CSIServiceAccountToken) {
|
||||
csiDriver := obj.(*storage.CSIDriver)
|
||||
csiDriver.Spec.TokenRequests = nil
|
||||
newCSIDriver.Spec.TokenRequests = nil
|
||||
}
|
||||
if oldCSIDriver.Spec.RequiresRepublish == nil &&
|
||||
!utilfeature.DefaultFeatureGate.Enabled(features.CSIServiceAccountToken) {
|
||||
newCSIDriver.Spec.RequiresRepublish = nil
|
||||
}
|
||||
|
||||
if old.(*storage.CSIDriver).Spec.RequiresRepublish == nil &&
|
||||
!utilfeature.DefaultFeatureGate.Enabled(features.CSIServiceAccountToken) {
|
||||
csiDriver := obj.(*storage.CSIDriver)
|
||||
csiDriver.Spec.RequiresRepublish = nil
|
||||
// Any changes to the mutable fields increment the generation number.
|
||||
if !apiequality.Semantic.DeepEqual(oldCSIDriver.Spec.TokenRequests, newCSIDriver.Spec.TokenRequests) || !apiequality.Semantic.DeepEqual(oldCSIDriver.Spec.RequiresRepublish, newCSIDriver.Spec.RequiresRepublish) {
|
||||
newCSIDriver.Generation = oldCSIDriver.Generation + 1
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -275,6 +275,7 @@ func TestCSIDriverPrepareForUpdate(t *testing.T) {
|
||||
wantModes []storage.VolumeLifecycleMode
|
||||
wantTokenRequests []storage.TokenRequest
|
||||
wantRequiresRepublish *bool
|
||||
wantGeneration int64
|
||||
}{
|
||||
{
|
||||
name: "capacity feature enabled, before: none, update: enabled",
|
||||
@@ -321,6 +322,7 @@ func TestCSIDriverPrepareForUpdate(t *testing.T) {
|
||||
update: driverWithServiceAccountTokenGCP,
|
||||
wantTokenRequests: []storage.TokenRequest{{Audience: gcp}},
|
||||
wantRequiresRepublish: &enabled,
|
||||
wantGeneration: 1,
|
||||
},
|
||||
{
|
||||
name: "service account token feature disabled, before: none, update: audience=gcp",
|
||||
@@ -335,6 +337,7 @@ func TestCSIDriverPrepareForUpdate(t *testing.T) {
|
||||
update: driverWithServiceAccountTokenGCP,
|
||||
wantTokenRequests: []storage.TokenRequest{{Audience: gcp}},
|
||||
wantRequiresRepublish: &enabled,
|
||||
wantGeneration: 1,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -346,6 +349,7 @@ func TestCSIDriverPrepareForUpdate(t *testing.T) {
|
||||
|
||||
csiDriver := test.update.DeepCopy()
|
||||
Strategy.PrepareForUpdate(ctx, csiDriver, test.old)
|
||||
require.Equal(t, test.wantGeneration, csiDriver.GetGeneration())
|
||||
require.Equal(t, test.wantCapacity, csiDriver.Spec.StorageCapacity)
|
||||
require.Equal(t, test.wantModes, csiDriver.Spec.VolumeLifecycleModes)
|
||||
require.Equal(t, test.wantTokenRequests, csiDriver.Spec.TokenRequests)
|
||||
|
Reference in New Issue
Block a user