diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index a5e6c7eb7..45e4940ae 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -812,119 +812,119 @@ }, { "ImportPath": "k8s.io/api/admission/v1beta1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/admissionregistration/v1alpha1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/admissionregistration/v1beta1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/apps/v1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/apps/v1beta1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/apps/v1beta2", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/authentication/v1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/authentication/v1beta1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/authorization/v1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/authorization/v1beta1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/autoscaling/v1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/autoscaling/v2beta1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/batch/v1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/batch/v1beta1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/batch/v2alpha1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/certificates/v1beta1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/core/v1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/events/v1beta1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/extensions/v1beta1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/networking/v1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/policy/v1beta1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/rbac/v1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/rbac/v1alpha1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/rbac/v1beta1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/scheduling/v1alpha1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/settings/v1alpha1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/storage/v1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/storage/v1alpha1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/api/storage/v1beta1", - "Rev": "847e24b2c0e587a6a097d187ebd72e1ca24de001" + "Rev": "0951d1bc89842eabb47e3a3605c5d7f72871f49e" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/equality", diff --git a/pkg/storage/etcd3/preflight/checks.go b/pkg/storage/etcd3/preflight/checks.go index 899a6fa89..9c12c2090 100644 --- a/pkg/storage/etcd3/preflight/checks.go +++ b/pkg/storage/etcd3/preflight/checks.go @@ -18,6 +18,7 @@ package preflight import ( "fmt" + "math/rand" "net" "net/url" "time" @@ -25,12 +26,6 @@ import ( const connectionTimeout = 1 * time.Second -type connection interface { - serverReachable(address string) bool - parseServerList(serverList []string) error - CheckEtcdServers() (bool, error) -} - // EtcdConnection holds the Etcd server list type EtcdConnection struct { ServerList []string @@ -59,9 +54,11 @@ func parseServerURI(serverURI string) (*url.URL, error) { // CheckEtcdServers will attempt to reach all etcd servers once. If any // can be reached, return true. func (con EtcdConnection) CheckEtcdServers() (done bool, err error) { - // Attempt to reach every Etcd server in order - for _, serverURI := range con.ServerList { - host, err := parseServerURI(serverURI) + // Attempt to reach every Etcd server randomly. + serverNumber := len(con.ServerList) + serverPerms := rand.Perm(serverNumber) + for _, index := range serverPerms { + host, err := parseServerURI(con.ServerList[index]) if err != nil { return false, err }