diff --git a/etcd.go b/etcd.go index b72880d0f..0567c65df 100644 --- a/etcd.go +++ b/etcd.go @@ -52,16 +52,6 @@ func main() { profile(config.CPUProfileFile) } - // Only guess the machine name if there is no data dir specified - // because the info file will should have our name - if config.Name == "" && config.DataDir == "" { - config.NameFromHostname() - } - - if config.DataDir == "" && config.Name != "" { - config.DataDirFromName() - } - if config.DataDir == "" { log.Fatal("The data dir was not set and could not be guessed from machine name") } diff --git a/server/config.go b/server/config.go index 939a2580d..d09893820 100644 --- a/server/config.go +++ b/server/config.go @@ -131,6 +131,11 @@ func (c *Config) Load(arguments []string) error { return fmt.Errorf("sanitize: %v", err) } + // Force remove server configuration if specified. + if c.Force { + c.Reset() + } + return nil } @@ -278,11 +283,6 @@ func (c *Config) LoadFlags(arguments []string) error { c.CorsOrigins = trimsplit(cors, ",") } - // Force remove server configuration if specified. - if c.Force { - c.Reset() - } - return nil } @@ -404,6 +404,16 @@ func (c *Config) Sanitize() error { return fmt.Errorf("Peer Listen Host: %s", err) } + // Only guess the machine name if there is no data dir specified + // because the info file should have our name + if c.Name == "" && c.DataDir == "" { + c.NameFromHostname() + } + + if c.DataDir == "" && c.Name != "" { + c.DataDirFromName() + } + return nil } diff --git a/server/config_test.go b/server/config_test.go index f991c9765..5571773cc 100644 --- a/server/config_test.go +++ b/server/config_test.go @@ -313,6 +313,24 @@ func TestConfigNameFlag(t *testing.T) { assert.Equal(t, c.Name, "test-name", "") } +// Ensures that a Name gets guessed if not specified +func TestConfigNameGuess(t *testing.T) { + c := NewConfig() + assert.Nil(t, c.LoadFlags([]string{}), "") + assert.Nil(t, c.Sanitize()) + name, _ := os.Hostname() + assert.Equal(t, c.Name, name, "") +} + +// Ensures that a DataDir gets guessed if not specified +func TestConfigDataDirGuess(t *testing.T) { + c := NewConfig() + assert.Nil(t, c.LoadFlags([]string{}), "") + assert.Nil(t, c.Sanitize()) + name, _ := os.Hostname() + assert.Equal(t, c.DataDir, name+".etcd", "") +} + // Ensures that Snapshot can be parsed from the environment. func TestConfigSnapshotEnv(t *testing.T) { withEnv("ETCD_SNAPSHOT", "1", func(c *Config) {