mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
Merge pull request #11829 from markturansky/validate_access_modes
Add validation for AccessModes
This commit is contained in:
commit
b1e6b87a5f
@ -484,6 +484,12 @@ func ValidatePersistentVolume(pv *api.PersistentVolume) errs.ValidationErrorList
|
|||||||
allErrs = append(allErrs, errs.NewFieldRequired("persistentVolume.AccessModes"))
|
allErrs = append(allErrs, errs.NewFieldRequired("persistentVolume.AccessModes"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, mode := range pv.Spec.AccessModes {
|
||||||
|
if mode != api.ReadWriteOnce && mode != api.ReadOnlyMany && mode != api.ReadWriteMany {
|
||||||
|
allErrs = append(allErrs, errs.NewFieldInvalid("persistentVolume.Spec.AccessModes", mode, fmt.Sprintf("only %s, %s, and %s are valid", api.ReadWriteOnce, api.ReadOnlyMany, api.ReadWriteMany)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if len(pv.Spec.Capacity) == 0 {
|
if len(pv.Spec.Capacity) == 0 {
|
||||||
allErrs = append(allErrs, errs.NewFieldRequired("persistentVolume.Capacity"))
|
allErrs = append(allErrs, errs.NewFieldRequired("persistentVolume.Capacity"))
|
||||||
}
|
}
|
||||||
@ -557,6 +563,11 @@ func ValidatePersistentVolumeClaim(pvc *api.PersistentVolumeClaim) errs.Validati
|
|||||||
if len(pvc.Spec.AccessModes) == 0 {
|
if len(pvc.Spec.AccessModes) == 0 {
|
||||||
allErrs = append(allErrs, errs.NewFieldInvalid("persistentVolumeClaim.Spec.AccessModes", pvc.Spec.AccessModes, "at least 1 PersistentVolumeAccessMode is required"))
|
allErrs = append(allErrs, errs.NewFieldInvalid("persistentVolumeClaim.Spec.AccessModes", pvc.Spec.AccessModes, "at least 1 PersistentVolumeAccessMode is required"))
|
||||||
}
|
}
|
||||||
|
for _, mode := range pvc.Spec.AccessModes {
|
||||||
|
if mode != api.ReadWriteOnce && mode != api.ReadOnlyMany && mode != api.ReadWriteMany {
|
||||||
|
allErrs = append(allErrs, errs.NewFieldInvalid("persistentVolumeClaim.Spec.AccessModes", mode, fmt.Sprintf("only %s, %s, and %s are valid", api.ReadWriteOnce, api.ReadOnlyMany, api.ReadWriteMany)))
|
||||||
|
}
|
||||||
|
}
|
||||||
if _, ok := pvc.Spec.Resources.Requests[api.ResourceStorage]; !ok {
|
if _, ok := pvc.Spec.Resources.Requests[api.ResourceStorage]; !ok {
|
||||||
allErrs = append(allErrs, errs.NewFieldInvalid("persistentVolumeClaim.Spec.Resources.Requests", pvc.Spec.Resources.Requests, "No Storage size specified"))
|
allErrs = append(allErrs, errs.NewFieldInvalid("persistentVolumeClaim.Spec.Resources.Requests", pvc.Spec.Resources.Requests, "No Storage size specified"))
|
||||||
}
|
}
|
||||||
|
@ -264,6 +264,18 @@ func TestValidatePersistentVolumes(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
"invalid-accessmode": {
|
||||||
|
isExpectedFailure: true,
|
||||||
|
volume: testVolume("foo", "", api.PersistentVolumeSpec{
|
||||||
|
Capacity: api.ResourceList{
|
||||||
|
api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
|
||||||
|
},
|
||||||
|
AccessModes: []api.PersistentVolumeAccessMode{"fakemode"},
|
||||||
|
PersistentVolumeSource: api.PersistentVolumeSource{
|
||||||
|
HostPath: &api.HostPathVolumeSource{Path: "/foo"},
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
"unexpected-namespace": {
|
"unexpected-namespace": {
|
||||||
isExpectedFailure: true,
|
isExpectedFailure: true,
|
||||||
volume: testVolume("foo", "unexpected-namespace", api.PersistentVolumeSpec{
|
volume: testVolume("foo", "unexpected-namespace", api.PersistentVolumeSpec{
|
||||||
@ -365,6 +377,17 @@ func TestValidatePersistentVolumeClaim(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
"invalid-accessmode": {
|
||||||
|
isExpectedFailure: true,
|
||||||
|
claim: testVolumeClaim("foo", "ns", api.PersistentVolumeClaimSpec{
|
||||||
|
AccessModes: []api.PersistentVolumeAccessMode{"fakemode"},
|
||||||
|
Resources: api.ResourceRequirements{
|
||||||
|
Requests: api.ResourceList{
|
||||||
|
api.ResourceName(api.ResourceStorage): resource.MustParse("10G"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
"missing-namespace": {
|
"missing-namespace": {
|
||||||
isExpectedFailure: true,
|
isExpectedFailure: true,
|
||||||
claim: testVolumeClaim("foo", "", api.PersistentVolumeClaimSpec{
|
claim: testVolumeClaim("foo", "", api.PersistentVolumeClaimSpec{
|
||||||
|
Loading…
Reference in New Issue
Block a user