|
@@ -15,6 +15,7 @@
|
|
|
package clientv3
|
|
package clientv3
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
|
+ "errors"
|
|
|
"net"
|
|
"net"
|
|
|
"net/url"
|
|
"net/url"
|
|
|
"sync"
|
|
"sync"
|
|
@@ -27,6 +28,10 @@ import (
|
|
|
"github.com/coreos/etcd/pkg/transport"
|
|
"github.com/coreos/etcd/pkg/transport"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+var (
|
|
|
|
|
+ ErrNoAvailableEndpoints = errors.New("etcdclient: no available endpoints")
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
// Client provides and manages an etcd v3 client session.
|
|
// Client provides and manages an etcd v3 client session.
|
|
|
type Client struct {
|
|
type Client struct {
|
|
|
// KV is the keyvalue API for the client's connection.
|
|
// KV is the keyvalue API for the client's connection.
|
|
@@ -67,6 +72,10 @@ func New(cfg Config) (*Client, error) {
|
|
|
if cfg.RetryDialer == nil {
|
|
if cfg.RetryDialer == nil {
|
|
|
cfg.RetryDialer = dialEndpointList
|
|
cfg.RetryDialer = dialEndpointList
|
|
|
}
|
|
}
|
|
|
|
|
+ if len(cfg.Endpoints) == 0 {
|
|
|
|
|
+ return nil, ErrNoAvailableEndpoints
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
return newClient(&cfg)
|
|
return newClient(&cfg)
|
|
|
}
|
|
}
|
|
|
|
|
|