Commit 6e8f5fea authored by Tim Hockin's avatar Tim Hockin

Fix validation for BoundPods to allow defaults

Thunking to Manifest makes a copy of the input, which is not useful for defaulting.
parent 33fcef6b
...@@ -370,8 +370,12 @@ func ValidatePod(pod *api.Pod) errs.ValidationErrorList { ...@@ -370,8 +370,12 @@ func ValidatePod(pod *api.Pod) errs.ValidationErrorList {
allErrs := errs.ValidationErrorList{} allErrs := errs.ValidationErrorList{}
if len(pod.Name) == 0 { if len(pod.Name) == 0 {
allErrs = append(allErrs, errs.NewFieldRequired("name", pod.Name)) allErrs = append(allErrs, errs.NewFieldRequired("name", pod.Name))
} else if !util.IsDNSSubdomain(pod.Name) {
allErrs = append(allErrs, errs.NewFieldInvalid("name", pod.Name, ""))
} }
if !util.IsDNSSubdomain(pod.Namespace) { if len(pod.Namespace) == 0 {
allErrs = append(allErrs, errs.NewFieldRequired("namespace", pod.Namespace))
} else if !util.IsDNSSubdomain(pod.Namespace) {
allErrs = append(allErrs, errs.NewFieldInvalid("namespace", pod.Namespace, "")) allErrs = append(allErrs, errs.NewFieldInvalid("namespace", pod.Namespace, ""))
} }
allErrs = append(allErrs, ValidatePodSpec(&pod.Spec).Prefix("spec")...) allErrs = append(allErrs, ValidatePodSpec(&pod.Spec).Prefix("spec")...)
...@@ -549,25 +553,20 @@ func ValidateReadOnlyPersistentDisks(volumes []api.Volume) errs.ValidationErrorL ...@@ -549,25 +553,20 @@ func ValidateReadOnlyPersistentDisks(volumes []api.Volume) errs.ValidationErrorL
} }
// ValidateBoundPod tests if required fields on a bound pod are set. // ValidateBoundPod tests if required fields on a bound pod are set.
func ValidateBoundPod(pod *api.BoundPod) (errors []error) { func ValidateBoundPod(pod *api.BoundPod) errs.ValidationErrorList {
if !util.IsDNSSubdomain(pod.Name) { allErrs := errs.ValidationErrorList{}
errors = append(errors, errs.NewFieldInvalid("name", pod.Name, "")) if len(pod.Name) == 0 {
} allErrs = append(allErrs, errs.NewFieldRequired("name", pod.Name))
if !util.IsDNSSubdomain(pod.Namespace) { } else if !util.IsDNSSubdomain(pod.Name) {
errors = append(errors, errs.NewFieldInvalid("namespace", pod.Namespace, "")) allErrs = append(allErrs, errs.NewFieldInvalid("name", pod.Name, ""))
}
containerManifest := &api.ContainerManifest{
Version: "v1beta2",
ID: pod.Name,
UUID: pod.UID,
Containers: pod.Spec.Containers,
Volumes: pod.Spec.Volumes,
RestartPolicy: pod.Spec.RestartPolicy,
} }
if errs := ValidateManifest(containerManifest); len(errs) != 0 { if len(pod.Name) == 0 {
errors = append(errors, errs...) allErrs = append(allErrs, errs.NewFieldRequired("namespace", pod.Namespace))
} else if !util.IsDNSSubdomain(pod.Namespace) {
allErrs = append(allErrs, errs.NewFieldInvalid("namespace", pod.Namespace, ""))
} }
return errors allErrs = append(allErrs, ValidatePodSpec(&pod.Spec).Prefix("spec")...)
return allErrs
} }
// ValidateMinion tests if required fields in the minion are set. // ValidateMinion tests if required fields in the minion are set.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment