diff --git a/pkg/api/persistentvolume/OWNERS b/pkg/api/persistentvolume/OWNERS deleted file mode 100644 index 2152f772fb4..00000000000 --- a/pkg/api/persistentvolume/OWNERS +++ /dev/null @@ -1,5 +0,0 @@ -# See the OWNERS docs at https://go.k8s.io/owners - -reviewers: - - smarterclayton - - jsafrane diff --git a/pkg/api/persistentvolume/util.go b/pkg/api/persistentvolume/util.go deleted file mode 100644 index ad307ba2c95..00000000000 --- a/pkg/api/persistentvolume/util.go +++ /dev/null @@ -1,44 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package persistentvolume - -import ( - utilfeature "k8s.io/apiserver/pkg/util/feature" - api "k8s.io/kubernetes/pkg/apis/core" - "k8s.io/kubernetes/pkg/features" -) - -// DropDisabledFields removes disabled fields from the pv spec. -// This should be called from PrepareForCreate/PrepareForUpdate for all resources containing a pv spec. -func DropDisabledFields(pvSpec *api.PersistentVolumeSpec, oldPVSpec *api.PersistentVolumeSpec) { - if !utilfeature.DefaultFeatureGate.Enabled(features.ExpandCSIVolumes) && !hasExpansionSecrets(oldPVSpec) { - if pvSpec.CSI != nil { - pvSpec.CSI.ControllerExpandSecretRef = nil - } - } -} - -func hasExpansionSecrets(oldPVSpec *api.PersistentVolumeSpec) bool { - if oldPVSpec == nil || oldPVSpec.CSI == nil { - return false - } - - if oldPVSpec.CSI.ControllerExpandSecretRef != nil { - return true - } - return false -} diff --git a/pkg/api/persistentvolume/util_test.go b/pkg/api/persistentvolume/util_test.go deleted file mode 100644 index d23d047a77e..00000000000 --- a/pkg/api/persistentvolume/util_test.go +++ /dev/null @@ -1,117 +0,0 @@ -/* -Copyright 2018 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package persistentvolume - -import ( - "reflect" - "testing" - - "github.com/google/go-cmp/cmp" - - utilfeature "k8s.io/apiserver/pkg/util/feature" - featuregatetesting "k8s.io/component-base/featuregate/testing" - api "k8s.io/kubernetes/pkg/apis/core" - "k8s.io/kubernetes/pkg/features" -) - -func TestDropDisabledFields(t *testing.T) { - secretRef := &api.SecretReference{ - Name: "expansion-secret", - Namespace: "default", - } - - tests := map[string]struct { - oldSpec *api.PersistentVolumeSpec - newSpec *api.PersistentVolumeSpec - expectOldSpec *api.PersistentVolumeSpec - expectNewSpec *api.PersistentVolumeSpec - csiExpansionEnabled bool - }{ - "disabled csi expansion clears secrets": { - csiExpansionEnabled: false, - newSpec: specWithCSISecrets(secretRef), - expectNewSpec: specWithCSISecrets(nil), - oldSpec: nil, - expectOldSpec: nil, - }, - "enabled csi expansion preserve secrets": { - csiExpansionEnabled: true, - newSpec: specWithCSISecrets(secretRef), - expectNewSpec: specWithCSISecrets(secretRef), - oldSpec: nil, - expectOldSpec: nil, - }, - "enabled csi expansion preserve secrets when both old and new have it": { - csiExpansionEnabled: true, - newSpec: specWithCSISecrets(secretRef), - expectNewSpec: specWithCSISecrets(secretRef), - oldSpec: specWithCSISecrets(secretRef), - expectOldSpec: specWithCSISecrets(secretRef), - }, - "disabled csi expansion old pv had secrets": { - csiExpansionEnabled: false, - newSpec: specWithCSISecrets(secretRef), - expectNewSpec: specWithCSISecrets(secretRef), - oldSpec: specWithCSISecrets(secretRef), - expectOldSpec: specWithCSISecrets(secretRef), - }, - "enabled csi expansion preserves secrets when old pv did not had secrets": { - csiExpansionEnabled: true, - newSpec: specWithCSISecrets(secretRef), - expectNewSpec: specWithCSISecrets(secretRef), - oldSpec: specWithCSISecrets(nil), - expectOldSpec: specWithCSISecrets(nil), - }, - "disabled csi expansion clears secrets when old pv did not had secrets": { - csiExpansionEnabled: false, - newSpec: specWithCSISecrets(secretRef), - expectNewSpec: specWithCSISecrets(nil), - oldSpec: specWithCSISecrets(nil), - expectOldSpec: specWithCSISecrets(nil), - }, - } - - for name, tc := range tests { - t.Run(name, func(t *testing.T) { - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.ExpandCSIVolumes, tc.csiExpansionEnabled)() - - DropDisabledFields(tc.newSpec, tc.oldSpec) - if !reflect.DeepEqual(tc.newSpec, tc.expectNewSpec) { - t.Error(cmp.Diff(tc.newSpec, tc.expectNewSpec)) - } - if !reflect.DeepEqual(tc.oldSpec, tc.expectOldSpec) { - t.Error(cmp.Diff(tc.oldSpec, tc.expectOldSpec)) - } - }) - } -} - -func specWithCSISecrets(secret *api.SecretReference) *api.PersistentVolumeSpec { - pvSpec := &api.PersistentVolumeSpec{ - PersistentVolumeSource: api.PersistentVolumeSource{ - CSI: &api.CSIPersistentVolumeSource{ - Driver: "com.google.gcepd", - VolumeHandle: "foobar", - }, - }, - } - - if secret != nil { - pvSpec.CSI.ControllerExpandSecretRef = secret - } - return pvSpec -} diff --git a/pkg/registry/core/persistentvolume/strategy.go b/pkg/registry/core/persistentvolume/strategy.go index 89b5a0332fd..fdccda2a6f3 100644 --- a/pkg/registry/core/persistentvolume/strategy.go +++ b/pkg/registry/core/persistentvolume/strategy.go @@ -28,7 +28,6 @@ import ( "k8s.io/apiserver/pkg/storage" "k8s.io/apiserver/pkg/storage/names" "k8s.io/kubernetes/pkg/api/legacyscheme" - pvutil "k8s.io/kubernetes/pkg/api/persistentvolume" api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/apis/core/validation" volumevalidation "k8s.io/kubernetes/pkg/volume/validation" @@ -63,10 +62,6 @@ func (persistentvolumeStrategy) GetResetFields() map[fieldpath.APIVersion]*field // ResetBeforeCreate clears the Status field which is not allowed to be set by end users on creation. func (persistentvolumeStrategy) PrepareForCreate(ctx context.Context, obj runtime.Object) { - pv := obj.(*api.PersistentVolume) - pv.Status = api.PersistentVolumeStatus{} - - pvutil.DropDisabledFields(&pv.Spec, nil) } func (persistentvolumeStrategy) Validate(ctx context.Context, obj runtime.Object) field.ErrorList { @@ -94,8 +89,6 @@ func (persistentvolumeStrategy) PrepareForUpdate(ctx context.Context, obj, old r newPv := obj.(*api.PersistentVolume) oldPv := old.(*api.PersistentVolume) newPv.Status = oldPv.Status - - pvutil.DropDisabledFields(&newPv.Spec, &oldPv.Spec) } func (persistentvolumeStrategy) ValidateUpdate(ctx context.Context, obj, old runtime.Object) field.ErrorList { diff --git a/pkg/volume/csi/expander.go b/pkg/volume/csi/expander.go index 58594a5bfdc..22692f8e688 100644 --- a/pkg/volume/csi/expander.go +++ b/pkg/volume/csi/expander.go @@ -23,9 +23,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" api "k8s.io/api/core/v1" - utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/klog/v2" - "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/volume" "k8s.io/kubernetes/pkg/volume/util" volumetypes "k8s.io/kubernetes/pkg/volume/util/types" @@ -34,13 +32,6 @@ import ( var _ volume.NodeExpandableVolumePlugin = &csiPlugin{} func (c *csiPlugin) RequiresFSResize() bool { - // We could check plugin's node capability but we instead are going to rely on - // NodeExpand to do the right thing and return early if plugin does not have - // node expansion capability. - if !utilfeature.DefaultFeatureGate.Enabled(features.ExpandCSIVolumes) { - klog.V(4).Infof("Resizing is not enabled for CSI volume") - return false - } return true } diff --git a/test/e2e/storage/flexvolume_online_resize.go b/test/e2e/storage/flexvolume_online_resize.go index 399810c77dc..83add3af0d5 100644 --- a/test/e2e/storage/flexvolume_online_resize.go +++ b/test/e2e/storage/flexvolume_online_resize.go @@ -51,7 +51,7 @@ var _ = utils.SIGDescribe("Mounted flexvolume volume expand [Slow]", func() { nodeKeyValueLabel map[string]string nodeLabelValue string nodeKey string - nodeList *v1.NodeList + node *v1.Node ) f := framework.NewDefaultFramework("mounted-flexvolume-expand") @@ -63,8 +63,9 @@ var _ = utils.SIGDescribe("Mounted flexvolume volume expand [Slow]", func() { c = f.ClientSet ns = f.Namespace.Name framework.ExpectNoError(framework.WaitForAllNodesSchedulable(c, framework.TestContext.NodeSchedulableTimeout)) + var err error - node, err := e2enode.GetRandomReadySchedulableNode(f.ClientSet) + node, err = e2enode.GetRandomReadySchedulableNode(f.ClientSet) framework.ExpectNoError(err) nodeName = node.Name @@ -125,9 +126,8 @@ var _ = utils.SIGDescribe("Mounted flexvolume volume expand [Slow]", func() { driver := "dummy-attachable" - node := nodeList.Items[0] ginkgo.By(fmt.Sprintf("installing flexvolume %s on node %s as %s", path.Join(driverDir, driver), node.Name, driver)) - installFlex(c, &node, "k8s", driver, path.Join(driverDir, driver)) + installFlex(c, node, "k8s", driver, path.Join(driverDir, driver)) ginkgo.By(fmt.Sprintf("installing flexvolume %s on (master) node %s as %s", path.Join(driverDir, driver), node.Name, driver)) installFlex(c, nil, "k8s", driver, path.Join(driverDir, driver))