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