mirror of https://github.com/k3s-io/k3s
validate that daemonsets don't have empty selectors on creation
parent
ab20b884df
commit
2eb4896858
|
@ -201,6 +201,9 @@ func ValidateDaemonSetSpec(spec *extensions.DaemonSetSpec, fldPath *field.Path)
|
||||||
if err == nil && !selector.Matches(labels.Set(spec.Template.Labels)) {
|
if err == nil && !selector.Matches(labels.Set(spec.Template.Labels)) {
|
||||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("template", "metadata", "labels"), spec.Template.Labels, "`selector` does not match template `labels`"))
|
allErrs = append(allErrs, field.Invalid(fldPath.Child("template", "metadata", "labels"), spec.Template.Labels, "`selector` does not match template `labels`"))
|
||||||
}
|
}
|
||||||
|
if spec.Selector != nil && len(spec.Selector.MatchLabels)+len(spec.Selector.MatchExpressions) == 0 {
|
||||||
|
allErrs = append(allErrs, field.Invalid(fldPath.Child("selector"), spec.Selector, "empty selector is not valid for daemonset."))
|
||||||
|
}
|
||||||
|
|
||||||
allErrs = append(allErrs, apivalidation.ValidatePodTemplateSpec(&spec.Template, fldPath.Child("template"))...)
|
allErrs = append(allErrs, apivalidation.ValidatePodTemplateSpec(&spec.Template, fldPath.Child("template"))...)
|
||||||
// Daemons typically run on more than one node, so mark Read-Write persistent disks as invalid.
|
// Daemons typically run on more than one node, so mark Read-Write persistent disks as invalid.
|
||||||
|
|
|
@ -700,9 +700,16 @@ func TestValidateDaemonSet(t *testing.T) {
|
||||||
Template: validPodTemplate.Template,
|
Template: validPodTemplate.Template,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"nil selector": {
|
||||||
|
ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault},
|
||||||
|
Spec: extensions.DaemonSetSpec{
|
||||||
|
Template: validPodTemplate.Template,
|
||||||
|
},
|
||||||
|
},
|
||||||
"empty selector": {
|
"empty selector": {
|
||||||
ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault},
|
ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault},
|
||||||
Spec: extensions.DaemonSetSpec{
|
Spec: extensions.DaemonSetSpec{
|
||||||
|
Selector: &unversioned.LabelSelector{},
|
||||||
Template: validPodTemplate.Template,
|
Template: validPodTemplate.Template,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue