func NewConsulClient(config *consulAPI.Config) (KVClient, error) { var ( c *consulAPI.Client err error ) if config != nil { c, err = consulAPI.NewClient(config) } else { c, err = consulAPI.NewClient(consulAPI.DefaultConfig()) } if err != nil { return nil, err } maxRetries := 30 i := 0 for { leader, err := c.Status().Leader() if err != nil || leader == "" { log.Info("Waiting for consul client to be ready...") time.Sleep(2 * time.Second) i++ if i > maxRetries { e := fmt.Errorf("Unable to contact consul: %s", err) log.Error(e) return nil, e } } else { log.Info("Consul client ready") break } } return &ConsulClient{c}, nil }