mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #7614 from jsok/7516-default-initial-cluster
embed: Delay setting initial cluster
This commit is contained in:
commit
9ca7f22e84
@ -203,6 +203,8 @@ func (cfg *configYAML) configFromFile(path string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defaultInitialCluster := cfg.InitialCluster
|
||||||
|
|
||||||
err = yaml.Unmarshal(b, cfg)
|
err = yaml.Unmarshal(b, cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -246,7 +248,8 @@ func (cfg *configYAML) configFromFile(path string) error {
|
|||||||
cfg.ACUrls = []url.URL(u)
|
cfg.ACUrls = []url.URL(u)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cfg.Durl != "" || cfg.DNSCluster != "") && cfg.InitialCluster == cfg.InitialClusterFromName(cfg.Name) {
|
// If a discovery flag is set, clear default initial cluster set by InitialClusterFromName
|
||||||
|
if (cfg.Durl != "" || cfg.DNSCluster != "") && cfg.InitialCluster == defaultInitialCluster {
|
||||||
cfg.InitialCluster = ""
|
cfg.InitialCluster = ""
|
||||||
}
|
}
|
||||||
if cfg.ClusterState == "" {
|
if cfg.ClusterState == "" {
|
||||||
|
@ -78,9 +78,7 @@ func TestConfigFileMemberFields(t *testing.T) {
|
|||||||
tmpfile := mustCreateCfgFile(t, b)
|
tmpfile := mustCreateCfgFile(t, b)
|
||||||
defer os.Remove(tmpfile.Name())
|
defer os.Remove(tmpfile.Name())
|
||||||
|
|
||||||
args := []string{
|
args := []string{fmt.Sprintf("--config-file=%s", tmpfile.Name())}
|
||||||
fmt.Sprintf("--config-file=%s", tmpfile.Name()),
|
|
||||||
}
|
|
||||||
|
|
||||||
cfg := newConfig()
|
cfg := newConfig()
|
||||||
if err = cfg.parse(args); err != nil {
|
if err = cfg.parse(args); err != nil {
|
||||||
@ -133,9 +131,7 @@ func TestConfigFileClusteringFields(t *testing.T) {
|
|||||||
tmpfile := mustCreateCfgFile(t, b)
|
tmpfile := mustCreateCfgFile(t, b)
|
||||||
defer os.Remove(tmpfile.Name())
|
defer os.Remove(tmpfile.Name())
|
||||||
|
|
||||||
args := []string{
|
args := []string{fmt.Sprintf("--config-file=%s", tmpfile.Name())}
|
||||||
fmt.Sprintf("--config-file=%s", tmpfile.Name()),
|
|
||||||
}
|
|
||||||
cfg := newConfig()
|
cfg := newConfig()
|
||||||
err = cfg.parse(args)
|
err = cfg.parse(args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -145,6 +141,60 @@ func TestConfigFileClusteringFields(t *testing.T) {
|
|||||||
validateClusteringFlags(t, cfg)
|
validateClusteringFlags(t, cfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestConfigFileClusteringFlags(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
InitialCluster string `json:"initial-cluster"`
|
||||||
|
DNSCluster string `json:"discovery-srv"`
|
||||||
|
Durl string `json:"discovery"`
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
// Use default name and generate a default inital-cluster
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "non-default",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
InitialCluster: "0=localhost:8000",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "non-default",
|
||||||
|
InitialCluster: "0=localhost:8000",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
DNSCluster: "example.com",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "non-default",
|
||||||
|
DNSCluster: "example.com",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Durl: "http://example.com/abc",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "non-default",
|
||||||
|
Durl: "http://example.com/abc",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, tt := range tests {
|
||||||
|
b, err := yaml.Marshal(&tt)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
tmpfile := mustCreateCfgFile(t, b)
|
||||||
|
defer os.Remove(tmpfile.Name())
|
||||||
|
|
||||||
|
args := []string{fmt.Sprintf("--config-file=%s", tmpfile.Name())}
|
||||||
|
|
||||||
|
cfg := newConfig()
|
||||||
|
if err := cfg.parse(args); err != nil {
|
||||||
|
t.Errorf("%d: err = %v", i, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestConfigParsingOtherFlags(t *testing.T) {
|
func TestConfigParsingOtherFlags(t *testing.T) {
|
||||||
args := []string{"-proxy=readonly"}
|
args := []string{"-proxy=readonly"}
|
||||||
|
|
||||||
@ -172,9 +222,7 @@ func TestConfigFileOtherFields(t *testing.T) {
|
|||||||
tmpfile := mustCreateCfgFile(t, b)
|
tmpfile := mustCreateCfgFile(t, b)
|
||||||
defer os.Remove(tmpfile.Name())
|
defer os.Remove(tmpfile.Name())
|
||||||
|
|
||||||
args := []string{
|
args := []string{fmt.Sprintf("--config-file=%s", tmpfile.Name())}
|
||||||
fmt.Sprintf("--config-file=%s", tmpfile.Name()),
|
|
||||||
}
|
|
||||||
|
|
||||||
cfg := newConfig()
|
cfg := newConfig()
|
||||||
err = cfg.parse(args)
|
err = cfg.parse(args)
|
||||||
@ -248,9 +296,7 @@ func TestConfigFileConflictClusteringFlags(t *testing.T) {
|
|||||||
tmpfile := mustCreateCfgFile(t, b)
|
tmpfile := mustCreateCfgFile(t, b)
|
||||||
defer os.Remove(tmpfile.Name())
|
defer os.Remove(tmpfile.Name())
|
||||||
|
|
||||||
args := []string{
|
args := []string{fmt.Sprintf("--config-file=%s", tmpfile.Name())}
|
||||||
fmt.Sprintf("--config-file=%s", tmpfile.Name()),
|
|
||||||
}
|
|
||||||
|
|
||||||
cfg := newConfig()
|
cfg := newConfig()
|
||||||
if err := cfg.parse(args); err != embed.ErrConflictBootstrapFlags {
|
if err := cfg.parse(args); err != embed.ErrConflictBootstrapFlags {
|
||||||
@ -428,9 +474,7 @@ func TestConfigFileElectionTimeout(t *testing.T) {
|
|||||||
tmpfile := mustCreateCfgFile(t, b)
|
tmpfile := mustCreateCfgFile(t, b)
|
||||||
defer os.Remove(tmpfile.Name())
|
defer os.Remove(tmpfile.Name())
|
||||||
|
|
||||||
args := []string{
|
args := []string{fmt.Sprintf("--config-file=%s", tmpfile.Name())}
|
||||||
fmt.Sprintf("--config-file=%s", tmpfile.Name()),
|
|
||||||
}
|
|
||||||
|
|
||||||
cfg := newConfig()
|
cfg := newConfig()
|
||||||
if err := cfg.parse(args); err == nil || !strings.Contains(err.Error(), tt.errStr) {
|
if err := cfg.parse(args); err == nil || !strings.Contains(err.Error(), tt.errStr) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user