mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-07-19 07:25:19 +00:00
Remove recovery related featuregates
This commit is contained in:
@@ -368,9 +368,6 @@ var (
|
||||
// TODO: document the feature (owning SIG, when to use this feature for a test)
|
||||
ReclaimPolicy = framework.WithFeature(framework.ValidFeatures.Add("ReclaimPolicy"))
|
||||
|
||||
// TODO: document the feature (owning SIG, when to use this feature for a test)
|
||||
RecoverVolumeExpansionFailure = framework.WithFeature(framework.ValidFeatures.Add("RecoverVolumeExpansionFailure"))
|
||||
|
||||
// TODO: document the feature (owning SIG, when to use this feature for a test)
|
||||
RegularResourceUsageTracking = framework.WithFeature(framework.ValidFeatures.Add("RegularResourceUsageTracking"))
|
||||
|
||||
|
||||
@@ -95,19 +95,18 @@ type testParameters struct {
|
||||
enableResizing bool // enable resizing for both CSI mock driver and storageClass.
|
||||
enableNodeExpansion bool // enable node expansion for CSI mock driver
|
||||
// just disable resizing on driver it overrides enableResizing flag for CSI mock driver
|
||||
disableResizingOnDriver bool
|
||||
disableControllerExpansion bool
|
||||
enableSnapshot bool
|
||||
enableVolumeMountGroup bool // enable the VOLUME_MOUNT_GROUP node capability in the CSI mock driver.
|
||||
enableNodeVolumeCondition bool
|
||||
hooks *drivers.Hooks
|
||||
tokenRequests []storagev1.TokenRequest
|
||||
requiresRepublish *bool
|
||||
fsGroupPolicy *storagev1.FSGroupPolicy
|
||||
enableSELinuxMount *bool
|
||||
enableRecoverExpansionFailure bool
|
||||
enableCSINodeExpandSecret bool
|
||||
reclaimPolicy *v1.PersistentVolumeReclaimPolicy
|
||||
disableResizingOnDriver bool
|
||||
disableControllerExpansion bool
|
||||
enableSnapshot bool
|
||||
enableVolumeMountGroup bool // enable the VOLUME_MOUNT_GROUP node capability in the CSI mock driver.
|
||||
enableNodeVolumeCondition bool
|
||||
hooks *drivers.Hooks
|
||||
tokenRequests []storagev1.TokenRequest
|
||||
requiresRepublish *bool
|
||||
fsGroupPolicy *storagev1.FSGroupPolicy
|
||||
enableSELinuxMount *bool
|
||||
enableCSINodeExpandSecret bool
|
||||
reclaimPolicy *v1.PersistentVolumeReclaimPolicy
|
||||
}
|
||||
|
||||
type mockDriverSetup struct {
|
||||
@@ -164,23 +163,22 @@ func (m *mockDriverSetup) init(ctx context.Context, tp testParameters) {
|
||||
|
||||
var err error
|
||||
driverOpts := drivers.CSIMockDriverOpts{
|
||||
RegisterDriver: tp.registerDriver,
|
||||
PodInfo: tp.podInfo,
|
||||
StorageCapacity: tp.storageCapacity,
|
||||
EnableTopology: tp.enableTopology,
|
||||
AttachLimit: tp.attachLimit,
|
||||
DisableAttach: tp.disableAttach,
|
||||
EnableResizing: tp.enableResizing,
|
||||
EnableNodeExpansion: tp.enableNodeExpansion,
|
||||
EnableNodeVolumeCondition: tp.enableNodeVolumeCondition,
|
||||
DisableControllerExpansion: tp.disableControllerExpansion,
|
||||
EnableSnapshot: tp.enableSnapshot,
|
||||
EnableVolumeMountGroup: tp.enableVolumeMountGroup,
|
||||
TokenRequests: tp.tokenRequests,
|
||||
RequiresRepublish: tp.requiresRepublish,
|
||||
FSGroupPolicy: tp.fsGroupPolicy,
|
||||
EnableSELinuxMount: tp.enableSELinuxMount,
|
||||
EnableRecoverExpansionFailure: tp.enableRecoverExpansionFailure,
|
||||
RegisterDriver: tp.registerDriver,
|
||||
PodInfo: tp.podInfo,
|
||||
StorageCapacity: tp.storageCapacity,
|
||||
EnableTopology: tp.enableTopology,
|
||||
AttachLimit: tp.attachLimit,
|
||||
DisableAttach: tp.disableAttach,
|
||||
EnableResizing: tp.enableResizing,
|
||||
EnableNodeExpansion: tp.enableNodeExpansion,
|
||||
EnableNodeVolumeCondition: tp.enableNodeVolumeCondition,
|
||||
DisableControllerExpansion: tp.disableControllerExpansion,
|
||||
EnableSnapshot: tp.enableSnapshot,
|
||||
EnableVolumeMountGroup: tp.enableVolumeMountGroup,
|
||||
TokenRequests: tp.tokenRequests,
|
||||
RequiresRepublish: tp.requiresRepublish,
|
||||
FSGroupPolicy: tp.fsGroupPolicy,
|
||||
EnableSELinuxMount: tp.enableSELinuxMount,
|
||||
}
|
||||
|
||||
// At the moment, only tests which need hooks are
|
||||
@@ -507,7 +505,7 @@ func (m *mockDriverSetup) createPodWithSELinux(ctx context.Context, accessModes
|
||||
return class, claim, pod
|
||||
}
|
||||
|
||||
func (m *mockDriverSetup) createResourceQuota(ctx context.Context, quota *v1.ResourceQuota) (*v1.ResourceQuota, error) {
|
||||
func (m *mockDriverSetup) createResourceQuota(ctx context.Context, quota *v1.ResourceQuota) *v1.ResourceQuota {
|
||||
ginkgo.By("Creating Resource Quota")
|
||||
f := m.f
|
||||
|
||||
@@ -520,7 +518,7 @@ func (m *mockDriverSetup) createResourceQuota(ctx context.Context, quota *v1.Res
|
||||
quota, err = f.ClientSet.CoreV1().ResourceQuotas(f.Namespace.Name).Create(ctx, quota, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err, "Failed to create resourceQuota")
|
||||
m.quotas = append(m.quotas, quota)
|
||||
return quota, err
|
||||
return quota
|
||||
}
|
||||
|
||||
func waitForCSIDriver(cs clientset.Interface, driverName string) error {
|
||||
|
||||
@@ -432,6 +432,22 @@ var _ = utils.SIGDescribe("CSI Mock volume expansion", func() {
|
||||
simulatedCSIDriverError: expansionFailedOnControllerWithInfeasibleError,
|
||||
expectedResizeStatus: v1.PersistentVolumeClaimControllerResizeInfeasible,
|
||||
recoverySize: resource.MustParse("4Gi"),
|
||||
fullResourceQuota: &v1.ResourceQuota{
|
||||
Spec: v1.ResourceQuotaSpec{
|
||||
Hard: v1.ResourceList{
|
||||
pvcSizeQuotaKey: resource.MustParse("20Gi"),
|
||||
pvcCountQuotaKey: resource.MustParse("5"),
|
||||
},
|
||||
},
|
||||
},
|
||||
expectedQuotaUsage: &v1.ResourceQuota{
|
||||
Status: v1.ResourceQuotaStatus{
|
||||
Used: v1.ResourceList{
|
||||
pvcSizeQuotaKey: resource.MustParse("4Gi"),
|
||||
pvcCountQuotaKey: resource.MustParse("1"),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "should allow recovery if controller expansion fails with final error",
|
||||
@@ -441,6 +457,22 @@ var _ = utils.SIGDescribe("CSI Mock volume expansion", func() {
|
||||
simulatedCSIDriverError: expansionFailedOnControllerWithFinalError,
|
||||
expectedResizeStatus: v1.PersistentVolumeClaimControllerResizeInProgress,
|
||||
recoverySize: resource.MustParse("4Gi"),
|
||||
fullResourceQuota: &v1.ResourceQuota{
|
||||
Spec: v1.ResourceQuotaSpec{
|
||||
Hard: v1.ResourceList{
|
||||
pvcSizeQuotaKey: resource.MustParse("20Gi"),
|
||||
pvcCountQuotaKey: resource.MustParse("5"),
|
||||
},
|
||||
},
|
||||
},
|
||||
expectedQuotaUsage: &v1.ResourceQuota{
|
||||
Status: v1.ResourceQuotaStatus{
|
||||
Used: v1.ResourceList{
|
||||
pvcSizeQuotaKey: resource.MustParse("4Gi"),
|
||||
pvcCountQuotaKey: resource.MustParse("1"),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "recovery should not be possible in partially expanded volumes",
|
||||
@@ -459,6 +491,22 @@ var _ = utils.SIGDescribe("CSI Mock volume expansion", func() {
|
||||
simulatedCSIDriverError: expansionFailedOnNodeWithInfeasibleError,
|
||||
expectedResizeStatus: v1.PersistentVolumeClaimNodeResizeInfeasible,
|
||||
recoverySize: resource.MustParse("5Gi"),
|
||||
fullResourceQuota: &v1.ResourceQuota{
|
||||
Spec: v1.ResourceQuotaSpec{
|
||||
Hard: v1.ResourceList{
|
||||
pvcSizeQuotaKey: resource.MustParse("20Gi"),
|
||||
pvcCountQuotaKey: resource.MustParse("5"),
|
||||
},
|
||||
},
|
||||
},
|
||||
expectedQuotaUsage: &v1.ResourceQuota{
|
||||
Status: v1.ResourceQuotaStatus{
|
||||
Used: v1.ResourceList{
|
||||
pvcSizeQuotaKey: resource.MustParse("5Gi"),
|
||||
pvcCountQuotaKey: resource.MustParse("1"),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "recovery should be possible for node-only expanded volumes with final error",
|
||||
@@ -468,6 +516,22 @@ var _ = utils.SIGDescribe("CSI Mock volume expansion", func() {
|
||||
simulatedCSIDriverError: expansionFailedOnNodeWithFinalError,
|
||||
expectedResizeStatus: v1.PersistentVolumeClaimNodeResizeInProgress,
|
||||
recoverySize: resource.MustParse("5Gi"),
|
||||
fullResourceQuota: &v1.ResourceQuota{
|
||||
Spec: v1.ResourceQuotaSpec{
|
||||
Hard: v1.ResourceList{
|
||||
pvcSizeQuotaKey: resource.MustParse("20Gi"),
|
||||
pvcCountQuotaKey: resource.MustParse("5"),
|
||||
},
|
||||
},
|
||||
},
|
||||
expectedQuotaUsage: &v1.ResourceQuota{
|
||||
Status: v1.ResourceQuotaStatus{
|
||||
Used: v1.ResourceList{
|
||||
pvcSizeQuotaKey: resource.MustParse("5Gi"),
|
||||
pvcCountQuotaKey: resource.MustParse("1"),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -475,7 +539,7 @@ var _ = utils.SIGDescribe("CSI Mock volume expansion", func() {
|
||||
test := t
|
||||
ginkgo.It(test.name, func(ctx context.Context) {
|
||||
var err error
|
||||
params := testParameters{enableResizing: true, enableNodeExpansion: true, enableRecoverExpansionFailure: true, disableControllerExpansion: test.disableControllerExpansion}
|
||||
params := testParameters{enableResizing: true, enableNodeExpansion: true, disableControllerExpansion: test.disableControllerExpansion}
|
||||
|
||||
if test.simulatedCSIDriverError != expansionSuccess {
|
||||
params.hooks = createExpansionHook(test.simulatedCSIDriverError)
|
||||
@@ -483,9 +547,10 @@ var _ = utils.SIGDescribe("CSI Mock volume expansion", func() {
|
||||
|
||||
m.init(ctx, params)
|
||||
ginkgo.DeferCleanup(m.cleanup)
|
||||
var currentQuota *v1.ResourceQuota
|
||||
|
||||
if test.fullResourceQuota != nil {
|
||||
m.createResourceQuota(ctx, test.fullResourceQuota)
|
||||
currentQuota = m.createResourceQuota(ctx, test.fullResourceQuota)
|
||||
}
|
||||
|
||||
sc, pvc, pod := m.createPod(ctx, pvcReference)
|
||||
@@ -517,14 +582,14 @@ var _ = utils.SIGDescribe("CSI Mock volume expansion", func() {
|
||||
}
|
||||
|
||||
if test.expectedQuotaUsage != nil {
|
||||
validateQuotaUsage(ctx, m, test.expectedQuotaUsage)
|
||||
validateQuotaUsage(ctx, m, currentQuota, test.expectedQuotaUsage)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
func validateQuotaUsage(ctx context.Context, m *mockDriverSetup, expectedQuota *v1.ResourceQuota) {
|
||||
func validateQuotaUsage(ctx context.Context, m *mockDriverSetup, currentQuota, expectedQuota *v1.ResourceQuota) {
|
||||
ginkgo.By("Waiting for resource quota usage to be updated")
|
||||
var err error
|
||||
var quota *v1.ResourceQuota
|
||||
@@ -535,7 +600,7 @@ func validateQuotaUsage(ctx context.Context, m *mockDriverSetup, expectedQuota *
|
||||
expectedUsedSize := expectedQuota.Status.Used[pvcSizeQuotaKey]
|
||||
|
||||
waitErr := wait.PollUntilContextTimeout(ctx, resizePollInterval, csiResizeWaitPeriod, true, func(pollContext context.Context) (bool, error) {
|
||||
quota, err = m.cs.CoreV1().ResourceQuotas(expectedQuota.Namespace).Get(pollContext, expectedQuota.Name, metav1.GetOptions{})
|
||||
quota, err = m.cs.CoreV1().ResourceQuotas(currentQuota.Namespace).Get(pollContext, currentQuota.Name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("error fetching resource quota %q: %w", expectedQuota.Name, err)
|
||||
}
|
||||
|
||||
@@ -338,26 +338,25 @@ func (h *hostpathCSIDriver) PrepareTest(ctx context.Context, f *framework.Framew
|
||||
|
||||
// mockCSI
|
||||
type mockCSIDriver struct {
|
||||
driverInfo storageframework.DriverInfo
|
||||
manifests []string
|
||||
podInfo *bool
|
||||
storageCapacity *bool
|
||||
attachable bool
|
||||
attachLimit int
|
||||
enableTopology bool
|
||||
enableNodeExpansion bool
|
||||
hooks Hooks
|
||||
tokenRequests []storagev1.TokenRequest
|
||||
requiresRepublish *bool
|
||||
fsGroupPolicy *storagev1.FSGroupPolicy
|
||||
enableVolumeMountGroup bool
|
||||
enableNodeVolumeCondition bool
|
||||
embedded bool
|
||||
calls MockCSICalls
|
||||
embeddedCSIDriver *mockdriver.CSIDriver
|
||||
enableSELinuxMount *bool
|
||||
enableRecoverExpansionFailure bool
|
||||
disableControllerExpansion bool
|
||||
driverInfo storageframework.DriverInfo
|
||||
manifests []string
|
||||
podInfo *bool
|
||||
storageCapacity *bool
|
||||
attachable bool
|
||||
attachLimit int
|
||||
enableTopology bool
|
||||
enableNodeExpansion bool
|
||||
hooks Hooks
|
||||
tokenRequests []storagev1.TokenRequest
|
||||
requiresRepublish *bool
|
||||
fsGroupPolicy *storagev1.FSGroupPolicy
|
||||
enableVolumeMountGroup bool
|
||||
enableNodeVolumeCondition bool
|
||||
embedded bool
|
||||
calls MockCSICalls
|
||||
embeddedCSIDriver *mockdriver.CSIDriver
|
||||
enableSELinuxMount *bool
|
||||
disableControllerExpansion bool
|
||||
|
||||
// Additional values set during PrepareTest
|
||||
clientSet clientset.Interface
|
||||
@@ -391,23 +390,22 @@ type MockCSITestDriver interface {
|
||||
|
||||
// CSIMockDriverOpts defines options used for csi driver
|
||||
type CSIMockDriverOpts struct {
|
||||
RegisterDriver bool
|
||||
DisableAttach bool
|
||||
PodInfo *bool
|
||||
StorageCapacity *bool
|
||||
AttachLimit int
|
||||
EnableTopology bool
|
||||
EnableResizing bool
|
||||
EnableNodeExpansion bool
|
||||
DisableControllerExpansion bool
|
||||
EnableSnapshot bool
|
||||
EnableVolumeMountGroup bool
|
||||
EnableNodeVolumeCondition bool
|
||||
TokenRequests []storagev1.TokenRequest
|
||||
RequiresRepublish *bool
|
||||
FSGroupPolicy *storagev1.FSGroupPolicy
|
||||
EnableSELinuxMount *bool
|
||||
EnableRecoverExpansionFailure bool
|
||||
RegisterDriver bool
|
||||
DisableAttach bool
|
||||
PodInfo *bool
|
||||
StorageCapacity *bool
|
||||
AttachLimit int
|
||||
EnableTopology bool
|
||||
EnableResizing bool
|
||||
EnableNodeExpansion bool
|
||||
DisableControllerExpansion bool
|
||||
EnableSnapshot bool
|
||||
EnableVolumeMountGroup bool
|
||||
EnableNodeVolumeCondition bool
|
||||
TokenRequests []storagev1.TokenRequest
|
||||
RequiresRepublish *bool
|
||||
FSGroupPolicy *storagev1.FSGroupPolicy
|
||||
EnableSELinuxMount *bool
|
||||
|
||||
// Embedded defines whether the CSI mock driver runs
|
||||
// inside the cluster (false, the default) or just a proxy
|
||||
@@ -549,23 +547,22 @@ func InitMockCSIDriver(driverOpts CSIMockDriverOpts) MockCSITestDriver {
|
||||
storageframework.CapMultiplePVsSameID: true,
|
||||
},
|
||||
},
|
||||
manifests: driverManifests,
|
||||
podInfo: driverOpts.PodInfo,
|
||||
storageCapacity: driverOpts.StorageCapacity,
|
||||
enableTopology: driverOpts.EnableTopology,
|
||||
attachable: !driverOpts.DisableAttach,
|
||||
attachLimit: driverOpts.AttachLimit,
|
||||
enableNodeExpansion: driverOpts.EnableNodeExpansion,
|
||||
enableNodeVolumeCondition: driverOpts.EnableNodeVolumeCondition,
|
||||
disableControllerExpansion: driverOpts.DisableControllerExpansion,
|
||||
tokenRequests: driverOpts.TokenRequests,
|
||||
requiresRepublish: driverOpts.RequiresRepublish,
|
||||
fsGroupPolicy: driverOpts.FSGroupPolicy,
|
||||
enableVolumeMountGroup: driverOpts.EnableVolumeMountGroup,
|
||||
enableSELinuxMount: driverOpts.EnableSELinuxMount,
|
||||
enableRecoverExpansionFailure: driverOpts.EnableRecoverExpansionFailure,
|
||||
embedded: driverOpts.Embedded,
|
||||
hooks: driverOpts.Hooks,
|
||||
manifests: driverManifests,
|
||||
podInfo: driverOpts.PodInfo,
|
||||
storageCapacity: driverOpts.StorageCapacity,
|
||||
enableTopology: driverOpts.EnableTopology,
|
||||
attachable: !driverOpts.DisableAttach,
|
||||
attachLimit: driverOpts.AttachLimit,
|
||||
enableNodeExpansion: driverOpts.EnableNodeExpansion,
|
||||
enableNodeVolumeCondition: driverOpts.EnableNodeVolumeCondition,
|
||||
disableControllerExpansion: driverOpts.DisableControllerExpansion,
|
||||
tokenRequests: driverOpts.TokenRequests,
|
||||
requiresRepublish: driverOpts.RequiresRepublish,
|
||||
fsGroupPolicy: driverOpts.FSGroupPolicy,
|
||||
enableVolumeMountGroup: driverOpts.EnableVolumeMountGroup,
|
||||
enableSELinuxMount: driverOpts.EnableSELinuxMount,
|
||||
embedded: driverOpts.Embedded,
|
||||
hooks: driverOpts.Hooks,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -722,10 +719,6 @@ func (m *mockCSIDriver) PrepareTest(ctx context.Context, f *framework.Framework)
|
||||
Features: map[string][]string{},
|
||||
}
|
||||
|
||||
if m.enableRecoverExpansionFailure {
|
||||
o.Features["csi-resizer"] = []string{"RecoverVolumeExpansionFailure=true"}
|
||||
}
|
||||
|
||||
err = utils.CreateFromManifests(ctx, f, m.driverNamespace, func(item interface{}) error {
|
||||
if err := utils.PatchCSIDeployment(config.Framework, o, item); err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user