Create reusable ResolveEndpoint function (#543)

This commit is contained in:
Martin Gencur 2019-07-25 18:59:36 +02:00 committed by Knative Prow Robot
parent 86f49e59e0
commit fe4877abb6
1 changed files with 22 additions and 12 deletions

View File

@ -27,7 +27,7 @@ import (
"github.com/pkg/errors"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/kubernetes"
ingress "knative.dev/pkg/test/ingress"
"knative.dev/pkg/test/ingress"
"knative.dev/pkg/test/logging"
"knative.dev/pkg/test/zipkin"
@ -101,6 +101,23 @@ func New(kubeClientset *kubernetes.Clientset, logf logging.FormatLogger, domain
logf: logf,
}
var err error
if sc.endpoint, err = ResolveEndpoint(kubeClientset, domain, resolvable, endpointOverride); err != nil {
return nil, err
}
if !resolvable {
sc.domain = domain
}
return &sc, nil
}
// ResolveEndpoint resolves the endpoint address considering whether the domain is resolvable and taking into
// account whether the user overrode the endpoint address externally
func ResolveEndpoint(kubeClientset *kubernetes.Clientset, domain string, resolvable bool, endpointOverride string) (string, error) {
// If the domain is resolvable, we can use it directly when we make requests.
endpoint := domain
if !resolvable {
e := &endpointOverride
if endpointOverride == "" {
@ -108,20 +125,13 @@ func New(kubeClientset *kubernetes.Clientset, logf logging.FormatLogger, domain
// If the domain that the Route controller is configured to assign to Route.Status.Domain
// (the domainSuffix) is not resolvable, we need to retrieve the endpoint and spoof
// the Host in our requests.
e, err = ingress.GetIngressEndpoint(kubeClientset)
if err != nil {
return nil, err
if e, err = ingress.GetIngressEndpoint(kubeClientset); err != nil {
return "", err
}
}
sc.endpoint = *e
sc.domain = domain
} else {
// If the domain is resolvable, we can use it directly when we make requests.
sc.endpoint = domain
endpoint = *e
}
return &sc, nil
return endpoint, nil
}
// Do dispatches to the underlying http.Client.Do, spoofing domains as needed