package with import ( "time" "git.apinb.com/bsm-sdk/core/conf" "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/vars" "go.etcd.io/etcd/client/pkg/v3/transport" clientv3 "go.etcd.io/etcd/client/v3" ) func Etcd(cfg *conf.EtcdConf) (cli *clientv3.Client) { if cfg == nil || len(cfg.Endpoints) == 0 { return } etcdCfg := clientv3.Config{ Endpoints: cfg.Endpoints, DialTimeout: 5 * time.Second, } if cfg.Passwd != nil { etcdCfg.Username = cfg.Passwd.Account etcdCfg.Password = cfg.Passwd.Password } if cfg.TLS != nil { tlsInfo := transport.TLSInfo{ TrustedCAFile: cfg.TLS.CaFile, CertFile: cfg.TLS.CertFile, KeyFile: cfg.TLS.KeyFile, } tlsConfig, err := tlsInfo.ClientConfig() if err != nil { printer.Error(errcode.ErrEtcd.Error()) panic(err) } etcdCfg.TLS = tlsConfig } var err error cli, err = clientv3.New(etcdCfg) if err != nil { printer.Error(errcode.ErrEtcd.Error()) panic(err) } // print inform. printer.Info("[BSM - %s] Service Center: %v", vars.ServiceKey, cfg.Endpoints) return }