mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Reduce duplication between helpers for checking featuregate
This commit is contained in:
		@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user