mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
renamed exported symbol for pvOrderedIndex, added locks, remove go routine for sync funcs
This commit is contained in:
parent
6c6aab60ab
commit
f26df6a983
@ -117,6 +117,9 @@ func (controller *PersistentVolumeClaimBinder) syncPersistentVolume(obj interfac
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (controller *PersistentVolumeClaimBinder) syncPersistentVolumeClaim(obj interface{}) error {
|
func (controller *PersistentVolumeClaimBinder) syncPersistentVolumeClaim(obj interface{}) error {
|
||||||
|
controller.lock.Lock()
|
||||||
|
defer controller.lock.Unlock()
|
||||||
|
|
||||||
claim := obj.(*api.PersistentVolumeClaim)
|
claim := obj.(*api.PersistentVolumeClaim)
|
||||||
glog.V(5).Infof("Synchronizing PersistentVolumeClaim[%s]\n", claim.Name)
|
glog.V(5).Infof("Synchronizing PersistentVolumeClaim[%s]\n", claim.Name)
|
||||||
|
|
||||||
@ -218,7 +221,7 @@ func (controller *PersistentVolumeClaimBinder) reconcile(synchronizers ...Synchr
|
|||||||
wg := sync.WaitGroup{}
|
wg := sync.WaitGroup{}
|
||||||
wg.Add(len(items))
|
wg.Add(len(items))
|
||||||
for ix := range items {
|
for ix := range items {
|
||||||
go func(ix int) {
|
func(ix int) {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
obj := items[ix]
|
obj := items[ix]
|
||||||
glog.V(5).Infof("Reconciliation of %v", obj)
|
glog.V(5).Infof("Reconciliation of %v", obj)
|
||||||
|
@ -49,14 +49,14 @@ func accessModesIndexFunc(obj interface{}) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ListByAccessModes returns all volumes with the given set of AccessModeTypes *in order* of their storage capacity (low to high)
|
// ListByAccessModes returns all volumes with the given set of AccessModeTypes *in order* of their storage capacity (low to high)
|
||||||
func (pvstore *persistentVolumeOrderedIndex) ListByAccessModes(modes []api.AccessModeType) ([]*api.PersistentVolume, error) {
|
func (pvIndex *persistentVolumeOrderedIndex) ListByAccessModes(modes []api.AccessModeType) ([]*api.PersistentVolume, error) {
|
||||||
pv := &api.PersistentVolume{
|
pv := &api.PersistentVolume{
|
||||||
Spec: api.PersistentVolumeSpec{
|
Spec: api.PersistentVolumeSpec{
|
||||||
AccessModes: modes,
|
AccessModes: modes,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
objs, err := pvstore.Index("accessmodes", pv)
|
objs, err := pvIndex.Index("accessmodes", pv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -74,8 +74,8 @@ func (pvstore *persistentVolumeOrderedIndex) ListByAccessModes(modes []api.Acces
|
|||||||
type matchPredicate func(compareThis, toThis *api.PersistentVolume) bool
|
type matchPredicate func(compareThis, toThis *api.PersistentVolume) bool
|
||||||
|
|
||||||
// Find returns the nearest PV from the ordered list or nil if a match is not found
|
// Find returns the nearest PV from the ordered list or nil if a match is not found
|
||||||
func (pvstore *persistentVolumeOrderedIndex) Find(pv *api.PersistentVolume, matchPredicate matchPredicate) (*api.PersistentVolume, error) {
|
func (pvIndex *persistentVolumeOrderedIndex) Find(pv *api.PersistentVolume, matchPredicate matchPredicate) (*api.PersistentVolume, error) {
|
||||||
volumes, err := pvstore.ListByAccessModes(pv.Spec.AccessModes)
|
volumes, err := pvIndex.ListByAccessModes(pv.Spec.AccessModes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -88,7 +88,7 @@ func (pvstore *persistentVolumeOrderedIndex) Find(pv *api.PersistentVolume, matc
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FindByAccessModesAndStorageCapacity is a convenience method that calls Find w/ requisite matchPredicate for storage
|
// FindByAccessModesAndStorageCapacity is a convenience method that calls Find w/ requisite matchPredicate for storage
|
||||||
func (pvstore *persistentVolumeOrderedIndex) FindByAccessModesAndStorageCapacity(modes []api.AccessModeType, qty resource.Quantity) (*api.PersistentVolume, error) {
|
func (pvIndex *persistentVolumeOrderedIndex) FindByAccessModesAndStorageCapacity(modes []api.AccessModeType, qty resource.Quantity) (*api.PersistentVolume, error) {
|
||||||
pv := &api.PersistentVolume{
|
pv := &api.PersistentVolume{
|
||||||
Spec: api.PersistentVolumeSpec{
|
Spec: api.PersistentVolumeSpec{
|
||||||
AccessModes: modes,
|
AccessModes: modes,
|
||||||
@ -98,12 +98,12 @@ func (pvstore *persistentVolumeOrderedIndex) FindByAccessModesAndStorageCapacity
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
return pvstore.Find(pv, filterBoundVolumes)
|
return pvIndex.Find(pv, filterBoundVolumes)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindBestMatchForClaim is a convenience method that finds a volume by the claim's AccessModes and requests for Storage
|
// FindBestMatchForClaim is a convenience method that finds a volume by the claim's AccessModes and requests for Storage
|
||||||
func (pvstore *persistentVolumeOrderedIndex) FindBestMatchForClaim(claim *api.PersistentVolumeClaim) (*api.PersistentVolume, error) {
|
func (pvIndex *persistentVolumeOrderedIndex) FindBestMatchForClaim(claim *api.PersistentVolumeClaim) (*api.PersistentVolume, error) {
|
||||||
return pvstore.FindByAccessModesAndStorageCapacity(claim.Spec.AccessModes, claim.Spec.Resources.Requests[api.ResourceName(api.ResourceStorage)])
|
return pvIndex.FindByAccessModesAndStorageCapacity(claim.Spec.AccessModes, claim.Spec.Resources.Requests[api.ResourceName(api.ResourceStorage)])
|
||||||
}
|
}
|
||||||
|
|
||||||
// byCapacity is used to order volumes by ascending storage size
|
// byCapacity is used to order volumes by ascending storage size
|
||||||
@ -125,7 +125,6 @@ func (c byCapacity) Len() int {
|
|||||||
|
|
||||||
// matchStorageCapacity is a matchPredicate used to sort and find volumes
|
// matchStorageCapacity is a matchPredicate used to sort and find volumes
|
||||||
func matchStorageCapacity(pvA, pvB *api.PersistentVolume) bool {
|
func matchStorageCapacity(pvA, pvB *api.PersistentVolume) bool {
|
||||||
|
|
||||||
// skip already claimed volumes
|
// skip already claimed volumes
|
||||||
if pvA.Spec.ClaimRef != nil {
|
if pvA.Spec.ClaimRef != nil {
|
||||||
return false
|
return false
|
||||||
|
Loading…
Reference in New Issue
Block a user