mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-05 18:24:07 +00:00
Reduce duplication between helpers for checking featuregate
This commit is contained in:
parent
7edd72f780
commit
2e217e8cea
@ -22,6 +22,7 @@ import (
|
||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||
"k8s.io/kubernetes/pkg/apis/core"
|
||||
"k8s.io/kubernetes/pkg/apis/core/helper"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
)
|
||||
|
||||
@ -95,10 +96,10 @@ func EnforceDataSourceBackwardsCompatibility(pvcSpec, oldPVCSpec *core.Persisten
|
||||
|
||||
func DropDisabledFieldsFromStatus(pvc, oldPVC *core.PersistentVolumeClaim) {
|
||||
if !utilfeature.DefaultFeatureGate.Enabled(features.RecoverVolumeExpansionFailure) {
|
||||
if !allocatedResourcesInUse(oldPVC) {
|
||||
if !helper.ClaimContainsAllocatedResources(oldPVC) {
|
||||
pvc.Status.AllocatedResources = nil
|
||||
}
|
||||
if !resizeStatusInUse(oldPVC) {
|
||||
if !helper.ClaimContainsAllocatedResourceStatus(oldPVC) {
|
||||
pvc.Status.AllocatedResourceStatuses = nil
|
||||
}
|
||||
}
|
||||
@ -175,28 +176,6 @@ func NormalizeDataSources(pvcSpec *core.PersistentVolumeClaimSpec) {
|
||||
}
|
||||
}
|
||||
|
||||
func resizeStatusInUse(oldPVC *core.PersistentVolumeClaim) bool {
|
||||
if oldPVC == nil {
|
||||
return false
|
||||
}
|
||||
if oldPVC.Status.AllocatedResourceStatuses != nil {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func allocatedResourcesInUse(oldPVC *core.PersistentVolumeClaim) bool {
|
||||
if oldPVC == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
if oldPVC.Status.AllocatedResources != nil {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func GetWarningsForPersistentVolumeClaim(pv *core.PersistentVolumeClaim) []string {
|
||||
var warnings []string
|
||||
|
||||
|
@ -361,7 +361,22 @@ func ContainsAccessMode(modes []core.PersistentVolumeAccessMode, mode core.Persi
|
||||
}
|
||||
|
||||
func ClaimContainsAllocatedResources(pvc *core.PersistentVolumeClaim) bool {
|
||||
if pvc.Status.AllocatedResourceStatuses != nil || pvc.Status.AllocatedResources != nil {
|
||||
if pvc == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
if pvc.Status.AllocatedResources != nil {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func ClaimContainsAllocatedResourceStatus(pvc *core.PersistentVolumeClaim) bool {
|
||||
if pvc == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
if pvc.Status.AllocatedResourceStatuses != nil {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
@ -2047,7 +2047,8 @@ func ValidationOptionsForPersistentVolumeClaim(pvc, oldPvc *core.PersistentVolum
|
||||
opts.AllowReadWriteOncePod = true
|
||||
}
|
||||
|
||||
if helper.ClaimContainsAllocatedResources(oldPvc) {
|
||||
if helper.ClaimContainsAllocatedResources(oldPvc) ||
|
||||
helper.ClaimContainsAllocatedResourceStatus(oldPvc) {
|
||||
opts.EnableRecoverFromExpansionFailure = true
|
||||
}
|
||||
return opts
|
||||
|
@ -159,16 +159,16 @@ func TestResizeFunctions(t *testing.T) {
|
||||
{
|
||||
name: "mark fs resize, with no other conditions",
|
||||
pvc: basePVC.get(),
|
||||
expectedPVC: basePVC.modifyStorageResourceStatus(v1.PersistentVolumeClaimNodeResizePending).get(),
|
||||
expectedPVC: basePVC.withStorageResourceStatus(v1.PersistentVolumeClaimNodeResizePending).get(),
|
||||
testFunc: func(pvc *v1.PersistentVolumeClaim, c clientset.Interface, _ resource.Quantity) (*v1.PersistentVolumeClaim, error) {
|
||||
return MarkForFSResize(pvc, c)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "mark fs resize, when other resource statuses are present",
|
||||
pvc: basePVC.modifyResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeFailed).get(),
|
||||
expectedPVC: basePVC.modifyResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeFailed).
|
||||
modifyStorageResourceStatus(v1.PersistentVolumeClaimNodeResizePending).get(),
|
||||
pvc: basePVC.withResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeFailed).get(),
|
||||
expectedPVC: basePVC.withResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeFailed).
|
||||
withStorageResourceStatus(v1.PersistentVolumeClaimNodeResizePending).get(),
|
||||
testFunc: func(pvc *v1.PersistentVolumeClaim, c clientset.Interface, _ resource.Quantity) (*v1.PersistentVolumeClaim, error) {
|
||||
return MarkForFSResize(pvc, c)
|
||||
},
|
||||
@ -176,17 +176,17 @@ func TestResizeFunctions(t *testing.T) {
|
||||
{
|
||||
name: "mark controller resize in-progress",
|
||||
pvc: basePVC.get(),
|
||||
expectedPVC: basePVC.modifyStorageResourceStatus(v1.PersistentVolumeClaimControllerResizeInProgress).get(),
|
||||
expectedPVC: basePVC.withStorageResourceStatus(v1.PersistentVolumeClaimControllerResizeInProgress).get(),
|
||||
testFunc: func(pvc *v1.PersistentVolumeClaim, i clientset.Interface, q resource.Quantity) (*v1.PersistentVolumeClaim, error) {
|
||||
return MarkControllerReisizeInProgress(pvc, "foobar", q, i)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "mark resize finished",
|
||||
pvc: basePVC.modifyResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeFailed).
|
||||
modifyStorageResourceStatus(v1.PersistentVolumeClaimNodeResizePending).get(),
|
||||
expectedPVC: basePVC.modifyResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeFailed).
|
||||
modifyStorageResourceStatus("").get(),
|
||||
pvc: basePVC.withResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeFailed).
|
||||
withStorageResourceStatus(v1.PersistentVolumeClaimNodeResizePending).get(),
|
||||
expectedPVC: basePVC.withResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeFailed).
|
||||
withStorageResourceStatus("").get(),
|
||||
testFunc: func(pvc *v1.PersistentVolumeClaim, i clientset.Interface, q resource.Quantity) (*v1.PersistentVolumeClaim, error) {
|
||||
return MarkFSResizeFinished(pvc, q, i)
|
||||
},
|
||||
@ -281,11 +281,11 @@ func makePVC(conditions []v1.PersistentVolumeClaimCondition) pvcModifier {
|
||||
return pvcModifier{pvc}
|
||||
}
|
||||
|
||||
func (m pvcModifier) modifyStorageResourceStatus(status v1.ClaimResourceStatus) pvcModifier {
|
||||
return m.modifyResourceStatus(v1.ResourceStorage, status)
|
||||
func (m pvcModifier) withStorageResourceStatus(status v1.ClaimResourceStatus) pvcModifier {
|
||||
return m.withResourceStatus(v1.ResourceStorage, status)
|
||||
}
|
||||
|
||||
func (m pvcModifier) modifyResourceStatus(resource v1.ResourceName, status v1.ClaimResourceStatus) pvcModifier {
|
||||
func (m pvcModifier) withResourceStatus(resource v1.ResourceName, status v1.ClaimResourceStatus) pvcModifier {
|
||||
if m.pvc.Status.AllocatedResourceStatuses != nil && status == "" {
|
||||
delete(m.pvc.Status.AllocatedResourceStatuses, resource)
|
||||
return m
|
||||
|
Loading…
Reference in New Issue
Block a user