From d45f01e953be69ddf9fa387c09aa0ad366488d00 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 20 Oct 2017 23:01:11 -0400 Subject: [PATCH] Ensure port on resolved service host --- plugin/pkg/admission/webhook/serviceresolver.go | 7 +++---- plugin/pkg/admission/webhook/serviceresolver_test.go | 8 +++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/plugin/pkg/admission/webhook/serviceresolver.go b/plugin/pkg/admission/webhook/serviceresolver.go index 018402934fe..edfc4f9531a 100644 --- a/plugin/pkg/admission/webhook/serviceresolver.go +++ b/plugin/pkg/admission/webhook/serviceresolver.go @@ -32,11 +32,10 @@ var _ admissioninit.ServiceResolver = defaultServiceResolver{} // ResolveEndpoint constructs a service URL from a given namespace and name // note that the name and namespace are required and by default all created addresses use HTTPS scheme. // for example: -// name=ross namespace=andromeda resolves to https://ross.andromeda.svc +// name=ross namespace=andromeda resolves to https://ross.andromeda.svc:443 func (sr defaultServiceResolver) ResolveEndpoint(namespace, name string) (*url.URL, error) { if len(name) == 0 || len(namespace) == 0 { - return &url.URL{}, errors.New("cannot resolve an empty service name or namespace") + return nil, errors.New("cannot resolve an empty service name or namespace") } - - return url.Parse(fmt.Sprintf("https://%s.%s.svc", name, namespace)) + return &url.URL{Scheme: "https", Host: fmt.Sprintf("%s.%s.svc:443", name, namespace)}, nil } diff --git a/plugin/pkg/admission/webhook/serviceresolver_test.go b/plugin/pkg/admission/webhook/serviceresolver_test.go index 3fb2f7a53c5..bf50af520a5 100644 --- a/plugin/pkg/admission/webhook/serviceresolver_test.go +++ b/plugin/pkg/admission/webhook/serviceresolver_test.go @@ -30,7 +30,7 @@ func TestDefaultServiceResolver(t *testing.T) { expectError bool }{ // scenario 1: a service name along with a namespace resolves - {serviceName: "ross", serviceNamespace: "andromeda", expectedOutput: "https://ross.andromeda.svc"}, + {serviceName: "ross", serviceNamespace: "andromeda", expectedOutput: "https://ross.andromeda.svc:443"}, // scenario 2: a service name without a namespace does not resolve {serviceName: "ross", expectError: true}, // scenario 3: cannot resolve an empty service name @@ -49,8 +49,10 @@ func TestDefaultServiceResolver(t *testing.T) { if err == nil && scenario.expectError { t.Error("expected an error but got nothing") } - if serviceURL.String() != scenario.expectedOutput { - t.Errorf("expected = %s, got = %s", scenario.expectedOutput, serviceURL.String()) + if !scenario.expectError { + if serviceURL.String() != scenario.expectedOutput { + t.Errorf("expected = %s, got = %s", scenario.expectedOutput, serviceURL.String()) + } } }) }