renamed exported symbol for pvOrderedIndex, added locks, remove go routine for sync funcs

This commit is contained in:
markturansky 2015-04-16 13:50:56 -04:00
parent 6c6aab60ab
commit f26df6a983
2 changed files with 12 additions and 10 deletions

View File

@ -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)

View File

@ -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