code: func (c *Client) WaitForClusterAvailable(retries int, retryInterval time.Duration) (bool, error) {
  	for i := 0; i < retries; i++ {
  		if i > 0 {
  			klog.V(1).Infof("[etcd] Waiting %v until next retry\n", retryInterval)
  			time.Sleep(retryInterval)
  		}
  		klog.V(2).Infof("[etcd] attempting to see if all cluster endpoints (%s) are available %d/%d", c.Endpoints, i+1, retries)
  		resp, err := c.ClusterAvailable()
  		if err != nil {
  			switch err {
  			case context.DeadlineExceeded:
  				klog.V(1).Infof("[etcd] Attempt timed out")
  			default:
  				klog.V(1).Infof("[etcd] Attempt failed with error: %v\n", err)
  			}
  			continue
  		}
  		return resp, nil
  	}
  	return false, errors.New("timeout waiting for etcd cluster to be available")
  }
docs: // WaitForClusterAvailable returns true if all endpoints in the cluster are available after retry attempts, an error is returned otherwise