From 4796120f704bccbe534701c63d42d8136a4c3056 Mon Sep 17 00:00:00 2001 From: Dawn Chen Date: Mon, 22 Sep 2014 22:20:48 -0700 Subject: [PATCH 1/2] Debugging to fix e2e testing issue --- hack/e2e-suite/update.sh | 2 +- pkg/cloudprovider/gce/gce.go | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/hack/e2e-suite/update.sh b/hack/e2e-suite/update.sh index 8fa0cf1255e..72148dc7956 100755 --- a/hack/e2e-suite/update.sh +++ b/hack/e2e-suite/update.sh @@ -19,7 +19,7 @@ set -o errexit set -o nounset set -o pipefail -set -x +set -e source "${KUBE_REPO_ROOT}/cluster/kube-env.sh" source "${KUBE_REPO_ROOT}/cluster/$KUBERNETES_PROVIDER/util.sh" diff --git a/pkg/cloudprovider/gce/gce.go b/pkg/cloudprovider/gce/gce.go index 3c503e47c58..5984a71f994 100644 --- a/pkg/cloudprovider/gce/gce.go +++ b/pkg/cloudprovider/gce/gce.go @@ -30,6 +30,7 @@ import ( "code.google.com/p/goauth2/compute/serviceaccount" compute "code.google.com/p/google-api-go-client/compute/v1" "github.com/GoogleCloudPlatform/kubernetes/pkg/cloudprovider" + "github.com/golang/glog" ) // GCECloud is an implementation of Interface, TCPLoadBalancer and Instances for Google Compute Engine. @@ -191,10 +192,18 @@ func (gce *GCECloud) DeleteTCPLoadBalancer(name, region string) error { // IPAddress is an implementation of Instances.IPAddress. func (gce *GCECloud) IPAddress(instance string) (net.IP, error) { - res, err := gce.service.Instances.Get(gce.projectID, gce.zone, instance).Do() + suffix, err := fqdnSuffix() if err != nil { return nil, err } + if len(suffix) > 0 { + suffix = "." + suffix + } + res, err := gce.service.Instances.Get(gce.projectID, gce.zone, strings.Replace(instance, suffix, "", 1)).Do() + if err != nil { + glog.Errorf("Failed to retrieve TargetInstance resource for instance:%s", instance) + return nil, err + } ip := net.ParseIP(res.NetworkInterfaces[0].AccessConfigs[0].NatIP) if ip == nil { return nil, fmt.Errorf("Invalid network IP: %s", res.NetworkInterfaces[0].AccessConfigs[0].NatIP) From bdfd5045f36c5e0753483c44b6f9b1a00fd7e75f Mon Sep 17 00:00:00 2001 From: Dawn Chen Date: Wed, 24 Sep 2014 09:41:30 -0700 Subject: [PATCH 2/2] Refactory a little bit. --- hack/e2e-suite/update.sh | 2 +- pkg/cloudprovider/gce/gce.go | 26 ++++++++++++++------------ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/hack/e2e-suite/update.sh b/hack/e2e-suite/update.sh index 72148dc7956..8fa0cf1255e 100755 --- a/hack/e2e-suite/update.sh +++ b/hack/e2e-suite/update.sh @@ -19,7 +19,7 @@ set -o errexit set -o nounset set -o pipefail -set -e +set -x source "${KUBE_REPO_ROOT}/cluster/kube-env.sh" source "${KUBE_REPO_ROOT}/cluster/$KUBERNETES_PROVIDER/util.sh" diff --git a/pkg/cloudprovider/gce/gce.go b/pkg/cloudprovider/gce/gce.go index 5984a71f994..3fb12720afa 100644 --- a/pkg/cloudprovider/gce/gce.go +++ b/pkg/cloudprovider/gce/gce.go @@ -106,10 +106,7 @@ func (gce *GCECloud) Zones() (cloudprovider.Zones, bool) { } func makeHostLink(projectID, zone, host string) string { - ix := strings.Index(host, ".") - if ix != -1 { - host = host[:ix] - } + host = canonicalizeInstanceName(host) return fmt.Sprintf("https://www.googleapis.com/compute/v1/projects/%s/zones/%s/instances/%s", projectID, zone, host) } @@ -190,16 +187,21 @@ func (gce *GCECloud) DeleteTCPLoadBalancer(name, region string) error { return err } +// Take a GCE instance 'hostname' and break it down to something that can be fed +// to the GCE API client library. Basically this means reducing 'kubernetes- +// minion-2.c.my-proj.internal' to 'kubernetes-minion-2' if necessary. +func canonicalizeInstanceName(name string) string { + ix := strings.Index(name, ".") + if ix != -1 { + name = name[:ix] + } + return name +} + // IPAddress is an implementation of Instances.IPAddress. func (gce *GCECloud) IPAddress(instance string) (net.IP, error) { - suffix, err := fqdnSuffix() - if err != nil { - return nil, err - } - if len(suffix) > 0 { - suffix = "." + suffix - } - res, err := gce.service.Instances.Get(gce.projectID, gce.zone, strings.Replace(instance, suffix, "", 1)).Do() + instance = canonicalizeInstanceName(instance) + res, err := gce.service.Instances.Get(gce.projectID, gce.zone, instance).Do() if err != nil { glog.Errorf("Failed to retrieve TargetInstance resource for instance:%s", instance) return nil, err