support fibre channel volume

Signed-off-by: Huamin Chen <hchen@redhat.com>
This commit is contained in:
Huamin Chen
2015-08-11 11:19:29 -04:00
parent 0f8cc8926f
commit ed9a1bbd3a
22 changed files with 1375 additions and 1 deletions

View File

@@ -390,6 +390,10 @@ func validateSource(source *api.VolumeSource) errs.ValidationErrorList {
numVolumes++
allErrs = append(allErrs, validateDownwardAPIVolumeSource(source.DownwardAPI).Prefix("downwardApi")...)
}
if source.FC != nil {
numVolumes++
allErrs = append(allErrs, validateFCVolumeSource(source.FC).Prefix("fc")...)
}
if numVolumes != 1 {
allErrs = append(allErrs, errs.NewFieldInvalid("", source, "exactly 1 volume type is required"))
}
@@ -430,6 +434,25 @@ func validateISCSIVolumeSource(iscsi *api.ISCSIVolumeSource) errs.ValidationErro
return allErrs
}
func validateFCVolumeSource(fc *api.FCVolumeSource) errs.ValidationErrorList {
allErrs := errs.ValidationErrorList{}
if len(fc.TargetWWNs) < 1 {
allErrs = append(allErrs, errs.NewFieldRequired("targetWWNs"))
}
if fc.FSType == "" {
allErrs = append(allErrs, errs.NewFieldRequired("fsType"))
}
if fc.Lun == nil {
allErrs = append(allErrs, errs.NewFieldRequired("lun"))
} else {
if *fc.Lun < 0 || *fc.Lun > 255 {
allErrs = append(allErrs, errs.NewFieldInvalid("lun", fc.Lun, ""))
}
}
return allErrs
}
func validateGCEPersistentDiskVolumeSource(PD *api.GCEPersistentDiskVolumeSource) errs.ValidationErrorList {
allErrs := errs.ValidationErrorList{}
if PD.PDName == "" {
@@ -624,6 +647,10 @@ func ValidatePersistentVolume(pv *api.PersistentVolume) errs.ValidationErrorList
numVolumes++
allErrs = append(allErrs, validateCinderVolumeSource(pv.Spec.Cinder).Prefix("cinder")...)
}
if pv.Spec.FC != nil {
numVolumes++
allErrs = append(allErrs, validateFCVolumeSource(pv.Spec.FC).Prefix("fc")...)
}
if numVolumes != 1 {
allErrs = append(allErrs, errs.NewFieldInvalid("", pv.Spec.PersistentVolumeSource, "exactly 1 volume type is required"))
}