embed/config.go
func (cfg *Config) PeerURLsMapAndToken(which string) (urlsmap types.URLsMap, token string, err error) {
	token = cfg.InitialClusterToken
	switch {
	case cfg.Durl != "":
		urlsmap = types.URLsMap{}
		// If using discovery, generate a temporary cluster based on
		// self's advertised peer URLs
		urlsmap[cfg.Name] = cfg.APUrls
		token = cfg.Durl

	case cfg.DNSCluster != "":
		clusterStrs, cerr := cfg.GetDNSClusterNames()
		lg := cfg.logger
		if cerr != nil {
			if lg != nil {
				lg.Warn("failed to resolve during SRV discovery", zap.Error(cerr))
			} else {
				plog.Errorf("couldn't resolve during SRV discovery (%v)", cerr)
			}
			return nil, "", cerr
		}
		for _, s := range clusterStrs {
			if lg != nil {
				lg.Info("got bootstrap from DNS for etcd-server", zap.String("node", s))
			} else {
				plog.Noticef("got bootstrap from DNS for etcd-server at %s", s)
			}
		}
		clusterStr := strings.Join(clusterStrs, ",")
		if strings.Contains(clusterStr, "https://") && cfg.PeerTLSInfo.TrustedCAFile == "" {
			cfg.PeerTLSInfo.ServerName = cfg.DNSCluster
		}
		urlsmap, err = types.NewURLsMap(clusterStr)
		// only etcd member must belong to the discovered cluster.
		// proxy does not need to belong to the discovered cluster.
		if which == "etcd" {
			if _, ok := urlsmap[cfg.Name]; !ok {
				return nil, "", fmt.Errorf("cannot find local etcd member %q in SRV records", cfg.Name)
			}
		}

	default:
		// We're statically configured, and cluster has appropriately been set.
		urlsmap, err = types.NewURLsMap(cfg.InitialCluster)
	}
	return urlsmap, token, err
}
func (cfg *Config) PeerURLsMapAndToken(which string) (urlsmap types.URLsMap, token string, err error) {
	token = cfg.InitialClusterToken
	switch {
	case cfg.Durl != "":
		urlsmap = types.URLsMap{}
		// If using discovery, generate a temporary cluster based on
		// self's advertised peer URLs
		urlsmap[cfg.Name] = cfg.APUrls
		token = cfg.Durl

	case cfg.DNSCluster != "":
		clusterStrs, cerr := cfg.GetDNSClusterNames()
		lg := cfg.logger
		if cerr != nil {
			if lg != nil {
				lg.Warn("failed to resolve during SRV discovery", zap.Error(cerr))
			} else {
				plog.Errorf("couldn't resolve during SRV discovery (%v)", cerr)
			}
			return nil, "", cerr
		}
		for _, s := range clusterStrs {
			if lg != nil {
				lg.Info("got bootstrap from DNS for etcd-server", zap.String("node", s))
			} else {
				plog.Noticef("got bootstrap from DNS for etcd-server at %s", s)
			}
		}
		clusterStr := strings.Join(clusterStrs, ",")
		if strings.Contains(clusterStr, "https://") && cfg.PeerTLSInfo.TrustedCAFile == "" {
			cfg.PeerTLSInfo.ServerName = cfg.DNSCluster
		}
		urlsmap, err = types.NewURLsMap(clusterStr)
		// only etcd member must belong to the discovered cluster.
		// proxy does not need to belong to the discovered cluster.
		if which == "etcd" {
			if _, ok := urlsmap[cfg.Name]; !ok {
				return nil, "", fmt.Errorf("cannot find local etcd member %q in SRV records", cfg.Name)
			}
		}

	default:
		// We're statically configured, and cluster has appropriately been set.
		urlsmap, err = types.NewURLsMap(cfg.InitialCluster)
	}
	return urlsmap, token, err
}
func ( cfg * Config ) PeerURLsMapAndToken ( which string ) ( urlsmap types . URLsMap , token string , err error ) { token = cfg . InitialClusterToken switch { case cfg . Durl != " " : urlsmap = types . URLsMap { } // If using discovery, generate a temporary cluster based on // self's advertised peer URLs urlsmap [ cfg . Name ] = cfg . APUrls token = cfg . Durl case cfg . DNSCluster != " " : clusterStrs , cerr := cfg . GetDNSClusterNames ( ) lg := cfg . logger if cerr != nil { if lg != nil { lg . Warn ( " " , zap . Error ( cerr ) ) } else { plog . Errorf ( " " , cerr ) } return nil , " " , cerr } for _ , s := range clusterStrs { if lg != nil { lg . Info ( " " , zap . String ( " " , s ) ) } else { plog . Noticef ( " " , s ) } } clusterStr := strings . Join ( clusterStrs , " " ) if strings . Contains ( clusterStr , " " ) && cfg . PeerTLSInfo . TrustedCAFile == " " { cfg . PeerTLSInfo . ServerName = cfg . DNSCluster } urlsmap , err = types . NewURLsMap ( clusterStr ) // only etcd member must belong to the discovered cluster. // proxy does not need to belong to the discovered cluster. if which == " " { if _ , ok := urlsmap [ cfg . Name ] ; ! ok { return nil , " " , fmt . Errorf ( " " , cfg . Name ) } } default : // We're statically configured, and cluster has appropriately been set. urlsmap , err = types . NewURLsMap ( cfg . InitialCluster ) } return urlsmap , token , err }
// PeerURLsMapAndToken sets up an initial peer URLsMap and cluster token for bootstrap or discovery.
PeerURLsMapAndToken sets up an initial peer URLsMap and cluster token for bootstrap or discovery .