From 2472291790e8142deb063024b413b2c6f9f02ff2 Mon Sep 17 00:00:00 2001 From: Patrick Ohly Date: Wed, 14 Jun 2023 10:26:56 +0200 Subject: [PATCH] api: introduce separate VolumeResourceRequirements struct PVC and containers shared the same ResourceRequirements struct to define their API. When resource claims were added, that struct got extended, which accidentally also changed the PVC API. To avoid such a mistake from happening again, PVC now uses its own VolumeResourceRequirements struct. The `Claims` field gets removed because risk of breaking someone is low: theoretically, YAML files which have a claims field for volumes now get rejected when validating against the OpenAPI. Such files have never made sense and should be fixed. Code that uses the struct definitions needs to be updated. --- pkg/api/persistentvolumeclaim/util.go | 4 - pkg/api/persistentvolumeclaim/util_test.go | 14 +-- pkg/api/pod/util.go | 10 -- pkg/api/pod/util_test.go | 38 ------ pkg/api/pod/warnings_test.go | 4 +- pkg/apis/apps/validation/validation_test.go | 4 +- pkg/apis/core/types.go | 14 ++- pkg/apis/core/validation/validation_test.go | 114 +++++++++--------- .../history/controller_history_test.go | 4 +- .../statefulset/stateful_set_utils_test.go | 4 +- .../attachdetach/metrics/metrics_test.go | 2 +- .../volume/expand/expand_controller_test.go | 2 +- .../volume/persistentvolume/framework_test.go | 2 +- .../volume/persistentvolume/index_test.go | 12 +- .../desired_state_of_world_populator_test.go | 6 +- .../reconciler/reconciler_test.go | 2 +- .../core/persistent_volume_claims_test.go | 6 +- .../storage/storage_test.go | 4 +- .../plugins/volumebinding/binder_test.go | 2 +- .../plugins/volumebinding/test_utils.go | 2 +- pkg/scheduler/testing/wrappers.go | 2 +- pkg/volume/testing/testing.go | 5 +- .../operation_generator_test.go | 2 +- pkg/volume/util/resize_util_test.go | 2 +- .../admission/limitranger/admission_test.go | 21 ++-- .../noderestriction/admission_test.go | 2 +- .../admission/resourcequota/admission_test.go | 21 ++-- .../persistentvolume/resize/admission_test.go | 20 +-- staging/src/k8s.io/api/core/v1/types.go | 23 +++- .../storage/volume/pv_helpers_test.go | 2 +- test/e2e/apimachinery/resource_quota.go | 2 +- test/e2e/framework/pv/pv.go | 2 +- test/e2e/framework/statefulset/fixtures.go | 2 +- test/e2e/storage/framework/volume_resource.go | 2 +- test/e2e/storage/persistent_volumes-local.go | 2 +- test/e2e/storage/testsuites/ephemeral.go | 2 +- test/e2e/storage/vsphere/vsphere_utils.go | 4 +- test/integration/auth/node_test.go | 2 +- test/integration/pvc/upgrade_test.go | 2 +- .../scheduler/filters/filters_test.go | 2 +- .../scheduler/preemption/preemption_test.go | 2 +- test/integration/statefulset/util.go | 2 +- .../storageclasses/storage_classes_test.go | 4 +- test/integration/volume/attach_detach_test.go | 2 +- .../volume/persistent_volumes_test.go | 6 +- .../volumescheduling/volume_binding_test.go | 2 +- .../volume_capacity_priority_test.go | 2 +- test/utils/runners.go | 2 +- 48 files changed, 192 insertions(+), 202 deletions(-) diff --git a/pkg/api/persistentvolumeclaim/util.go b/pkg/api/persistentvolumeclaim/util.go index b847a87161c..ee7f0f02957 100644 --- a/pkg/api/persistentvolumeclaim/util.go +++ b/pkg/api/persistentvolumeclaim/util.go @@ -51,10 +51,6 @@ func DropDisabledFields(pvcSpec, oldPVCSpec *core.PersistentVolumeClaimSpec) { pvcSpec.DataSourceRef = nil } } - - // Setting VolumeClaimTemplate.Resources.Claims should have been caught by validation when - // extending ResourceRequirements in 1.26. Now we can only accept it and drop the field. - pvcSpec.Resources.Claims = nil } // EnforceDataSourceBackwardsCompatibility drops the data source field under certain conditions diff --git a/pkg/api/persistentvolumeclaim/util_test.go b/pkg/api/persistentvolumeclaim/util_test.go index 4ceec00b9b3..60574eb10d3 100644 --- a/pkg/api/persistentvolumeclaim/util_test.go +++ b/pkg/api/persistentvolumeclaim/util_test.go @@ -262,10 +262,7 @@ func TestDataSourceFilter(t *testing.T) { spec: core.PersistentVolumeClaimSpec{DataSourceRef: xnsVolumeDataSourceRef}, oldSpec: core.PersistentVolumeClaimSpec{DataSourceRef: volumeDataSourceRef}, anyEnabled: true, - wantRef: xnsVolumeDataSourceRef, // existing field isn't dropped. - }, - "clear Resources.Claims": { - spec: core.PersistentVolumeClaimSpec{Resources: core.ResourceRequirements{Claims: []core.ResourceClaim{{Name: "dra"}}}}, + wantRef: xnsVolumeDataSourceRef, // existing field isn't dropped.8 }, } @@ -282,9 +279,6 @@ func TestDataSourceFilter(t *testing.T) { t.Errorf("expected condition was not met, test: %s, anyEnabled: %v, xnsEnabled: %v, spec: %+v, expected DataSourceRef: %+v", testName, test.anyEnabled, test.xnsEnabled, test.spec, test.wantRef) } - if test.spec.Resources.Claims != nil { - t.Errorf("expected Resources.Claims to be cleared") - } }) } } @@ -515,7 +509,7 @@ func TestWarnings(t *testing.T) { name: "200Mi requests no warning", template: &core.PersistentVolumeClaim{ Spec: core.PersistentVolumeClaimSpec{ - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceStorage: resource.MustParse("200Mi"), }, @@ -531,7 +525,7 @@ func TestWarnings(t *testing.T) { name: "200m warning", template: &core.PersistentVolumeClaim{ Spec: core.PersistentVolumeClaimSpec{ - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceStorage: resource.MustParse("200m"), }, @@ -550,7 +544,7 @@ func TestWarnings(t *testing.T) { name: "integer no warning", template: &core.PersistentVolumeClaim{ Spec: core.PersistentVolumeClaimSpec{ - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceStorage: resource.MustParse("200"), }, diff --git a/pkg/api/pod/util.go b/pkg/api/pod/util.go index ebc0a6b3d9c..6b7394fe8eb 100644 --- a/pkg/api/pod/util.go +++ b/pkg/api/pod/util.go @@ -608,16 +608,6 @@ func dropDisabledDynamicResourceAllocationFields(podSpec, oldPodSpec *api.PodSpe dropEphemeralResourceClaimRequests(podSpec.EphemeralContainers) podSpec.ResourceClaims = nil } - - // Setting VolumeClaimTemplate.Resources.Claims should have been - // treated as an error by validation when extending - // ResourceRequirements in 1.26. Now we can only accept it and drop the - // field. - for i := range podSpec.Volumes { - if podSpec.Volumes[i].Ephemeral != nil && podSpec.Volumes[i].Ephemeral.VolumeClaimTemplate != nil { - podSpec.Volumes[i].Ephemeral.VolumeClaimTemplate.Spec.Resources.Claims = nil - } - } } func dynamicResourceAllocationInUse(podSpec *api.PodSpec) bool { diff --git a/pkg/api/pod/util_test.go b/pkg/api/pod/util_test.go index 725a23d7d90..b43e52e1595 100644 --- a/pkg/api/pod/util_test.go +++ b/pkg/api/pod/util_test.go @@ -1889,44 +1889,6 @@ func TestValidateTopologySpreadConstraintLabelSelectorOption(t *testing.T) { } } -func TestDropVolumesClaimField(t *testing.T) { - pod := &api.Pod{ - Spec: api.PodSpec{ - Volumes: []api.Volume{ - {}, - { - VolumeSource: api.VolumeSource{ - Ephemeral: &api.EphemeralVolumeSource{}, - }, - }, - { - VolumeSource: api.VolumeSource{ - Ephemeral: &api.EphemeralVolumeSource{ - VolumeClaimTemplate: &api.PersistentVolumeClaimTemplate{ - Spec: api.PersistentVolumeClaimSpec{ - Resources: api.ResourceRequirements{ - Claims: []api.ResourceClaim{ - {Name: "dra"}, - }, - }, - }, - }, - }, - }, - }, - }, - }, - } - - DropDisabledPodFields(pod, nil) - - for i, volume := range pod.Spec.Volumes { - if volume.Ephemeral != nil && volume.Ephemeral.VolumeClaimTemplate != nil && volume.Ephemeral.VolumeClaimTemplate.Spec.Resources.Claims != nil { - t.Errorf("volume #%d: Resources.Claim should be nil", i) - } - } -} - func TestDropInPlacePodVerticalScaling(t *testing.T) { podWithInPlaceVerticalScaling := func() *api.Pod { return &api.Pod{ diff --git a/pkg/api/pod/warnings_test.go b/pkg/api/pod/warnings_test.go index 72241ce4ade..d94fc40f745 100644 --- a/pkg/api/pod/warnings_test.go +++ b/pkg/api/pod/warnings_test.go @@ -504,7 +504,7 @@ func TestWarnings(t *testing.T) { Spec: api.PodSpec{Volumes: []api.Volume{ {Name: "ephemeral-volume", VolumeSource: api.VolumeSource{Ephemeral: &api.EphemeralVolumeSource{ VolumeClaimTemplate: &api.PersistentVolumeClaimTemplate{ - Spec: api.PersistentVolumeClaimSpec{Resources: api.ResourceRequirements{ + Spec: api.PersistentVolumeClaimSpec{Resources: api.VolumeResourceRequirements{ Requests: api.ResourceList{api.ResourceStorage: resource.MustParse("200Mi")}}}, }, }}}}}, @@ -518,7 +518,7 @@ func TestWarnings(t *testing.T) { Spec: api.PodSpec{Volumes: []api.Volume{ {Name: "ephemeral-volume", VolumeSource: api.VolumeSource{Ephemeral: &api.EphemeralVolumeSource{ VolumeClaimTemplate: &api.PersistentVolumeClaimTemplate{ - Spec: api.PersistentVolumeClaimSpec{Resources: api.ResourceRequirements{ + Spec: api.PersistentVolumeClaimSpec{Resources: api.VolumeResourceRequirements{ Requests: api.ResourceList{api.ResourceStorage: resource.MustParse("200m")}}}, }, }}}}}, diff --git a/pkg/apis/apps/validation/validation_test.go b/pkg/apis/apps/validation/validation_test.go index 07d2dc8c773..4ac9a8181b8 100644 --- a/pkg/apis/apps/validation/validation_test.go +++ b/pkg/apis/apps/validation/validation_test.go @@ -781,7 +781,7 @@ func TestValidateStatefulSetUpdate(t *testing.T) { }, Spec: api.PersistentVolumeClaimSpec{ StorageClassName: &storageClass, - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: api.ResourceList{ api.ResourceStorage: resource.MustParse("1Gi"), }, @@ -800,7 +800,7 @@ func TestValidateStatefulSetUpdate(t *testing.T) { }, Spec: api.PersistentVolumeClaimSpec{ StorageClassName: &storageClass2, - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: api.ResourceList{ api.ResourceStorage: resource.MustParse("2Gi"), }, diff --git a/pkg/apis/core/types.go b/pkg/apis/core/types.go index 60e47b1632f..51423b4109c 100644 --- a/pkg/apis/core/types.go +++ b/pkg/apis/core/types.go @@ -440,7 +440,7 @@ type PersistentVolumeClaimSpec struct { // that are lower than previous value but must still be higher than capacity recorded in the // status field of the claim. // +optional - Resources ResourceRequirements + Resources VolumeResourceRequirements // VolumeName is the binding reference to the PersistentVolume backing this // claim. When set to non-empty value Selector is not evaluated // +optional @@ -2282,6 +2282,18 @@ type ResourceRequirements struct { Claims []ResourceClaim } +// VolumeResourceRequirements describes the storage resource requirements for a volume. +type VolumeResourceRequirements struct { + // Limits describes the maximum amount of compute resources allowed. + // +optional + Limits ResourceList + // Requests describes the minimum amount of compute resources required. + // If Request is omitted for a container, it defaults to Limits if that is explicitly specified, + // otherwise to an implementation-defined value + // +optional + Requests ResourceList +} + // ResourceClaim references one entry in PodSpec.ResourceClaims. type ResourceClaim struct { // Name must match the name of one entry in pod.spec.resourceClaims of diff --git a/pkg/apis/core/validation/validation_test.go b/pkg/apis/core/validation/validation_test.go index 55a83faa8f2..cc366cb57fa 100644 --- a/pkg/apis/core/validation/validation_test.go +++ b/pkg/apis/core/validation/validation_test.go @@ -1479,7 +1479,7 @@ func testVolumeSnapshotDataSourceInSpec(name string, kind string, apiGroup strin AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -1565,7 +1565,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -1722,7 +1722,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { enableReadWriteOncePod: true, claim: testVolumeClaim(goodName, goodNS, core.PersistentVolumeClaimSpec{ AccessModes: []core.PersistentVolumeAccessMode{"ReadWriteOncePod"}, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -1734,7 +1734,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { enableReadWriteOncePod: false, claim: testVolumeClaim(goodName, goodNS, core.PersistentVolumeClaimSpec{ AccessModes: []core.PersistentVolumeAccessMode{"ReadWriteOncePod"}, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -1746,7 +1746,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { enableReadWriteOncePod: true, claim: testVolumeClaim(goodName, goodNS, core.PersistentVolumeClaimSpec{ AccessModes: []core.PersistentVolumeAccessMode{"ReadWriteOncePod", "ReadWriteMany"}, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -1766,7 +1766,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("0G"), }, @@ -1788,7 +1788,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -1799,7 +1799,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { isExpectedFailure: true, claim: testVolumeClaim(goodName, goodNS, core.PersistentVolumeClaimSpec{ AccessModes: []core.PersistentVolumeAccessMode{"fakemode"}, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -1809,7 +1809,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { "no-access-modes": { isExpectedFailure: true, claim: testVolumeClaim(goodName, goodNS, core.PersistentVolumeClaimSpec{ - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -1830,7 +1830,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadWriteOnce, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceMemory): resource.MustParse("10G"), }, @@ -1850,7 +1850,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("-10G"), }, @@ -1870,7 +1870,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("0G"), }, @@ -1890,7 +1890,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -1905,7 +1905,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -1919,7 +1919,7 @@ func testValidatePVC(t *testing.T, ephemeral bool) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadWriteOnce, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2063,7 +2063,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2076,7 +2076,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2086,7 +2086,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2097,7 +2097,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2109,7 +2109,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("20G"), }, @@ -2120,7 +2120,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadWriteOnce, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2132,7 +2132,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, }, VolumeMode: &file, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2144,7 +2144,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, }, VolumeMode: &block, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2156,7 +2156,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, }, VolumeMode: nil, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2167,7 +2167,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2178,7 +2178,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2190,7 +2190,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2202,7 +2202,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("15G"), }, @@ -2216,7 +2216,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("5G"), }, @@ -2230,7 +2230,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("12G"), }, @@ -2243,7 +2243,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2254,7 +2254,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2265,7 +2265,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2276,7 +2276,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2288,7 +2288,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2300,7 +2300,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2312,7 +2312,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2323,7 +2323,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadWriteOncePod, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2335,7 +2335,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadWriteOncePod, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -2347,7 +2347,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("15G"), }, @@ -2364,7 +2364,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("12G"), }, @@ -2381,7 +2381,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceStorage: resource.MustParse("13G"), }, @@ -2398,7 +2398,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceStorage: resource.MustParse("10G"), }, @@ -2415,7 +2415,7 @@ func TestValidatePersistentVolumeClaimUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceStorage: resource.MustParse("3G"), }, @@ -5346,7 +5346,7 @@ func createTestVolModePVC(vmode *core.PersistentVolumeMode) *core.PersistentVolu Namespace: "default", }, Spec: core.PersistentVolumeClaimSpec{ - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -6125,7 +6125,7 @@ func TestValidateVolumeMounts(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadWriteOnce, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -6433,7 +6433,7 @@ func TestAlphaValidateVolumeDevices(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadWriteOnce, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -9418,7 +9418,7 @@ func TestValidatePod(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadWriteOnce, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -18416,7 +18416,7 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -18427,7 +18427,7 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -18443,7 +18443,7 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -18463,7 +18463,7 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -18482,7 +18482,7 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{ core.ReadWriteOnce, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -18599,7 +18599,7 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -18619,7 +18619,7 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -21147,7 +21147,7 @@ func testDataSourceInSpec(name, kind, apiGroup string) *core.PersistentVolumeCla AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, @@ -21272,7 +21272,7 @@ func pvcSpecWithCrossNamespaceSource(apiGroup *string, kind string, namespace *s AccessModes: []core.PersistentVolumeAccessMode{ core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10G"), }, diff --git a/pkg/controller/history/controller_history_test.go b/pkg/controller/history/controller_history_test.go index be24d18c1d5..c0d376f5cb5 100644 --- a/pkg/controller/history/controller_history_test.go +++ b/pkg/controller/history/controller_history_test.go @@ -26,7 +26,7 @@ import ( "time" apps "k8s.io/api/apps/v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/client-go/informers" "k8s.io/client-go/kubernetes/fake" clientscheme "k8s.io/client-go/kubernetes/scheme" @@ -1679,7 +1679,7 @@ func newStatefulSet(replicas int, name string, uid types.UID, labels map[string] { ObjectMeta: metav1.ObjectMeta{Name: "datadir"}, Spec: v1.PersistentVolumeClaimSpec{ - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceStorage: *resource.NewQuantity(1, resource.BinarySI), }, diff --git a/pkg/controller/statefulset/stateful_set_utils_test.go b/pkg/controller/statefulset/stateful_set_utils_test.go index 82dd4749a48..a284896574f 100644 --- a/pkg/controller/statefulset/stateful_set_utils_test.go +++ b/pkg/controller/statefulset/stateful_set_utils_test.go @@ -788,7 +788,7 @@ func newPVC(name string) v1.PersistentVolumeClaim { Name: name, }, Spec: v1.PersistentVolumeClaimSpec{ - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceStorage: *resource.NewQuantity(1, resource.BinarySI), }, @@ -933,7 +933,7 @@ func newStatefulSetWithLabels(replicas int, name string, uid types.UID, labels m { ObjectMeta: metav1.ObjectMeta{Namespace: "default", Name: "datadir"}, Spec: v1.PersistentVolumeClaimSpec{ - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceStorage: *resource.NewQuantity(1, resource.BinarySI), }, diff --git a/pkg/controller/volume/attachdetach/metrics/metrics_test.go b/pkg/controller/volume/attachdetach/metrics/metrics_test.go index 272b24372f2..c0beae37810 100644 --- a/pkg/controller/volume/attachdetach/metrics/metrics_test.go +++ b/pkg/controller/volume/attachdetach/metrics/metrics_test.go @@ -78,7 +78,7 @@ func TestVolumesInUseMetricCollection(t *testing.T) { }, Spec: v1.PersistentVolumeClaimSpec{ AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany, v1.ReadWriteOnce}, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse("2G"), }, diff --git a/pkg/controller/volume/expand/expand_controller_test.go b/pkg/controller/volume/expand/expand_controller_test.go index 180923dd9e4..af7835ee44f 100644 --- a/pkg/controller/volume/expand/expand_controller_test.go +++ b/pkg/controller/volume/expand/expand_controller_test.go @@ -205,7 +205,7 @@ func getFakePersistentVolumeClaim(pvcName, volumeName, statusSize, requestSize s pvc := &v1.PersistentVolumeClaim{ ObjectMeta: metav1.ObjectMeta{Name: pvcName, Namespace: "default", UID: uid}, Spec: v1.PersistentVolumeClaimSpec{ - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: map[v1.ResourceName]resource.Quantity{ v1.ResourceStorage: resource.MustParse(requestSize), }, diff --git a/pkg/controller/volume/persistentvolume/framework_test.go b/pkg/controller/volume/persistentvolume/framework_test.go index b50adabb96f..b16f5668338 100644 --- a/pkg/controller/volume/persistentvolume/framework_test.go +++ b/pkg/controller/volume/persistentvolume/framework_test.go @@ -457,7 +457,7 @@ func newClaim(name, claimUID, capacity, boundToVolume string, phase v1.Persisten }, Spec: v1.PersistentVolumeClaimSpec{ AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce, v1.ReadOnlyMany}, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(capacity), }, diff --git a/pkg/controller/volume/persistentvolume/index_test.go b/pkg/controller/volume/persistentvolume/index_test.go index a4b72acee36..46b9746d413 100644 --- a/pkg/controller/volume/persistentvolume/index_test.go +++ b/pkg/controller/volume/persistentvolume/index_test.go @@ -38,7 +38,7 @@ func makePVC(size string, modfn func(*v1.PersistentVolumeClaim)) *v1.PersistentV }, Spec: v1.PersistentVolumeClaimSpec{ AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany, v1.ReadWriteOnce}, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(size), }, @@ -61,7 +61,7 @@ func makeVolumeModePVC(size string, mode *v1.PersistentVolumeMode, modfn func(*v Spec: v1.PersistentVolumeClaimSpec{ VolumeMode: mode, AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(size), }, @@ -251,7 +251,7 @@ func TestMatchingWithBoundVolumes(t *testing.T) { }, Spec: v1.PersistentVolumeClaimSpec{ AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany, v1.ReadWriteOnce}, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse("1G"), }, @@ -387,7 +387,7 @@ func TestFindingVolumeWithDifferentAccessModes(t *testing.T) { }, Spec: v1.PersistentVolumeClaimSpec{ AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}, - Resources: v1.ResourceRequirements{Requests: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("1G")}}, + Resources: v1.VolumeResourceRequirements{Requests: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("1G")}}, VolumeMode: &fs, }, } @@ -1236,7 +1236,7 @@ func TestStorageObjectInUseProtectionFiltering(t *testing.T) { }, Spec: v1.PersistentVolumeClaimSpec{ AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}, - Resources: v1.ResourceRequirements{Requests: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("1G")}}, + Resources: v1.VolumeResourceRequirements{Requests: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("1G")}}, VolumeMode: &fs, }, } @@ -1318,7 +1318,7 @@ func TestFindingPreboundVolumes(t *testing.T) { }, Spec: v1.PersistentVolumeClaimSpec{ AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}, - Resources: v1.ResourceRequirements{Requests: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("1Gi")}}, + Resources: v1.VolumeResourceRequirements{Requests: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("1Gi")}}, VolumeMode: &fs, }, } diff --git a/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator_test.go b/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator_test.go index 2b4d8f812d6..a16adb55dc2 100644 --- a/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator_test.go +++ b/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator_test.go @@ -1295,7 +1295,7 @@ func TestCheckVolumeSELinux(t *testing.T) { pvc := &v1.PersistentVolumeClaim{ Spec: v1.PersistentVolumeClaimSpec{ VolumeName: pv.Name, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: pv.Spec.Capacity, }, AccessModes: tc.accessModes, @@ -1392,7 +1392,7 @@ func createResizeRelatedVolumes(volumeMode *v1.PersistentVolumeMode) (pv *v1.Per pvc = &v1.PersistentVolumeClaim{ Spec: v1.PersistentVolumeClaimSpec{ VolumeName: pv.Name, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: pv.Spec.Capacity, }, }, @@ -1561,7 +1561,7 @@ func createEphemeralVolumeObjects(podName, volumeName string, owned bool, volume }, Spec: v1.PersistentVolumeClaimSpec{ VolumeName: volumeName, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: pv.Spec.Capacity, }, }, diff --git a/pkg/kubelet/volumemanager/reconciler/reconciler_test.go b/pkg/kubelet/volumemanager/reconciler/reconciler_test.go index 7e69ace560d..0aa8456a23a 100644 --- a/pkg/kubelet/volumemanager/reconciler/reconciler_test.go +++ b/pkg/kubelet/volumemanager/reconciler/reconciler_test.go @@ -1395,7 +1395,7 @@ func getTestPVC(pvName string, volumeMode *v1.PersistentVolumeMode, specSize, st UID: "pvcuid", }, Spec: v1.PersistentVolumeClaimSpec{ - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceStorage: specSize, }, diff --git a/pkg/quota/v1/evaluator/core/persistent_volume_claims_test.go b/pkg/quota/v1/evaluator/core/persistent_volume_claims_test.go index afa9c764589..187c1c78660 100644 --- a/pkg/quota/v1/evaluator/core/persistent_volume_claims_test.go +++ b/pkg/quota/v1/evaluator/core/persistent_volume_claims_test.go @@ -54,7 +54,7 @@ func TestPersistentVolumeClaimEvaluatorUsage(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10Gi"), }, @@ -73,7 +73,7 @@ func TestPersistentVolumeClaimEvaluatorUsage(t *testing.T) { core.ReadWriteOnce, core.ReadOnlyMany, }, - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceName(core.ResourceStorage): resource.MustParse("10Gi"), }, @@ -170,7 +170,7 @@ func TestPersistentVolumeClaimEvaluatorUsage(t *testing.T) { func getPVCWithAllocatedResource(pvcSize, allocatedSize string) *core.PersistentVolumeClaim { validPVCWithAllocatedResources := testVolumeClaim("foo", "ns", core.PersistentVolumeClaimSpec{ - Resources: core.ResourceRequirements{ + Resources: core.VolumeResourceRequirements{ Requests: core.ResourceList{ core.ResourceStorage: resource.MustParse(pvcSize), }, diff --git a/pkg/registry/core/persistentvolumeclaim/storage/storage_test.go b/pkg/registry/core/persistentvolumeclaim/storage/storage_test.go index 21b2d4fd55b..b3df789a590 100644 --- a/pkg/registry/core/persistentvolumeclaim/storage/storage_test.go +++ b/pkg/registry/core/persistentvolumeclaim/storage/storage_test.go @@ -62,7 +62,7 @@ func validNewPersistentVolumeClaim(name, ns string) *api.PersistentVolumeClaim { }, Spec: api.PersistentVolumeClaimSpec{ AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce}, - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: api.ResourceList{ api.ResourceName(api.ResourceStorage): resource.MustParse("10G"), }, @@ -178,7 +178,7 @@ func TestUpdateStatus(t *testing.T) { }, Spec: api.PersistentVolumeClaimSpec{ AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce}, - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: api.ResourceList{ api.ResourceName(api.ResourceStorage): resource.MustParse("3Gi"), }, diff --git a/pkg/scheduler/framework/plugins/volumebinding/binder_test.go b/pkg/scheduler/framework/plugins/volumebinding/binder_test.go index 5d7fdca1a1b..f053900c75b 100644 --- a/pkg/scheduler/framework/plugins/volumebinding/binder_test.go +++ b/pkg/scheduler/framework/plugins/volumebinding/binder_test.go @@ -627,7 +627,7 @@ func makeTestPVC(name, size, node string, pvcBoundState int, pvName, resourceVer ResourceVersion: resourceVersion, }, Spec: v1.PersistentVolumeClaimSpec{ - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(size), }, diff --git a/pkg/scheduler/framework/plugins/volumebinding/test_utils.go b/pkg/scheduler/framework/plugins/volumebinding/test_utils.go index d58e3667999..4ec84825b7e 100644 --- a/pkg/scheduler/framework/plugins/volumebinding/test_utils.go +++ b/pkg/scheduler/framework/plugins/volumebinding/test_utils.go @@ -127,7 +127,7 @@ func (pvcb pvcBuilder) withBoundPV(pvName string) pvcBuilder { } func (pvcb pvcBuilder) withRequestStorage(request resource.Quantity) pvcBuilder { - pvcb.PersistentVolumeClaim.Spec.Resources = v1.ResourceRequirements{ + pvcb.PersistentVolumeClaim.Spec.Resources = v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): request, }, diff --git a/pkg/scheduler/testing/wrappers.go b/pkg/scheduler/testing/wrappers.go index bb0dc78f131..a3ebfbcaeba 100644 --- a/pkg/scheduler/testing/wrappers.go +++ b/pkg/scheduler/testing/wrappers.go @@ -801,7 +801,7 @@ func (p *PersistentVolumeClaimWrapper) AccessModes(accessModes []v1.PersistentVo // Resources sets `resources` as the resource requirements of the inner // PersistentVolumeClaim. -func (p *PersistentVolumeClaimWrapper) Resources(resources v1.ResourceRequirements) *PersistentVolumeClaimWrapper { +func (p *PersistentVolumeClaimWrapper) Resources(resources v1.VolumeResourceRequirements) *PersistentVolumeClaimWrapper { p.PersistentVolumeClaim.Spec.Resources = resources return p } diff --git a/pkg/volume/testing/testing.go b/pkg/volume/testing/testing.go index ae597e26573..5eb82b68ea6 100644 --- a/pkg/volume/testing/testing.go +++ b/pkg/volume/testing/testing.go @@ -18,7 +18,6 @@ package testing import ( "fmt" - "k8s.io/klog/v2" "os" "path/filepath" goruntime "runtime" @@ -27,6 +26,8 @@ import ( "testing" "time" + "k8s.io/klog/v2" + "k8s.io/apimachinery/pkg/util/sets" "k8s.io/utils/exec" testingexec "k8s.io/utils/exec/testing" @@ -1706,7 +1707,7 @@ func CreateTestPVC(capacity string, accessModes []v1.PersistentVolumeAccessMode) }, Spec: v1.PersistentVolumeClaimSpec{ AccessModes: accessModes, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(capacity), }, diff --git a/pkg/volume/util/operationexecutor/operation_generator_test.go b/pkg/volume/util/operationexecutor/operation_generator_test.go index 281e1db3059..f44c58fdc57 100644 --- a/pkg/volume/util/operationexecutor/operation_generator_test.go +++ b/pkg/volume/util/operationexecutor/operation_generator_test.go @@ -350,7 +350,7 @@ func getTestPVC(volumeName string, specSize, statusSize, allocatedSize string, r }, Spec: v1.PersistentVolumeClaimSpec{ AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}, - Resources: v1.ResourceRequirements{Requests: v1.ResourceList{v1.ResourceStorage: resource.MustParse(specSize)}}, + Resources: v1.VolumeResourceRequirements{Requests: v1.ResourceList{v1.ResourceStorage: resource.MustParse(specSize)}}, VolumeName: volumeName, }, Status: v1.PersistentVolumeClaimStatus{ diff --git a/pkg/volume/util/resize_util_test.go b/pkg/volume/util/resize_util_test.go index f49b93fdc7b..ac78de1b996 100644 --- a/pkg/volume/util/resize_util_test.go +++ b/pkg/volume/util/resize_util_test.go @@ -264,7 +264,7 @@ func makePVC(conditions []v1.PersistentVolumeClaimCondition) pvcModifier { v1.ReadWriteOnce, v1.ReadOnlyMany, }, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse("2Gi"), }, diff --git a/plugin/pkg/admission/limitranger/admission_test.go b/plugin/pkg/admission/limitranger/admission_test.go index fd850048b9b..cec598e788b 100644 --- a/plugin/pkg/admission/limitranger/admission_test.go +++ b/plugin/pkg/admission/limitranger/admission_test.go @@ -69,6 +69,13 @@ func getResourceRequirements(requests, limits api.ResourceList) api.ResourceRequ return res } +func getVolumeResourceRequirements(requests, limits api.ResourceList) api.VolumeResourceRequirements { + res := api.VolumeResourceRequirements{} + res.Requests = requests + res.Limits = limits + return res +} + // createLimitRange creates a limit range with the specified data func createLimitRange(limitType api.LimitType, min, max, defaultLimit, defaultRequest, maxLimitRequestRatio api.ResourceList) corev1.LimitRange { internalLimitRage := api.LimitRange{ @@ -816,7 +823,7 @@ func newHandlerForTest(c clientset.Interface) (*LimitRanger, informers.SharedInf return handler, f, err } -func validPersistentVolumeClaim(name string, resources api.ResourceRequirements) api.PersistentVolumeClaim { +func validPersistentVolumeClaim(name string, resources api.VolumeResourceRequirements) api.PersistentVolumeClaim { pvc := api.PersistentVolumeClaim{ ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: "test"}, Spec: api.PersistentVolumeClaimSpec{ @@ -834,19 +841,19 @@ func TestPersistentVolumeClaimLimitFunc(t *testing.T) { successCases := []testCase{ { - pvc: validPersistentVolumeClaim("pvc-is-min-storage-request", getResourceRequirements(getStorageResourceList("1Gi"), getStorageResourceList(""))), + pvc: validPersistentVolumeClaim("pvc-is-min-storage-request", getVolumeResourceRequirements(getStorageResourceList("1Gi"), getStorageResourceList(""))), limitRange: createLimitRange(api.LimitTypePersistentVolumeClaim, getStorageResourceList("1Gi"), api.ResourceList{}, api.ResourceList{}, api.ResourceList{}, api.ResourceList{}), }, { - pvc: validPersistentVolumeClaim("pvc-is-max-storage-request", getResourceRequirements(getStorageResourceList("1Gi"), getStorageResourceList(""))), + pvc: validPersistentVolumeClaim("pvc-is-max-storage-request", getVolumeResourceRequirements(getStorageResourceList("1Gi"), getStorageResourceList(""))), limitRange: createLimitRange(api.LimitTypePersistentVolumeClaim, api.ResourceList{}, getStorageResourceList("1Gi"), api.ResourceList{}, api.ResourceList{}, api.ResourceList{}), }, { - pvc: validPersistentVolumeClaim("pvc-no-minmax-storage-request", getResourceRequirements(getStorageResourceList("100Gi"), getStorageResourceList(""))), + pvc: validPersistentVolumeClaim("pvc-no-minmax-storage-request", getVolumeResourceRequirements(getStorageResourceList("100Gi"), getStorageResourceList(""))), limitRange: createLimitRange(api.LimitTypePersistentVolumeClaim, getStorageResourceList(""), getStorageResourceList(""), api.ResourceList{}, api.ResourceList{}, api.ResourceList{}), }, { - pvc: validPersistentVolumeClaim("pvc-within-minmax-storage-request", getResourceRequirements(getStorageResourceList("5Gi"), getStorageResourceList(""))), + pvc: validPersistentVolumeClaim("pvc-within-minmax-storage-request", getVolumeResourceRequirements(getStorageResourceList("5Gi"), getStorageResourceList(""))), limitRange: createLimitRange(api.LimitTypePersistentVolumeClaim, getStorageResourceList("1Gi"), getStorageResourceList("10Gi"), api.ResourceList{}, api.ResourceList{}, api.ResourceList{}), }, } @@ -860,11 +867,11 @@ func TestPersistentVolumeClaimLimitFunc(t *testing.T) { errorCases := []testCase{ { - pvc: validPersistentVolumeClaim("pvc-below-min-storage-request", getResourceRequirements(getStorageResourceList("500Mi"), getStorageResourceList(""))), + pvc: validPersistentVolumeClaim("pvc-below-min-storage-request", getVolumeResourceRequirements(getStorageResourceList("500Mi"), getStorageResourceList(""))), limitRange: createLimitRange(api.LimitTypePersistentVolumeClaim, getStorageResourceList("1Gi"), api.ResourceList{}, api.ResourceList{}, api.ResourceList{}, api.ResourceList{}), }, { - pvc: validPersistentVolumeClaim("pvc-exceeds-max-storage-request", getResourceRequirements(getStorageResourceList("100Gi"), getStorageResourceList(""))), + pvc: validPersistentVolumeClaim("pvc-exceeds-max-storage-request", getVolumeResourceRequirements(getStorageResourceList("100Gi"), getStorageResourceList(""))), limitRange: createLimitRange(api.LimitTypePersistentVolumeClaim, getStorageResourceList("1Gi"), getStorageResourceList("1Gi"), api.ResourceList{}, api.ResourceList{}, api.ResourceList{}), }, } diff --git a/plugin/pkg/admission/noderestriction/admission_test.go b/plugin/pkg/admission/noderestriction/admission_test.go index 412634d685b..2d9a0824089 100644 --- a/plugin/pkg/admission/noderestriction/admission_test.go +++ b/plugin/pkg/admission/noderestriction/admission_test.go @@ -1552,7 +1552,7 @@ func makeTestPVC( pvc := &api.PersistentVolumeClaim{ Spec: api.PersistentVolumeClaimSpec{ VolumeName: "volume1", - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: api.ResourceList{ api.ResourceStorage: resource.MustParse("10G"), }, diff --git a/plugin/pkg/admission/resourcequota/admission_test.go b/plugin/pkg/admission/resourcequota/admission_test.go index a1114331e3c..51ee0872b54 100644 --- a/plugin/pkg/admission/resourcequota/admission_test.go +++ b/plugin/pkg/admission/resourcequota/admission_test.go @@ -62,6 +62,13 @@ func getResourceRequirements(requests, limits api.ResourceList) api.ResourceRequ return res } +func getVolumeResourceRequirements(requests, limits api.ResourceList) api.VolumeResourceRequirements { + res := api.VolumeResourceRequirements{} + res.Requests = requests + res.Limits = limits + return res +} + func validPod(name string, numContainers int, resources api.ResourceRequirements) *api.Pod { pod := &api.Pod{ ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: "test"}, @@ -85,7 +92,7 @@ func validPodWithPriority(name string, numContainers int, resources api.Resource return pod } -func validPersistentVolumeClaim(name string, resources api.ResourceRequirements) *api.PersistentVolumeClaim { +func validPersistentVolumeClaim(name string, resources api.VolumeResourceRequirements) *api.PersistentVolumeClaim { return &api.PersistentVolumeClaim{ ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: "test"}, Spec: api.PersistentVolumeClaimSpec{ @@ -426,14 +433,14 @@ func TestAdmitHandlesNegativePVCUpdates(t *testing.T) { oldPVC := &api.PersistentVolumeClaim{ ObjectMeta: metav1.ObjectMeta{Name: "pvc-to-update", Namespace: "test", ResourceVersion: "1"}, Spec: api.PersistentVolumeClaimSpec{ - Resources: getResourceRequirements(api.ResourceList{api.ResourceStorage: resource.MustParse("10Gi")}, api.ResourceList{}), + Resources: getVolumeResourceRequirements(api.ResourceList{api.ResourceStorage: resource.MustParse("10Gi")}, api.ResourceList{}), }, } newPVC := &api.PersistentVolumeClaim{ ObjectMeta: metav1.ObjectMeta{Name: "pvc-to-update", Namespace: "test"}, Spec: api.PersistentVolumeClaimSpec{ - Resources: getResourceRequirements(api.ResourceList{api.ResourceStorage: resource.MustParse("5Gi")}, api.ResourceList{}), + Resources: getVolumeResourceRequirements(api.ResourceList{api.ResourceStorage: resource.MustParse("5Gi")}, api.ResourceList{}), }, } @@ -478,14 +485,14 @@ func TestAdmitHandlesPVCUpdates(t *testing.T) { oldPVC := &api.PersistentVolumeClaim{ ObjectMeta: metav1.ObjectMeta{Name: "pvc-to-update", Namespace: "test", ResourceVersion: "1"}, Spec: api.PersistentVolumeClaimSpec{ - Resources: getResourceRequirements(api.ResourceList{api.ResourceStorage: resource.MustParse("10Gi")}, api.ResourceList{}), + Resources: getVolumeResourceRequirements(api.ResourceList{api.ResourceStorage: resource.MustParse("10Gi")}, api.ResourceList{}), }, } newPVC := &api.PersistentVolumeClaim{ ObjectMeta: metav1.ObjectMeta{Name: "pvc-to-update", Namespace: "test"}, Spec: api.PersistentVolumeClaimSpec{ - Resources: getResourceRequirements(api.ResourceList{api.ResourceStorage: resource.MustParse("15Gi")}, api.ResourceList{}), + Resources: getVolumeResourceRequirements(api.ResourceList{api.ResourceStorage: resource.MustParse("15Gi")}, api.ResourceList{}), }, } @@ -1069,14 +1076,14 @@ func TestAdmitRejectsNegativeUsage(t *testing.T) { informerFactory.Core().V1().ResourceQuotas().Informer().GetIndexer().Add(resourceQuota) // verify quota rejects negative pvc storage requests - newPvc := validPersistentVolumeClaim("not-allowed-pvc", getResourceRequirements(api.ResourceList{api.ResourceStorage: resource.MustParse("-1Gi")}, api.ResourceList{})) + newPvc := validPersistentVolumeClaim("not-allowed-pvc", getVolumeResourceRequirements(api.ResourceList{api.ResourceStorage: resource.MustParse("-1Gi")}, api.ResourceList{})) err = handler.Validate(context.TODO(), admission.NewAttributesRecord(newPvc, nil, api.Kind("PersistentVolumeClaim").WithVersion("version"), newPvc.Namespace, newPvc.Name, corev1.Resource("persistentvolumeclaims").WithVersion("version"), "", admission.Create, &metav1.CreateOptions{}, false, nil), nil) if err == nil { t.Errorf("Expected an error because the pvc has negative storage usage") } // verify quota accepts non-negative pvc storage requests - newPvc = validPersistentVolumeClaim("not-allowed-pvc", getResourceRequirements(api.ResourceList{api.ResourceStorage: resource.MustParse("1Gi")}, api.ResourceList{})) + newPvc = validPersistentVolumeClaim("not-allowed-pvc", getVolumeResourceRequirements(api.ResourceList{api.ResourceStorage: resource.MustParse("1Gi")}, api.ResourceList{})) err = handler.Validate(context.TODO(), admission.NewAttributesRecord(newPvc, nil, api.Kind("PersistentVolumeClaim").WithVersion("version"), newPvc.Namespace, newPvc.Name, corev1.Resource("persistentvolumeclaims").WithVersion("version"), "", admission.Create, &metav1.CreateOptions{}, false, nil), nil) if err != nil { t.Errorf("Unexpected error: %v", err) diff --git a/plugin/pkg/admission/storage/persistentvolume/resize/admission_test.go b/plugin/pkg/admission/storage/persistentvolume/resize/admission_test.go index 01089b97db3..a77ca00863f 100644 --- a/plugin/pkg/admission/storage/persistentvolume/resize/admission_test.go +++ b/plugin/pkg/admission/storage/persistentvolume/resize/admission_test.go @@ -88,7 +88,7 @@ func TestPVCResizeAdmission(t *testing.T) { oldObj: &api.PersistentVolumeClaim{ Spec: api.PersistentVolumeClaimSpec{ VolumeName: "volume1", - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: getResourceList("1Gi"), }, StorageClassName: &goldClassName, @@ -101,7 +101,7 @@ func TestPVCResizeAdmission(t *testing.T) { newObj: &api.PersistentVolumeClaim{ Spec: api.PersistentVolumeClaimSpec{ VolumeName: "volume1", - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: getResourceList("2Gi"), }, StorageClassName: &goldClassName, @@ -119,7 +119,7 @@ func TestPVCResizeAdmission(t *testing.T) { oldObj: &api.PersistentVolumeClaim{ Spec: api.PersistentVolumeClaimSpec{ VolumeName: "volume3", - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: getResourceList("1Gi"), }, }, @@ -131,7 +131,7 @@ func TestPVCResizeAdmission(t *testing.T) { newObj: &api.PersistentVolumeClaim{ Spec: api.PersistentVolumeClaimSpec{ VolumeName: "volume3", - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: getResourceList("2Gi"), }, }, @@ -148,7 +148,7 @@ func TestPVCResizeAdmission(t *testing.T) { oldObj: &api.PersistentVolumeClaim{ Spec: api.PersistentVolumeClaimSpec{ VolumeName: "volume4", - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: getResourceList("1Gi"), }, StorageClassName: &silverClassName, @@ -161,7 +161,7 @@ func TestPVCResizeAdmission(t *testing.T) { newObj: &api.PersistentVolumeClaim{ Spec: api.PersistentVolumeClaimSpec{ VolumeName: "volume4", - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: getResourceList("2Gi"), }, StorageClassName: &silverClassName, @@ -178,7 +178,7 @@ func TestPVCResizeAdmission(t *testing.T) { resource: api.SchemeGroupVersion.WithResource("persistentvolumeclaims"), oldObj: &api.PersistentVolumeClaim{ Spec: api.PersistentVolumeClaimSpec{ - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: getResourceList("1Gi"), }, StorageClassName: &silverClassName, @@ -191,7 +191,7 @@ func TestPVCResizeAdmission(t *testing.T) { newObj: &api.PersistentVolumeClaim{ Spec: api.PersistentVolumeClaimSpec{ VolumeName: "volume4", - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: getResourceList("1Gi"), }, StorageClassName: &silverClassName, @@ -208,7 +208,7 @@ func TestPVCResizeAdmission(t *testing.T) { resource: api.SchemeGroupVersion.WithResource("persistentvolumeclaims"), oldObj: &api.PersistentVolumeClaim{ Spec: api.PersistentVolumeClaimSpec{ - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: getResourceList("1Gi"), }, StorageClassName: &silverClassName, @@ -220,7 +220,7 @@ func TestPVCResizeAdmission(t *testing.T) { }, newObj: &api.PersistentVolumeClaim{ Spec: api.PersistentVolumeClaimSpec{ - Resources: api.ResourceRequirements{ + Resources: api.VolumeResourceRequirements{ Requests: getResourceList("2Gi"), }, StorageClassName: &silverClassName, diff --git a/staging/src/k8s.io/api/core/v1/types.go b/staging/src/k8s.io/api/core/v1/types.go index 8c55d07c1b4..13bdb6da752 100644 --- a/staging/src/k8s.io/api/core/v1/types.go +++ b/staging/src/k8s.io/api/core/v1/types.go @@ -486,7 +486,7 @@ type PersistentVolumeClaimSpec struct { // status field of the claim. // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources // +optional - Resources ResourceRequirements `json:"resources,omitempty" protobuf:"bytes,2,opt,name=resources"` + Resources VolumeResourceRequirements `json:"resources,omitempty" protobuf:"bytes,2,opt,name=resources"` // volumeName is the binding reference to the PersistentVolume backing this claim. // +optional VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,3,opt,name=volumeName"` @@ -2417,6 +2417,27 @@ type ResourceRequirements struct { Claims []ResourceClaim `json:"claims,omitempty" protobuf:"bytes,3,opt,name=claims"` } +// VolumeResourceRequirements describes the storage resource requirements for a volume. +type VolumeResourceRequirements struct { + // Limits describes the maximum amount of compute resources allowed. + // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + // +optional + Limits ResourceList `json:"limits,omitempty" protobuf:"bytes,1,rep,name=limits,casttype=ResourceList,castkey=ResourceName"` + // Requests describes the minimum amount of compute resources required. + // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + // otherwise to an implementation-defined value. Requests cannot exceed Limits. + // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + // +optional + Requests ResourceList `json:"requests,omitempty" protobuf:"bytes,2,rep,name=requests,casttype=ResourceList,castkey=ResourceName"` + + // Claims got added by accident when volumes shared the ResourceRequirements struct + // with containers. Stripping the field got added in 1.27 and was backported to 1.26. + // Starting with Kubernetes 1.28, this field is not part of the volume API anymore. + // + // Future extensions must not use "claims" or field number 3. + // Claims []ResourceClaim `json:"claims,omitempty" protobuf:"bytes,3,opt,name=claims"` +} + // ResourceClaim references one entry in PodSpec.ResourceClaims. type ResourceClaim struct { // Name must match the name of one entry in pod.spec.resourceClaims of diff --git a/staging/src/k8s.io/component-helpers/storage/volume/pv_helpers_test.go b/staging/src/k8s.io/component-helpers/storage/volume/pv_helpers_test.go index 6482ecfa6fc..4d73bd6f048 100644 --- a/staging/src/k8s.io/component-helpers/storage/volume/pv_helpers_test.go +++ b/staging/src/k8s.io/component-helpers/storage/volume/pv_helpers_test.go @@ -270,7 +270,7 @@ func makeTestPersistentVolumeClaim(name string, size string, accessMode []v1.Per }, Spec: v1.PersistentVolumeClaimSpec{ AccessModes: accessMode, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(size), }, diff --git a/test/e2e/apimachinery/resource_quota.go b/test/e2e/apimachinery/resource_quota.go index c69cbcf8088..50dde001437 100644 --- a/test/e2e/apimachinery/resource_quota.go +++ b/test/e2e/apimachinery/resource_quota.go @@ -1977,7 +1977,7 @@ func newTestPersistentVolumeClaimForQuota(name string) *v1.PersistentVolumeClaim v1.ReadWriteOnce, v1.ReadOnlyMany, }, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse("1Gi"), }, diff --git a/test/e2e/framework/pv/pv.go b/test/e2e/framework/pv/pv.go index 006091870e5..469688d3496 100644 --- a/test/e2e/framework/pv/pv.go +++ b/test/e2e/framework/pv/pv.go @@ -648,7 +648,7 @@ func MakePersistentVolumeClaim(cfg PersistentVolumeClaimConfig, ns string) *v1.P Spec: v1.PersistentVolumeClaimSpec{ Selector: cfg.Selector, AccessModes: cfg.AccessModes, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceStorage: resource.MustParse(cfg.ClaimSize), }, diff --git a/test/e2e/framework/statefulset/fixtures.go b/test/e2e/framework/statefulset/fixtures.go index 1ebac43ba79..bde1693df60 100644 --- a/test/e2e/framework/statefulset/fixtures.go +++ b/test/e2e/framework/statefulset/fixtures.go @@ -105,7 +105,7 @@ func NewStatefulSetPVC(name string) v1.PersistentVolumeClaim { AccessModes: []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, }, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceStorage: *resource.NewQuantity(1, resource.BinarySI), }, diff --git a/test/e2e/storage/framework/volume_resource.go b/test/e2e/storage/framework/volume_resource.go index 12ce1872e7c..8f0a428fe1a 100644 --- a/test/e2e/storage/framework/volume_resource.go +++ b/test/e2e/storage/framework/volume_resource.go @@ -155,7 +155,7 @@ func createEphemeralVolumeSource(scName string, volMode v1.PersistentVolumeMode, StorageClassName: &scName, AccessModes: accessModes, VolumeMode: &volMode, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceStorage: resource.MustParse(claimSize), }, diff --git a/test/e2e/storage/persistent_volumes-local.go b/test/e2e/storage/persistent_volumes-local.go index 61106626375..fc4f700b335 100644 --- a/test/e2e/storage/persistent_volumes-local.go +++ b/test/e2e/storage/persistent_volumes-local.go @@ -1069,7 +1069,7 @@ func newLocalClaimWithName(config *localTestConfig, name string) *v1.PersistentV AccessModes: []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, }, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(testRequestSize), }, diff --git a/test/e2e/storage/testsuites/ephemeral.go b/test/e2e/storage/testsuites/ephemeral.go index eaa7c19895e..85c260b9d02 100644 --- a/test/e2e/storage/testsuites/ephemeral.go +++ b/test/e2e/storage/testsuites/ephemeral.go @@ -523,7 +523,7 @@ func GenericEphemeralVolumesEnabled(ctx context.Context, c clientset.Interface, Spec: v1.PersistentVolumeClaimSpec{ StorageClassName: &storageClassName, AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceStorage: resource.MustParse("1Gi"), }, diff --git a/test/e2e/storage/vsphere/vsphere_utils.go b/test/e2e/storage/vsphere/vsphere_utils.go index 45a9e4e232b..1e70e712d8b 100644 --- a/test/e2e/storage/vsphere/vsphere_utils.go +++ b/test/e2e/storage/vsphere/vsphere_utils.go @@ -183,7 +183,7 @@ func getVSpherePersistentVolumeClaimSpec(namespace string, labels map[string]str AccessModes: []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, }, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse("2Gi"), }, @@ -252,7 +252,7 @@ func getVSphereClaimSpecWithStorageClass(ns string, diskSize string, storageclas AccessModes: []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, }, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(diskSize), }, diff --git a/test/integration/auth/node_test.go b/test/integration/auth/node_test.go index 9021d263181..8481b3d6db4 100644 --- a/test/integration/auth/node_test.go +++ b/test/integration/auth/node_test.go @@ -129,7 +129,7 @@ func TestNodeAuthorizer(t *testing.T) { ObjectMeta: metav1.ObjectMeta{Name: "mypvc"}, Spec: corev1.PersistentVolumeClaimSpec{ AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadOnlyMany}, - Resources: corev1.ResourceRequirements{Requests: corev1.ResourceList{corev1.ResourceStorage: resource.MustParse("1")}}, + Resources: corev1.VolumeResourceRequirements{Requests: corev1.ResourceList{corev1.ResourceStorage: resource.MustParse("1")}}, }, }, metav1.CreateOptions{}); err != nil { t.Fatal(err) diff --git a/test/integration/pvc/upgrade_test.go b/test/integration/pvc/upgrade_test.go index 7482133c1ed..7ccc3a5489b 100644 --- a/test/integration/pvc/upgrade_test.go +++ b/test/integration/pvc/upgrade_test.go @@ -67,7 +67,7 @@ func test_UpgradePVC(t *testing.T, featureEnabled bool) { UID: "08675309-9376-9376-9376-086753099999", }, Spec: v1.PersistentVolumeClaimSpec{ - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse("10G"), }, diff --git a/test/integration/scheduler/filters/filters_test.go b/test/integration/scheduler/filters/filters_test.go index 6ca67b99b64..9af24fbc9cc 100644 --- a/test/integration/scheduler/filters/filters_test.go +++ b/test/integration/scheduler/filters/filters_test.go @@ -1710,7 +1710,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) { return fmt.Errorf("cannot create node: %v", err) } - storage := v1.ResourceRequirements{Requests: v1.ResourceList{v1.ResourceStorage: resource.MustParse("1Mi")}} + storage := v1.VolumeResourceRequirements{Requests: v1.ResourceList{v1.ResourceStorage: resource.MustParse("1Mi")}} volType := v1.HostPathDirectoryOrCreate pv, err := testutils.CreatePV(cs, st.MakePersistentVolume(). Name("pv-with-read-write-once-pod"). diff --git a/test/integration/scheduler/preemption/preemption_test.go b/test/integration/scheduler/preemption/preemption_test.go index c13cbdd6b95..6b47548f686 100644 --- a/test/integration/scheduler/preemption/preemption_test.go +++ b/test/integration/scheduler/preemption/preemption_test.go @@ -1677,7 +1677,7 @@ func TestReadWriteOncePodPreemption(t *testing.T) { cs := testCtx.ClientSet - storage := v1.ResourceRequirements{Requests: v1.ResourceList{v1.ResourceStorage: resource.MustParse("1Mi")}} + storage := v1.VolumeResourceRequirements{Requests: v1.ResourceList{v1.ResourceStorage: resource.MustParse("1Mi")}} volType := v1.HostPathDirectoryOrCreate pv1 := st.MakePersistentVolume(). Name("pv-with-read-write-once-pod-1"). diff --git a/test/integration/statefulset/util.go b/test/integration/statefulset/util.go index 896994b042c..4ca4fc6d7c3 100644 --- a/test/integration/statefulset/util.go +++ b/test/integration/statefulset/util.go @@ -151,7 +151,7 @@ func newStatefulSetPVC(name string) v1.PersistentVolumeClaim { AccessModes: []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, }, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceStorage: *resource.NewQuantity(1, resource.BinarySI), }, diff --git a/test/integration/storageclasses/storage_classes_test.go b/test/integration/storageclasses/storage_classes_test.go index 6556284f170..ee39c091efb 100644 --- a/test/integration/storageclasses/storage_classes_test.go +++ b/test/integration/storageclasses/storage_classes_test.go @@ -22,7 +22,7 @@ import ( "context" "testing" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" storage "k8s.io/api/storage/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -72,7 +72,7 @@ func DoTestStorageClasses(t *testing.T, client clientset.Interface, ns *v1.Names Namespace: ns.Name, }, Spec: v1.PersistentVolumeClaimSpec{ - Resources: v1.ResourceRequirements{Requests: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("1G")}}, + Resources: v1.VolumeResourceRequirements{Requests: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("1G")}}, AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}, StorageClassName: &classGold, }, diff --git a/test/integration/volume/attach_detach_test.go b/test/integration/volume/attach_detach_test.go index a974ef64562..c7d4164ce09 100644 --- a/test/integration/volume/attach_detach_test.go +++ b/test/integration/volume/attach_detach_test.go @@ -120,7 +120,7 @@ func fakePodWithPVC(name, pvcName, namespace string) (*v1.Pod, *v1.PersistentVol AccessModes: []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, }, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse("5Gi"), }, diff --git a/test/integration/volume/persistent_volumes_test.go b/test/integration/volume/persistent_volumes_test.go index ce597dc0cb8..7c038468f6b 100644 --- a/test/integration/volume/persistent_volumes_test.go +++ b/test/integration/volume/persistent_volumes_test.go @@ -25,7 +25,7 @@ import ( "testing" "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" storage "k8s.io/api/storage/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -1417,7 +1417,7 @@ func createPVC(name, namespace, cap string, mode []v1.PersistentVolumeAccessMode Namespace: namespace, }, Spec: v1.PersistentVolumeClaimSpec{ - Resources: v1.ResourceRequirements{Requests: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse(cap)}}, + Resources: v1.VolumeResourceRequirements{Requests: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse(cap)}}, AccessModes: mode, StorageClassName: &class, }, @@ -1431,7 +1431,7 @@ func createPVCWithNilStorageClass(name, namespace, cap string, mode []v1.Persist Namespace: namespace, }, Spec: v1.PersistentVolumeClaimSpec{ - Resources: v1.ResourceRequirements{Requests: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse(cap)}}, + Resources: v1.VolumeResourceRequirements{Requests: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse(cap)}}, AccessModes: mode, }, } diff --git a/test/integration/volumescheduling/volume_binding_test.go b/test/integration/volumescheduling/volume_binding_test.go index 0f10b190ed2..c23d736c8ef 100644 --- a/test/integration/volumescheduling/volume_binding_test.go +++ b/test/integration/volumescheduling/volume_binding_test.go @@ -1218,7 +1218,7 @@ func makePVC(name, ns string, scName *string, volumeName string) *v1.PersistentV AccessModes: []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, }, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse("5Gi"), }, diff --git a/test/integration/volumescheduling/volume_capacity_priority_test.go b/test/integration/volumescheduling/volume_capacity_priority_test.go index aeeac39f43e..0146792ea9f 100644 --- a/test/integration/volumescheduling/volume_capacity_priority_test.go +++ b/test/integration/volumescheduling/volume_capacity_priority_test.go @@ -304,7 +304,7 @@ func setPVCapacity(pv *v1.PersistentVolume, capacity resource.Quantity) *v1.Pers } func setPVCRequestStorage(pvc *v1.PersistentVolumeClaim, request resource.Quantity) *v1.PersistentVolumeClaim { - pvc.Spec.Resources = v1.ResourceRequirements{ + pvc.Spec.Resources = v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): request, }, diff --git a/test/utils/runners.go b/test/utils/runners.go index 3cbc8a7bba2..cfc2bc11634 100644 --- a/test/utils/runners.go +++ b/test/utils/runners.go @@ -1502,7 +1502,7 @@ func makeUnboundPersistentVolumeClaim(storageClass string) *v1.PersistentVolumeC Spec: v1.PersistentVolumeClaimSpec{ AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany}, StorageClassName: &storageClass, - Resources: v1.ResourceRequirements{ + Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse("1Gi"), },