From 535785e3b9e019ca5960def66086f9e07bb877a2 Mon Sep 17 00:00:00 2001 From: Brian Grant Date: Wed, 5 Nov 2014 06:52:06 +0000 Subject: [PATCH] Update api/validation service validation with service fields moved by #2086 --- pkg/api/validation/validation.go | 6 ++--- pkg/api/validation/validation_test.go | 36 ++++++++++++++++----------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/pkg/api/validation/validation.go b/pkg/api/validation/validation.go index 3654ad77607..2d033e31c10 100644 --- a/pkg/api/validation/validation.go +++ b/pkg/api/validation/validation.go @@ -408,14 +408,14 @@ func ValidateService(service *api.Service, lister ServiceLister, ctx api.Context if labels.Set(service.Spec.Selector).AsSelector().Empty() { allErrs = append(allErrs, errs.NewFieldRequired("spec.selector", service.Spec.Selector)) } - if service.CreateExternalLoadBalancer { + if service.Spec.CreateExternalLoadBalancer { services, err := lister.ListServices(ctx) if err != nil { allErrs = append(allErrs, errs.NewInternalError(err)) } else { for i := range services.Items { - if services.Items[i].CreateExternalLoadBalancer && services.Items[i].Port == service.Port { - allErrs = append(allErrs, errs.NewConflict("service", service.Namespace, fmt.Errorf("Port: %d is already in use", service.Port))) + if services.Items[i].Spec.CreateExternalLoadBalancer && services.Items[i].Spec.Port == service.Spec.Port { + allErrs = append(allErrs, errs.NewConflict("service", service.Namespace, fmt.Errorf("Port: %d is already in use", service.Spec.Port))) break } } diff --git a/pkg/api/validation/validation_test.go b/pkg/api/validation/validation_test.go index 43086a09257..a82a05ca32c 100644 --- a/pkg/api/validation/validation_test.go +++ b/pkg/api/validation/validation_test.go @@ -753,13 +753,15 @@ func TestValidateService(t *testing.T) { name: "invalid port in use", svc: api.Service{ ObjectMeta: api.ObjectMeta{Name: "abc123", Namespace: api.NamespaceDefault}, - Port: 80, - CreateExternalLoadBalancer: true, - Selector: map[string]string{"foo": "bar"}, + Spec: api.ServiceSpec{ + Port: 80, + CreateExternalLoadBalancer: true, + Selector: map[string]string{"foo": "bar"}, + }, }, existing: api.ServiceList{ Items: []api.Service{ - {Port: 80, CreateExternalLoadBalancer: true}, + {Spec: api.ServiceSpec{Port: 80, CreateExternalLoadBalancer: true}}, }, }, numErrs: 1, @@ -768,13 +770,15 @@ func TestValidateService(t *testing.T) { name: "same port in use, but not external", svc: api.Service{ ObjectMeta: api.ObjectMeta{Name: "abc123", Namespace: api.NamespaceDefault}, - Port: 80, - CreateExternalLoadBalancer: true, - Selector: map[string]string{"foo": "bar"}, + Spec: api.ServiceSpec{ + Port: 80, + CreateExternalLoadBalancer: true, + Selector: map[string]string{"foo": "bar"}, + }, }, existing: api.ServiceList{ Items: []api.Service{ - {Port: 80}, + {Spec: api.ServiceSpec{Port: 80}}, }, }, numErrs: 0, @@ -783,12 +787,14 @@ func TestValidateService(t *testing.T) { name: "same port in use, but not external on input", svc: api.Service{ ObjectMeta: api.ObjectMeta{Name: "abc123", Namespace: api.NamespaceDefault}, - Port: 80, - Selector: map[string]string{"foo": "bar"}, + Spec: api.ServiceSpec{ + Port: 80, + Selector: map[string]string{"foo": "bar"}, + }, }, existing: api.ServiceList{ Items: []api.Service{ - {Port: 80, CreateExternalLoadBalancer: true}, + {Spec: api.ServiceSpec{Port: 80, CreateExternalLoadBalancer: true}}, }, }, numErrs: 0, @@ -797,12 +803,14 @@ func TestValidateService(t *testing.T) { name: "same port in use, but neither external", svc: api.Service{ ObjectMeta: api.ObjectMeta{Name: "abc123", Namespace: api.NamespaceDefault}, - Port: 80, - Selector: map[string]string{"foo": "bar"}, + Spec: api.ServiceSpec{ + Port: 80, + Selector: map[string]string{"foo": "bar"}, + }, }, existing: api.ServiceList{ Items: []api.Service{ - {Port: 80}, + {Spec: api.ServiceSpec{Port: 80}}, }, }, numErrs: 0,