From e7839e8c574d05b05a510f18aef0c1f3a46b82c7 Mon Sep 17 00:00:00 2001 From: Brian Waldon Date: Tue, 3 Dec 2013 08:40:18 -0800 Subject: [PATCH] fix(etcd): Fix forced config reset When a server name or a data directory were not provided, the reset functionality would fail to clear out config files from the appropriate place. This calcualtes the default server name and data directory before reset is called. --- etcd.go | 10 ---------- server/config.go | 20 +++++++++++++++----- server/config_test.go | 18 ++++++++++++++++++ 3 files changed, 33 insertions(+), 15 deletions(-) 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) {