mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 10:51:29 +00:00
Merge pull request #98433 from damemi/remove-helper-from-volume-zone
Move GetPersistentVolumeClaimClass to component-helpers
This commit is contained in:
commit
c200a8f9b7
@ -341,31 +341,6 @@ func GetMatchingTolerations(taints []v1.Taint, tolerations []v1.Toleration) (boo
|
|||||||
return true, result
|
return true, result
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPersistentVolumeClass returns StorageClassName.
|
|
||||||
func GetPersistentVolumeClass(volume *v1.PersistentVolume) string {
|
|
||||||
// Use beta annotation first
|
|
||||||
if class, found := volume.Annotations[v1.BetaStorageClassAnnotation]; found {
|
|
||||||
return class
|
|
||||||
}
|
|
||||||
|
|
||||||
return volume.Spec.StorageClassName
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPersistentVolumeClaimClass returns StorageClassName. If no storage class was
|
|
||||||
// requested, it returns "".
|
|
||||||
func GetPersistentVolumeClaimClass(claim *v1.PersistentVolumeClaim) string {
|
|
||||||
// Use beta annotation first
|
|
||||||
if class, found := claim.Annotations[v1.BetaStorageClassAnnotation]; found {
|
|
||||||
return class
|
|
||||||
}
|
|
||||||
|
|
||||||
if claim.Spec.StorageClassName != nil {
|
|
||||||
return *claim.Spec.StorageClassName
|
|
||||||
}
|
|
||||||
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// ScopedResourceSelectorRequirementsAsSelector converts the ScopedResourceSelectorRequirement api type into a struct that implements
|
// ScopedResourceSelectorRequirementsAsSelector converts the ScopedResourceSelectorRequirement api type into a struct that implements
|
||||||
// labels.Selector.
|
// labels.Selector.
|
||||||
func ScopedResourceSelectorRequirementsAsSelector(ssr v1.ScopedResourceSelectorRequirement) (labels.Selector, error) {
|
func ScopedResourceSelectorRequirementsAsSelector(ssr v1.ScopedResourceSelectorRequirement) (labels.Selector, error) {
|
||||||
|
@ -57,6 +57,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/client-go/util/workqueue:go_default_library",
|
"//staging/src/k8s.io/client-go/util/workqueue:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library",
|
||||||
|
"//staging/src/k8s.io/component-helpers/storage/volume:go_default_library",
|
||||||
"//staging/src/k8s.io/csi-translation-lib:go_default_library",
|
"//staging/src/k8s.io/csi-translation-lib:go_default_library",
|
||||||
"//staging/src/k8s.io/mount-utils:go_default_library",
|
"//staging/src/k8s.io/mount-utils:go_default_library",
|
||||||
"//vendor/k8s.io/klog/v2:go_default_library",
|
"//vendor/k8s.io/klog/v2:go_default_library",
|
||||||
|
@ -39,7 +39,7 @@ import (
|
|||||||
"k8s.io/client-go/util/workqueue"
|
"k8s.io/client-go/util/workqueue"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
volerr "k8s.io/cloud-provider/volume/errors"
|
volerr "k8s.io/cloud-provider/volume/errors"
|
||||||
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
|
storagehelpers "k8s.io/component-helpers/storage/volume"
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/common"
|
"k8s.io/kubernetes/pkg/controller/volume/common"
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/events"
|
"k8s.io/kubernetes/pkg/controller/volume/events"
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/persistentvolume/metrics"
|
"k8s.io/kubernetes/pkg/controller/volume/persistentvolume/metrics"
|
||||||
@ -286,8 +286,8 @@ func checkVolumeSatisfyClaim(volume *v1.PersistentVolume, claim *v1.PersistentVo
|
|||||||
return fmt.Errorf("requested PV is too small")
|
return fmt.Errorf("requested PV is too small")
|
||||||
}
|
}
|
||||||
|
|
||||||
requestedClass := v1helper.GetPersistentVolumeClaimClass(claim)
|
requestedClass := storagehelpers.GetPersistentVolumeClaimClass(claim)
|
||||||
if v1helper.GetPersistentVolumeClass(volume) != requestedClass {
|
if storagehelpers.GetPersistentVolumeClass(volume) != requestedClass {
|
||||||
return fmt.Errorf("storageClassName does not match")
|
return fmt.Errorf("storageClassName does not match")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -354,7 +354,7 @@ func (ctrl *PersistentVolumeController) syncUnboundClaim(claim *v1.PersistentVol
|
|||||||
if err = ctrl.emitEventForUnboundDelayBindingClaim(claim); err != nil {
|
if err = ctrl.emitEventForUnboundDelayBindingClaim(claim); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
case v1helper.GetPersistentVolumeClaimClass(claim) != "":
|
case storagehelpers.GetPersistentVolumeClaimClass(claim) != "":
|
||||||
if err = ctrl.provisionClaim(claim); err != nil {
|
if err = ctrl.provisionClaim(claim); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -1468,7 +1468,7 @@ func (ctrl *PersistentVolumeController) provisionClaimOperation(
|
|||||||
claim *v1.PersistentVolumeClaim,
|
claim *v1.PersistentVolumeClaim,
|
||||||
plugin vol.ProvisionableVolumePlugin,
|
plugin vol.ProvisionableVolumePlugin,
|
||||||
storageClass *storage.StorageClass) (string, error) {
|
storageClass *storage.StorageClass) (string, error) {
|
||||||
claimClass := v1helper.GetPersistentVolumeClaimClass(claim)
|
claimClass := storagehelpers.GetPersistentVolumeClaimClass(claim)
|
||||||
klog.V(4).Infof("provisionClaimOperation [%s] started, class: %q", claimToClaimKey(claim), claimClass)
|
klog.V(4).Infof("provisionClaimOperation [%s] started, class: %q", claimToClaimKey(claim), claimClass)
|
||||||
|
|
||||||
// called from provisionClaim(), in this case, plugin MUST NOT be nil
|
// called from provisionClaim(), in this case, plugin MUST NOT be nil
|
||||||
@ -1662,7 +1662,7 @@ func (ctrl *PersistentVolumeController) provisionClaimOperation(
|
|||||||
func (ctrl *PersistentVolumeController) provisionClaimOperationExternal(
|
func (ctrl *PersistentVolumeController) provisionClaimOperationExternal(
|
||||||
claim *v1.PersistentVolumeClaim,
|
claim *v1.PersistentVolumeClaim,
|
||||||
storageClass *storage.StorageClass) (string, error) {
|
storageClass *storage.StorageClass) (string, error) {
|
||||||
claimClass := v1helper.GetPersistentVolumeClaimClass(claim)
|
claimClass := storagehelpers.GetPersistentVolumeClaimClass(claim)
|
||||||
klog.V(4).Infof("provisionClaimOperationExternal [%s] started, class: %q", claimToClaimKey(claim), claimClass)
|
klog.V(4).Infof("provisionClaimOperationExternal [%s] started, class: %q", claimToClaimKey(claim), claimClass)
|
||||||
// Set provisionerName to external provisioner name by setClaimProvisioner
|
// Set provisionerName to external provisioner name by setClaimProvisioner
|
||||||
var err error
|
var err error
|
||||||
@ -1760,7 +1760,7 @@ func (ctrl *PersistentVolumeController) newRecyclerEventRecorder(volume *v1.Pers
|
|||||||
func (ctrl *PersistentVolumeController) findProvisionablePlugin(claim *v1.PersistentVolumeClaim) (vol.ProvisionableVolumePlugin, *storage.StorageClass, error) {
|
func (ctrl *PersistentVolumeController) findProvisionablePlugin(claim *v1.PersistentVolumeClaim) (vol.ProvisionableVolumePlugin, *storage.StorageClass, error) {
|
||||||
// provisionClaim() which leads here is never called with claimClass=="", we
|
// provisionClaim() which leads here is never called with claimClass=="", we
|
||||||
// can save some checks.
|
// can save some checks.
|
||||||
claimClass := v1helper.GetPersistentVolumeClaimClass(claim)
|
claimClass := storagehelpers.GetPersistentVolumeClaimClass(claim)
|
||||||
class, err := ctrl.classLister.Get(claimClass)
|
class, err := ctrl.classLister.Get(claimClass)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
@ -1828,7 +1828,7 @@ func (ctrl *PersistentVolumeController) getProvisionerNameFromVolume(volume *v1.
|
|||||||
// the AnnDynamicallyProvisioned annotation value, use the storageClass's Provisioner
|
// the AnnDynamicallyProvisioned annotation value, use the storageClass's Provisioner
|
||||||
// field to avoid explosion of the metric in the cases like local storage provisioner
|
// field to avoid explosion of the metric in the cases like local storage provisioner
|
||||||
// tagging a volume with arbitrary provisioner names
|
// tagging a volume with arbitrary provisioner names
|
||||||
storageClass := v1helper.GetPersistentVolumeClass(volume)
|
storageClass := storagehelpers.GetPersistentVolumeClass(volume)
|
||||||
class, err := ctrl.classLister.Get(storageClass)
|
class, err := ctrl.classLister.Get(storageClass)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "N/A"
|
return "N/A"
|
||||||
|
@ -6,7 +6,6 @@ go_library(
|
|||||||
importpath = "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/util",
|
importpath = "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/util",
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/apis/core/v1/helper:go_default_library",
|
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//pkg/volume/util:go_default_library",
|
"//pkg/volume/util:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
@ -19,6 +18,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library",
|
"//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/tools/reference:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/reference:go_default_library",
|
||||||
|
"//staging/src/k8s.io/component-helpers/storage/volume:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ import (
|
|||||||
"k8s.io/client-go/kubernetes/scheme"
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
storagelisters "k8s.io/client-go/listers/storage/v1"
|
storagelisters "k8s.io/client-go/listers/storage/v1"
|
||||||
"k8s.io/client-go/tools/reference"
|
"k8s.io/client-go/tools/reference"
|
||||||
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
|
storagehelpers "k8s.io/component-helpers/storage/volume"
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
||||||
)
|
)
|
||||||
@ -89,7 +89,7 @@ func IsDelayBindingProvisioning(claim *v1.PersistentVolumeClaim) bool {
|
|||||||
|
|
||||||
// IsDelayBindingMode checks if claim is in delay binding mode.
|
// IsDelayBindingMode checks if claim is in delay binding mode.
|
||||||
func IsDelayBindingMode(claim *v1.PersistentVolumeClaim, classLister storagelisters.StorageClassLister) (bool, error) {
|
func IsDelayBindingMode(claim *v1.PersistentVolumeClaim, classLister storagelisters.StorageClassLister) (bool, error) {
|
||||||
className := v1helper.GetPersistentVolumeClaimClass(claim)
|
className := storagehelpers.GetPersistentVolumeClaimClass(claim)
|
||||||
if className == "" {
|
if className == "" {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
@ -188,7 +188,7 @@ func FindMatchingVolume(
|
|||||||
var smallestVolume *v1.PersistentVolume
|
var smallestVolume *v1.PersistentVolume
|
||||||
var smallestVolumeQty resource.Quantity
|
var smallestVolumeQty resource.Quantity
|
||||||
requestedQty := claim.Spec.Resources.Requests[v1.ResourceName(v1.ResourceStorage)]
|
requestedQty := claim.Spec.Resources.Requests[v1.ResourceName(v1.ResourceStorage)]
|
||||||
requestedClass := v1helper.GetPersistentVolumeClaimClass(claim)
|
requestedClass := storagehelpers.GetPersistentVolumeClaimClass(claim)
|
||||||
|
|
||||||
var selector labels.Selector
|
var selector labels.Selector
|
||||||
if claim.Spec.Selector != nil {
|
if claim.Spec.Selector != nil {
|
||||||
@ -275,7 +275,7 @@ func FindMatchingVolume(
|
|||||||
} else if selector != nil && !selector.Matches(labels.Set(volume.Labels)) {
|
} else if selector != nil && !selector.Matches(labels.Set(volume.Labels)) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if v1helper.GetPersistentVolumeClass(volume) != requestedClass {
|
if storagehelpers.GetPersistentVolumeClass(volume) != requestedClass {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if !nodeAffinityValid {
|
if !nodeAffinityValid {
|
||||||
|
@ -34,6 +34,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library",
|
"//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/listers/storage/v1alpha1:go_default_library",
|
"//staging/src/k8s.io/client-go/listers/storage/v1alpha1:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
||||||
|
"//staging/src/k8s.io/component-helpers/storage/volume:go_default_library",
|
||||||
"//staging/src/k8s.io/csi-translation-lib:go_default_library",
|
"//staging/src/k8s.io/csi-translation-lib:go_default_library",
|
||||||
"//staging/src/k8s.io/csi-translation-lib/plugins:go_default_library",
|
"//staging/src/k8s.io/csi-translation-lib/plugins:go_default_library",
|
||||||
"//vendor/k8s.io/klog/v2:go_default_library",
|
"//vendor/k8s.io/klog/v2:go_default_library",
|
||||||
|
@ -18,6 +18,7 @@ package scheduling
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
storagehelpers "k8s.io/component-helpers/storage/volume"
|
||||||
"strconv"
|
"strconv"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
@ -26,7 +27,6 @@ import (
|
|||||||
v1 "k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// AssumeCache is a cache on top of the informer that allows for updating
|
// AssumeCache is a cache on top of the informer that allows for updating
|
||||||
@ -358,7 +358,7 @@ type pvAssumeCache struct {
|
|||||||
|
|
||||||
func pvStorageClassIndexFunc(obj interface{}) ([]string, error) {
|
func pvStorageClassIndexFunc(obj interface{}) ([]string, error) {
|
||||||
if pv, ok := obj.(*v1.PersistentVolume); ok {
|
if pv, ok := obj.(*v1.PersistentVolume); ok {
|
||||||
return []string{v1helper.GetPersistentVolumeClass(pv)}, nil
|
return []string{storagehelpers.GetPersistentVolumeClass(pv)}, nil
|
||||||
}
|
}
|
||||||
return []string{""}, fmt.Errorf("object is not a v1.PersistentVolume: %v", obj)
|
return []string{""}, fmt.Errorf("object is not a v1.PersistentVolume: %v", obj)
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,7 @@ import (
|
|||||||
corelisters "k8s.io/client-go/listers/core/v1"
|
corelisters "k8s.io/client-go/listers/core/v1"
|
||||||
storagelisters "k8s.io/client-go/listers/storage/v1"
|
storagelisters "k8s.io/client-go/listers/storage/v1"
|
||||||
storagelistersv1alpha1 "k8s.io/client-go/listers/storage/v1alpha1"
|
storagelistersv1alpha1 "k8s.io/client-go/listers/storage/v1alpha1"
|
||||||
|
storagehelpers "k8s.io/component-helpers/storage/volume"
|
||||||
csitrans "k8s.io/csi-translation-lib"
|
csitrans "k8s.io/csi-translation-lib"
|
||||||
csiplugins "k8s.io/csi-translation-lib/plugins"
|
csiplugins "k8s.io/csi-translation-lib/plugins"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
@ -815,7 +816,7 @@ func (b *volumeBinder) findMatchingVolumes(pod *v1.Pod, claimsToBind []*v1.Persi
|
|||||||
|
|
||||||
for _, pvc := range claimsToBind {
|
for _, pvc := range claimsToBind {
|
||||||
// Get storage class name from each PVC
|
// Get storage class name from each PVC
|
||||||
storageClassName := v1helper.GetPersistentVolumeClaimClass(pvc)
|
storageClassName := storagehelpers.GetPersistentVolumeClaimClass(pvc)
|
||||||
allPVs := b.pvCache.ListPVs(storageClassName)
|
allPVs := b.pvCache.ListPVs(storageClassName)
|
||||||
pvcName := getPVCName(pvc)
|
pvcName := getPVCName(pvc)
|
||||||
|
|
||||||
@ -855,7 +856,7 @@ func (b *volumeBinder) checkVolumeProvisions(pod *v1.Pod, claimsToProvision []*v
|
|||||||
// fails or we encounter an error.
|
// fails or we encounter an error.
|
||||||
for _, claim := range claimsToProvision {
|
for _, claim := range claimsToProvision {
|
||||||
pvcName := getPVCName(claim)
|
pvcName := getPVCName(claim)
|
||||||
className := v1helper.GetPersistentVolumeClaimClass(claim)
|
className := storagehelpers.GetPersistentVolumeClaimClass(claim)
|
||||||
if className == "" {
|
if className == "" {
|
||||||
return false, false, nil, fmt.Errorf("no class for claim %q", pvcName)
|
return false, false, nil, fmt.Errorf("no class for claim %q", pvcName)
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/apiserver/pkg/quota/v1:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/quota/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/quota/v1/generic:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/quota/v1/generic:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||||
|
"//staging/src/k8s.io/component-helpers/storage/volume:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -28,9 +28,9 @@ import (
|
|||||||
quota "k8s.io/apiserver/pkg/quota/v1"
|
quota "k8s.io/apiserver/pkg/quota/v1"
|
||||||
"k8s.io/apiserver/pkg/quota/v1/generic"
|
"k8s.io/apiserver/pkg/quota/v1/generic"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
|
storagehelpers "k8s.io/component-helpers/storage/volume"
|
||||||
api "k8s.io/kubernetes/pkg/apis/core"
|
api "k8s.io/kubernetes/pkg/apis/core"
|
||||||
k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
|
k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
|
||||||
"k8s.io/kubernetes/pkg/apis/core/v1/helper"
|
|
||||||
k8sfeatures "k8s.io/kubernetes/pkg/features"
|
k8sfeatures "k8s.io/kubernetes/pkg/features"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -153,7 +153,7 @@ func (p *pvcEvaluator) Usage(item runtime.Object) (corev1.ResourceList, error) {
|
|||||||
// charge for claim
|
// charge for claim
|
||||||
result[corev1.ResourcePersistentVolumeClaims] = *(resource.NewQuantity(1, resource.DecimalSI))
|
result[corev1.ResourcePersistentVolumeClaims] = *(resource.NewQuantity(1, resource.DecimalSI))
|
||||||
result[pvcObjectCountName] = *(resource.NewQuantity(1, resource.DecimalSI))
|
result[pvcObjectCountName] = *(resource.NewQuantity(1, resource.DecimalSI))
|
||||||
storageClassRef := helper.GetPersistentVolumeClaimClass(pvc)
|
storageClassRef := storagehelpers.GetPersistentVolumeClaimClass(pvc)
|
||||||
if len(storageClassRef) > 0 {
|
if len(storageClassRef) > 0 {
|
||||||
storageClassClaim := corev1.ResourceName(storageClassRef + storageClassSuffix + string(corev1.ResourcePersistentVolumeClaims))
|
storageClassClaim := corev1.ResourceName(storageClassRef + storageClassSuffix + string(corev1.ResourcePersistentVolumeClaims))
|
||||||
result[storageClassClaim] = *(resource.NewQuantity(1, resource.DecimalSI))
|
result[storageClassClaim] = *(resource.NewQuantity(1, resource.DecimalSI))
|
||||||
|
@ -23,6 +23,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/client-go/informers:go_default_library",
|
"//staging/src/k8s.io/client-go/informers:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/listers/core/v1:go_default_library",
|
"//staging/src/k8s.io/client-go/listers/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library",
|
"//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/component-helpers/storage/volume:go_default_library",
|
||||||
"//staging/src/k8s.io/csi-translation-lib:go_default_library",
|
"//staging/src/k8s.io/csi-translation-lib:go_default_library",
|
||||||
"//staging/src/k8s.io/csi-translation-lib/plugins:go_default_library",
|
"//staging/src/k8s.io/csi-translation-lib/plugins:go_default_library",
|
||||||
"//vendor/k8s.io/klog/v2:go_default_library",
|
"//vendor/k8s.io/klog/v2:go_default_library",
|
||||||
|
@ -26,8 +26,8 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/rand"
|
"k8s.io/apimachinery/pkg/util/rand"
|
||||||
corelisters "k8s.io/client-go/listers/core/v1"
|
corelisters "k8s.io/client-go/listers/core/v1"
|
||||||
storagelisters "k8s.io/client-go/listers/storage/v1"
|
storagelisters "k8s.io/client-go/listers/storage/v1"
|
||||||
|
storagehelpers "k8s.io/component-helpers/storage/volume"
|
||||||
csitrans "k8s.io/csi-translation-lib"
|
csitrans "k8s.io/csi-translation-lib"
|
||||||
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
|
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework"
|
"k8s.io/kubernetes/pkg/scheduler/framework"
|
||||||
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
||||||
|
|
||||||
@ -227,7 +227,7 @@ func (pl *CSILimits) getCSIDriverInfo(csiNode *storagev1.CSINode, pvc *v1.Persis
|
|||||||
func (pl *CSILimits) getCSIDriverInfoFromSC(csiNode *storagev1.CSINode, pvc *v1.PersistentVolumeClaim) (string, string) {
|
func (pl *CSILimits) getCSIDriverInfoFromSC(csiNode *storagev1.CSINode, pvc *v1.PersistentVolumeClaim) (string, string) {
|
||||||
namespace := pvc.Namespace
|
namespace := pvc.Namespace
|
||||||
pvcName := pvc.Name
|
pvcName := pvc.Name
|
||||||
scName := v1helper.GetPersistentVolumeClaimClass(pvc)
|
scName := storagehelpers.GetPersistentVolumeClaimClass(pvc)
|
||||||
|
|
||||||
// If StorageClass is not set or not found, then PVC must be using immediate binding mode
|
// If StorageClass is not set or not found, then PVC must be using immediate binding mode
|
||||||
// and hence it must be bound before scheduling. So it is safe to not count it.
|
// and hence it must be bound before scheduling. So it is safe to not count it.
|
||||||
|
@ -6,7 +6,6 @@ go_library(
|
|||||||
importpath = "k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumezone",
|
importpath = "k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumezone",
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/apis/core/v1/helper:go_default_library",
|
|
||||||
"//pkg/scheduler/framework:go_default_library",
|
"//pkg/scheduler/framework:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/storage/v1:go_default_library",
|
"//staging/src/k8s.io/api/storage/v1:go_default_library",
|
||||||
@ -15,6 +14,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/client-go/listers/core/v1:go_default_library",
|
"//staging/src/k8s.io/client-go/listers/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library",
|
"//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
|
||||||
|
"//staging/src/k8s.io/component-helpers/storage/volume:go_default_library",
|
||||||
"//vendor/k8s.io/klog/v2:go_default_library",
|
"//vendor/k8s.io/klog/v2:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -27,8 +27,8 @@ import (
|
|||||||
corelisters "k8s.io/client-go/listers/core/v1"
|
corelisters "k8s.io/client-go/listers/core/v1"
|
||||||
storagelisters "k8s.io/client-go/listers/storage/v1"
|
storagelisters "k8s.io/client-go/listers/storage/v1"
|
||||||
volumehelpers "k8s.io/cloud-provider/volume/helpers"
|
volumehelpers "k8s.io/cloud-provider/volume/helpers"
|
||||||
|
storagehelpers "k8s.io/component-helpers/storage/volume"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
|
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework"
|
"k8s.io/kubernetes/pkg/scheduler/framework"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ func (pl *VolumeZone) Filter(ctx context.Context, _ *framework.CycleState, pod *
|
|||||||
|
|
||||||
pvName := pvc.Spec.VolumeName
|
pvName := pvc.Spec.VolumeName
|
||||||
if pvName == "" {
|
if pvName == "" {
|
||||||
scName := v1helper.GetPersistentVolumeClaimClass(pvc)
|
scName := storagehelpers.GetPersistentVolumeClaimClass(pvc)
|
||||||
if len(scName) == 0 {
|
if len(scName) == 0 {
|
||||||
return framework.NewStatus(framework.Error, fmt.Sprint("PersistentVolumeClaim had no pv name and storageClass name"))
|
return framework.NewStatus(framework.Error, fmt.Sprint("PersistentVolumeClaim had no pv name and storageClass name"))
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ go_library(
|
|||||||
],
|
],
|
||||||
importpath = "k8s.io/kubernetes/pkg/volume/glusterfs",
|
importpath = "k8s.io/kubernetes/pkg/volume/glusterfs",
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/apis/core/v1/helper:go_default_library",
|
|
||||||
"//pkg/proxy/util:go_default_library",
|
"//pkg/proxy/util:go_default_library",
|
||||||
"//pkg/volume:go_default_library",
|
"//pkg/volume:go_default_library",
|
||||||
"//pkg/volume/util:go_default_library",
|
"//pkg/volume/util:go_default_library",
|
||||||
@ -30,6 +29,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
|
||||||
|
"//staging/src/k8s.io/component-helpers/storage/volume:go_default_library",
|
||||||
"//staging/src/k8s.io/mount-utils:go_default_library",
|
"//staging/src/k8s.io/mount-utils:go_default_library",
|
||||||
"//vendor/github.com/heketi/heketi/client/api/go-client:go_default_library",
|
"//vendor/github.com/heketi/heketi/client/api/go-client:go_default_library",
|
||||||
"//vendor/github.com/heketi/heketi/pkg/glusterfs/api:go_default_library",
|
"//vendor/github.com/heketi/heketi/pkg/glusterfs/api:go_default_library",
|
||||||
|
@ -47,7 +47,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/uuid"
|
"k8s.io/apimachinery/pkg/util/uuid"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
volumehelpers "k8s.io/cloud-provider/volume/helpers"
|
volumehelpers "k8s.io/cloud-provider/volume/helpers"
|
||||||
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
|
storagehelpers "k8s.io/component-helpers/storage/volume"
|
||||||
proxyutil "k8s.io/kubernetes/pkg/proxy/util"
|
proxyutil "k8s.io/kubernetes/pkg/proxy/util"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
volutil "k8s.io/kubernetes/pkg/volume/util"
|
volutil "k8s.io/kubernetes/pkg/volume/util"
|
||||||
@ -551,7 +551,7 @@ func (plugin *glusterfsPlugin) collectGids(className string, gidTable *MinMaxAll
|
|||||||
return fmt.Errorf("failed to get existing persistent volumes")
|
return fmt.Errorf("failed to get existing persistent volumes")
|
||||||
}
|
}
|
||||||
for _, pv := range pvList.Items {
|
for _, pv := range pvList.Items {
|
||||||
if v1helper.GetPersistentVolumeClass(&pv) != className {
|
if storagehelpers.GetPersistentVolumeClass(&pv) != className {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
pvName := pv.ObjectMeta.Name
|
pvName := pv.ObjectMeta.Name
|
||||||
@ -732,7 +732,7 @@ func (p *glusterfsVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTop
|
|||||||
return nil, fmt.Errorf("%s does not support block volume provisioning", p.plugin.GetPluginName())
|
return nil, fmt.Errorf("%s does not support block volume provisioning", p.plugin.GetPluginName())
|
||||||
}
|
}
|
||||||
klog.V(4).Infof("provision volume with options %v", p.options)
|
klog.V(4).Infof("provision volume with options %v", p.options)
|
||||||
scName := v1helper.GetPersistentVolumeClaimClass(p.options.PVC)
|
scName := storagehelpers.GetPersistentVolumeClaimClass(p.options.PVC)
|
||||||
cfg, err := parseClassParameters(p.options.Parameters, p.plugin.host.GetKubeClient())
|
cfg, err := parseClassParameters(p.options.Parameters, p.plugin.host.GetKubeClient())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -21,7 +21,6 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/legacyscheme:go_default_library",
|
"//pkg/api/legacyscheme:go_default_library",
|
||||||
"//pkg/api/v1/pod:go_default_library",
|
"//pkg/api/v1/pod:go_default_library",
|
||||||
"//pkg/apis/core/v1/helper:go_default_library",
|
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//pkg/securitycontext:go_default_library",
|
"//pkg/securitycontext:go_default_library",
|
||||||
"//pkg/volume:go_default_library",
|
"//pkg/volume:go_default_library",
|
||||||
@ -42,6 +41,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/component-base/metrics:go_default_library",
|
"//staging/src/k8s.io/component-base/metrics:go_default_library",
|
||||||
"//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library",
|
"//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library",
|
||||||
"//staging/src/k8s.io/component-helpers/scheduling/corev1:go_default_library",
|
"//staging/src/k8s.io/component-helpers/scheduling/corev1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/component-helpers/storage/volume:go_default_library",
|
||||||
"//staging/src/k8s.io/mount-utils:go_default_library",
|
"//staging/src/k8s.io/mount-utils:go_default_library",
|
||||||
"//vendor/google.golang.org/grpc/codes:go_default_library",
|
"//vendor/google.golang.org/grpc/codes:go_default_library",
|
||||||
"//vendor/google.golang.org/grpc/status:go_default_library",
|
"//vendor/google.golang.org/grpc/status:go_default_library",
|
||||||
|
@ -20,6 +20,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
storagehelpers "k8s.io/component-helpers/storage/volume"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"reflect"
|
"reflect"
|
||||||
@ -42,7 +43,6 @@ import (
|
|||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
|
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
|
||||||
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
|
|
||||||
"k8s.io/kubernetes/pkg/securitycontext"
|
"k8s.io/kubernetes/pkg/securitycontext"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
"k8s.io/kubernetes/pkg/volume/util/types"
|
"k8s.io/kubernetes/pkg/volume/util/types"
|
||||||
@ -150,7 +150,7 @@ func GetClassForVolume(kubeClient clientset.Interface, pv *v1.PersistentVolume)
|
|||||||
if kubeClient == nil {
|
if kubeClient == nil {
|
||||||
return nil, fmt.Errorf("cannot get kube client")
|
return nil, fmt.Errorf("cannot get kube client")
|
||||||
}
|
}
|
||||||
className := v1helper.GetPersistentVolumeClass(pv)
|
className := storagehelpers.GetPersistentVolumeClass(pv)
|
||||||
if className == "" {
|
if className == "" {
|
||||||
return nil, fmt.Errorf("volume has no storage class")
|
return nil, fmt.Errorf("volume has no storage class")
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@ filegroup(
|
|||||||
"//staging/src/k8s.io/component-helpers/auth/rbac/reconciliation:all-srcs",
|
"//staging/src/k8s.io/component-helpers/auth/rbac/reconciliation:all-srcs",
|
||||||
"//staging/src/k8s.io/component-helpers/auth/rbac/validation:all-srcs",
|
"//staging/src/k8s.io/component-helpers/auth/rbac/validation:all-srcs",
|
||||||
"//staging/src/k8s.io/component-helpers/scheduling/corev1:all-srcs",
|
"//staging/src/k8s.io/component-helpers/scheduling/corev1:all-srcs",
|
||||||
|
"//staging/src/k8s.io/component-helpers/storage/volume:all-srcs",
|
||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
|
8
staging/src/k8s.io/component-helpers/storage/OWNERS
Normal file
8
staging/src/k8s.io/component-helpers/storage/OWNERS
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# See the OWNERS docs at https://go.k8s.io/owners
|
||||||
|
|
||||||
|
approvers:
|
||||||
|
- sig-storage-approvers
|
||||||
|
reviewers:
|
||||||
|
- sig-storage-reviewers
|
||||||
|
labels:
|
||||||
|
- sig/storage
|
24
staging/src/k8s.io/component-helpers/storage/volume/BUILD
Normal file
24
staging/src/k8s.io/component-helpers/storage/volume/BUILD
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = ["helpers.go"],
|
||||||
|
importmap = "k8s.io/kubernetes/vendor/k8s.io/component-helpers/storage/volume",
|
||||||
|
importpath = "k8s.io/component-helpers/storage/volume",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = ["//staging/src/k8s.io/api/core/v1:go_default_library"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package volume
|
||||||
|
|
||||||
|
import v1 "k8s.io/api/core/v1"
|
||||||
|
|
||||||
|
// GetPersistentVolumeClaimClass returns StorageClassName. If no storage class was
|
||||||
|
// requested, it returns "".
|
||||||
|
func GetPersistentVolumeClaimClass(claim *v1.PersistentVolumeClaim) string {
|
||||||
|
// Use beta annotation first
|
||||||
|
if class, found := claim.Annotations[v1.BetaStorageClassAnnotation]; found {
|
||||||
|
return class
|
||||||
|
}
|
||||||
|
|
||||||
|
if claim.Spec.StorageClassName != nil {
|
||||||
|
return *claim.Spec.StorageClassName
|
||||||
|
}
|
||||||
|
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPersistentVolumeClass returns StorageClassName.
|
||||||
|
func GetPersistentVolumeClass(volume *v1.PersistentVolume) string {
|
||||||
|
// Use beta annotation first
|
||||||
|
if class, found := volume.Annotations[v1.BetaStorageClassAnnotation]; found {
|
||||||
|
return class
|
||||||
|
}
|
||||||
|
|
||||||
|
return volume.Spec.StorageClassName
|
||||||
|
}
|
1
vendor/modules.txt
vendored
1
vendor/modules.txt
vendored
@ -2243,6 +2243,7 @@ k8s.io/component-helpers/auth/rbac/reconciliation
|
|||||||
k8s.io/component-helpers/auth/rbac/validation
|
k8s.io/component-helpers/auth/rbac/validation
|
||||||
k8s.io/component-helpers/scheduling/corev1
|
k8s.io/component-helpers/scheduling/corev1
|
||||||
k8s.io/component-helpers/scheduling/corev1/nodeaffinity
|
k8s.io/component-helpers/scheduling/corev1/nodeaffinity
|
||||||
|
k8s.io/component-helpers/storage/volume
|
||||||
# k8s.io/controller-manager v0.0.0 => ./staging/src/k8s.io/controller-manager
|
# k8s.io/controller-manager v0.0.0 => ./staging/src/k8s.io/controller-manager
|
||||||
## explicit
|
## explicit
|
||||||
# k8s.io/controller-manager => ./staging/src/k8s.io/controller-manager
|
# k8s.io/controller-manager => ./staging/src/k8s.io/controller-manager
|
||||||
|
Loading…
Reference in New Issue
Block a user