Make standalone function to check for (pre-)bound volumes.

Note the semantic change, we now check for UID=""
This commit is contained in:
Jan Safranek 2016-05-17 14:55:06 +02:00
parent 20305f9235
commit a195802d3e
2 changed files with 18 additions and 2 deletions

View File

@ -270,3 +270,19 @@ func (ctrl *PersistentVolumeController) Stop() {
func (ctrl *PersistentVolumeController) isFullySynced() bool { func (ctrl *PersistentVolumeController) isFullySynced() bool {
return ctrl.volumeController.HasSynced() && ctrl.claimController.HasSynced() return ctrl.volumeController.HasSynced() && ctrl.claimController.HasSynced()
} }
// isVolumeBoundToClaim returns true, if given volume is pre-bound or bound
// to specific claim. Both claim.Name and claim.Namespace must be equal.
// If claim.UID is present in volume.Spec.ClaimRef, it must be equal too.
func isVolumeBoundToClaim(volume *api.PersistentVolume, claim *api.PersistentVolumeClaim) bool {
if volume.Spec.ClaimRef == nil {
return false
}
if claim.Name != volume.Spec.ClaimRef.Name || claim.Namespace != volume.Spec.ClaimRef.Namespace {
return false
}
if volume.Spec.ClaimRef.UID != "" && claim.UID != volume.Spec.ClaimRef.UID {
return false
}
return true
}

View File

@ -92,8 +92,8 @@ func (pvIndex *persistentVolumeOrderedIndex) findByClaim(claim *api.PersistentVo
continue continue
} }
if claim.Name == volume.Spec.ClaimRef.Name && claim.Namespace == volume.Spec.ClaimRef.Namespace && claim.UID == volume.Spec.ClaimRef.UID { if isVolumeBoundToClaim(volume, claim) {
// exact match! No search required. // Exact match! No search required.
return volume, nil return volume, nil
} }
} }