From 1ec0fb2e3d9754a3b9705079946ec4e3718a1f12 Mon Sep 17 00:00:00 2001 From: CJ Cullen Date: Mon, 4 May 2015 15:45:33 -0700 Subject: [PATCH] Make changes suggested in #7675 --- cluster/addons/dns/kube2sky/kube2sky.go | 24 +++++++++++------------- cluster/addons/dns/skydns-rc.yaml.in | 2 +- pkg/tools/etcd_helper.go | 2 +- pkg/tools/etcd_helper_test.go | 6 ++++-- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/cluster/addons/dns/kube2sky/kube2sky.go b/cluster/addons/dns/kube2sky/kube2sky.go index fb9152754c..e19dca87f4 100644 --- a/cluster/addons/dns/kube2sky/kube2sky.go +++ b/cluster/addons/dns/kube2sky/kube2sky.go @@ -34,6 +34,7 @@ import ( kfields "github.com/GoogleCloudPlatform/kubernetes/pkg/fields" klabels "github.com/GoogleCloudPlatform/kubernetes/pkg/labels" tools "github.com/GoogleCloudPlatform/kubernetes/pkg/tools" + "github.com/GoogleCloudPlatform/kubernetes/pkg/util/wait" kwatch "github.com/GoogleCloudPlatform/kubernetes/pkg/watch" etcd "github.com/coreos/go-etcd/etcd" skymsg "github.com/skynetservices/skydns/msg" @@ -121,24 +122,21 @@ func newEtcdClient() (client *etcd.Client) { } } // loop until we have > 0 machines && machines[0] != "" - timeout := false - go func() { - <-time.After(10 * time.Second) - timeout = true - }() - for !timeout { - client = etcd.NewClient([]string{*etcd_server}) - if client == nil { - return nil + poll, timeout := 1*time.Second, 10*time.Second + if err := wait.Poll(poll, timeout, func() (bool, error) { + if client = etcd.NewClient([]string{*etcd_server}); client == nil { + log.Fatal("etcd.NewClient returned nil") } client.SyncCluster() machines := client.GetCluster() - if len(machines) > 0 && len(machines[0]) > 0 { - return client + if len(machines) == 0 || len(machines[0]) == 0 { + return false, nil } + return true, nil + }); err != nil { + log.Fatalf("Timed out after %s waiting for at least 1 synchronized etcd server in the cluster", timeout) } - log.Fatal("Timed out waiting for correct response from etcd server") - return nil + return client } // TODO: evaluate using pkg/client/clientcmd diff --git a/cluster/addons/dns/skydns-rc.yaml.in b/cluster/addons/dns/skydns-rc.yaml.in index 1d024a34e1..468c379e27 100644 --- a/cluster/addons/dns/skydns-rc.yaml.in +++ b/cluster/addons/dns/skydns-rc.yaml.in @@ -31,7 +31,7 @@ desiredState: "-initial-cluster-token=skydns-etcd", ] - name: kube2sky - image: gcr.io/google_containers/kube2sky:1.3 + image: gcr.io/google_containers/kube2sky:1.4 volumeMounts: - name: dns-token mountPath: /etc/dns_token diff --git a/pkg/tools/etcd_helper.go b/pkg/tools/etcd_helper.go index dd540a78ea..88a6be4597 100644 --- a/pkg/tools/etcd_helper.go +++ b/pkg/tools/etcd_helper.go @@ -517,7 +517,7 @@ func GetEtcdVersion(host string) (string, error) { } defer response.Body.Close() if response.StatusCode != http.StatusOK { - return "", fmt.Errorf("Unsuccessful response from server: %v", err) + return "", fmt.Errorf("unsuccessful response from etcd server %q: %v", host, err) } versionBytes, err := ioutil.ReadAll(response.Body) if err != nil { diff --git a/pkg/tools/etcd_helper_test.go b/pkg/tools/etcd_helper_test.go index ff0ece9e42..89400d4061 100644 --- a/pkg/tools/etcd_helper_test.go +++ b/pkg/tools/etcd_helper_test.go @@ -35,6 +35,8 @@ import ( "github.com/stretchr/testify/assert" ) +const validEtcdVersion = "etcd 2.0.9" + type TestResource struct { api.TypeMeta `json:",inline"` api.ObjectMeta `json:"metadata"` @@ -685,7 +687,7 @@ func TestGuaranteedUpdate_CreateCollision(t *testing.T) { func TestGetEtcdVersion_ValidVersion(t *testing.T) { testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - fmt.Fprint(w, "etcd 2.0.9") + fmt.Fprint(w, validEtcdVersion) })) defer testServer.Close() @@ -694,7 +696,7 @@ func TestGetEtcdVersion_ValidVersion(t *testing.T) { if version, err = GetEtcdVersion(testServer.URL); err != nil { t.Errorf("Unexpected error: %v", err) } - assert.Equal(t, "etcd 2.0.9", version, "Unexpected version") + assert.Equal(t, validEtcdVersion, version, "Unexpected version") assert.Nil(t, err) }