embed/config.go
func (cfg *Config) Validate() error {
	if err := cfg.setupLogging(); err != nil {
		return err
	}
	if err := checkBindURLs(cfg.LPUrls); err != nil {
		return err
	}
	if err := checkBindURLs(cfg.LCUrls); err != nil {
		return err
	}
	if err := checkBindURLs(cfg.ListenMetricsUrls); err != nil {
		return err
	}
	if err := checkHostURLs(cfg.APUrls); err != nil {
		addrs := cfg.getAPURLs()
		return fmt.Errorf(`--initial-advertise-peer-urls %q must be "host:port" (%v)`, strings.Join(addrs, ","), err)
	}
	if err := checkHostURLs(cfg.ACUrls); err != nil {
		addrs := cfg.getACURLs()
		return fmt.Errorf(`--advertise-client-urls %q must be "host:port" (%v)`, strings.Join(addrs, ","), err)
	}
	// Check if conflicting flags are passed.
	nSet := 0
	for _, v := range []bool{cfg.Durl != "", cfg.InitialCluster != "", cfg.DNSCluster != ""} {
		if v {
			nSet++
		}
	}

	if cfg.ClusterState != ClusterStateFlagNew && cfg.ClusterState != ClusterStateFlagExisting {
		return fmt.Errorf("unexpected clusterState %q", cfg.ClusterState)
	}

	if nSet > 1 {
		return ErrConflictBootstrapFlags
	}

	if cfg.TickMs <= 0 {
		return fmt.Errorf("--heartbeat-interval must be >0 (set to %dms)", cfg.TickMs)
	}
	if cfg.ElectionMs <= 0 {
		return fmt.Errorf("--election-timeout must be >0 (set to %dms)", cfg.ElectionMs)
	}
	if 5*cfg.TickMs > cfg.ElectionMs {
		return fmt.Errorf("--election-timeout[%vms] should be at least as 5 times as --heartbeat-interval[%vms]", cfg.ElectionMs, cfg.TickMs)
	}
	if cfg.ElectionMs > maxElectionMs {
		return fmt.Errorf("--election-timeout[%vms] is too long, and should be set less than %vms", cfg.ElectionMs, maxElectionMs)
	}

	// check this last since proxying in etcdmain may make this OK
	if cfg.LCUrls != nil && cfg.ACUrls == nil {
		return ErrUnsetAdvertiseClientURLsFlag
	}

	switch cfg.AutoCompactionMode {
	case "":
	case CompactorModeRevision, CompactorModePeriodic:
	default:
		return fmt.Errorf("unknown auto-compaction-mode %q", cfg.AutoCompactionMode)
	}

	return nil
}
func (cfg *Config) Validate() error {
	if err := cfg.setupLogging(); err != nil {
		return err
	}
	if err := checkBindURLs(cfg.LPUrls); err != nil {
		return err
	}
	if err := checkBindURLs(cfg.LCUrls); err != nil {
		return err
	}
	if err := checkBindURLs(cfg.ListenMetricsUrls); err != nil {
		return err
	}
	if err := checkHostURLs(cfg.APUrls); err != nil {
		addrs := cfg.getAPURLs()
		return fmt.Errorf(`--initial-advertise-peer-urls %q must be "host:port" (%v)`, strings.Join(addrs, ","), err)
	}
	if err := checkHostURLs(cfg.ACUrls); err != nil {
		addrs := cfg.getACURLs()
		return fmt.Errorf(`--advertise-client-urls %q must be "host:port" (%v)`, strings.Join(addrs, ","), err)
	}
	// Check if conflicting flags are passed.
	nSet := 0
	for _, v := range []bool{cfg.Durl != "", cfg.InitialCluster != "", cfg.DNSCluster != ""} {
		if v {
			nSet++
		}
	}

	if cfg.ClusterState != ClusterStateFlagNew && cfg.ClusterState != ClusterStateFlagExisting {
		return fmt.Errorf("unexpected clusterState %q", cfg.ClusterState)
	}

	if nSet > 1 {
		return ErrConflictBootstrapFlags
	}

	if cfg.TickMs <= 0 {
		return fmt.Errorf("--heartbeat-interval must be >0 (set to %dms)", cfg.TickMs)
	}
	if cfg.ElectionMs <= 0 {
		return fmt.Errorf("--election-timeout must be >0 (set to %dms)", cfg.ElectionMs)
	}
	if 5*cfg.TickMs > cfg.ElectionMs {
		return fmt.Errorf("--election-timeout[%vms] should be at least as 5 times as --heartbeat-interval[%vms]", cfg.ElectionMs, cfg.TickMs)
	}
	if cfg.ElectionMs > maxElectionMs {
		return fmt.Errorf("--election-timeout[%vms] is too long, and should be set less than %vms", cfg.ElectionMs, maxElectionMs)
	}

	// check this last since proxying in etcdmain may make this OK
	if cfg.LCUrls != nil && cfg.ACUrls == nil {
		return ErrUnsetAdvertiseClientURLsFlag
	}

	switch cfg.AutoCompactionMode {
	case "":
	case CompactorModeRevision, CompactorModePeriodic:
	default:
		return fmt.Errorf("unknown auto-compaction-mode %q", cfg.AutoCompactionMode)
	}

	return nil
}
func ( cfg * Config ) Validate ( ) error { if err := cfg . setupLogging ( ) ; err != nil { return err } if err := checkBindURLs ( cfg . LPUrls ) ; err != nil { return err } if err := checkBindURLs ( cfg . LCUrls ) ; err != nil { return err } if err := checkBindURLs ( cfg . ListenMetricsUrls ) ; err != nil { return err } if err := checkHostURLs ( cfg . APUrls ) ; err != nil { addrs := cfg . getAPURLs ( ) return fmt . Errorf ( `--initial-advertise-peer-urls %q must be "host:port" (%v)` , strings . Join ( addrs , " " ) , err ) } if err := checkHostURLs ( cfg . ACUrls ) ; err != nil { addrs := cfg . getACURLs ( ) return fmt . Errorf ( `--advertise-client-urls %q must be "host:port" (%v)` , strings . Join ( addrs , " " ) , err ) } // Check if conflicting flags are passed. nSet := 0 for _ , v := range [ ] bool { cfg . Durl != " " , cfg . InitialCluster != " " , cfg . DNSCluster != " " } { if v { nSet ++ } } if cfg . ClusterState != ClusterStateFlagNew && cfg . ClusterState != ClusterStateFlagExisting { return fmt . Errorf ( " " , cfg . ClusterState ) } if nSet > 1 { return ErrConflictBootstrapFlags } if cfg . TickMs <= 0 { return fmt . Errorf ( " " , cfg . TickMs ) } if cfg . ElectionMs <= 0 { return fmt . Errorf ( " " , cfg . ElectionMs ) } if 5 * cfg . TickMs > cfg . ElectionMs { return fmt . Errorf ( " " , cfg . ElectionMs , cfg . TickMs ) } if cfg . ElectionMs > maxElectionMs { return fmt . Errorf ( " " , cfg . ElectionMs , maxElectionMs ) } // check this last since proxying in etcdmain may make this OK if cfg . LCUrls != nil && cfg . ACUrls == nil { return ErrUnsetAdvertiseClientURLsFlag } switch cfg . AutoCompactionMode { case " " : case CompactorModeRevision , CompactorModePeriodic : default : return fmt . Errorf ( " " , cfg . AutoCompactionMode ) } return nil }
// Validate ensures that '*embed.Config' fields are properly configured.
Validate ensures that * embed . Config fields are properly configured .