Merge branch 'master' of https://github.com/coreos/etcd into mod-lock

This commit is contained in:
Ben Johnson 2013-11-29 16:34:04 -07:00
commit 03571d3cda
3 changed files with 36 additions and 16 deletions

View File

@ -18,7 +18,7 @@ See [etcdctl][etcdctl] for a simple command line client.
Or feel free to just use curl, as in the examples below. Or feel free to just use curl, as in the examples below.
[raft]: https://github.com/coreos/go-raft [raft]: https://github.com/coreos/go-raft
[etcdctl]: http://coreos.com/docs/etcdctl/ [etcdctl]: http://github.com/coreos/etcdctl/
## Contact ## Contact

30
etcd.go
View File

@ -52,24 +52,18 @@ func main() {
profile(config.CPUProfileFile) profile(config.CPUProfileFile)
} }
// Load info object. // Only guess the machine name if there is no data dir specified
info, err := config.Info() // because the info file will should have our name
if err != nil { if config.Name == "" && config.DataDir == "" {
log.Fatal("info:", err) config.NameFromHostname()
} }
if info.Name == "" {
host, err := os.Hostname() if config.DataDir == "" && config.Name != "" {
if err != nil || host == "" { config.DataDirFromName()
log.Fatal("Node name required and hostname not set. e.g. '-name=name'")
}
log.Warnf("Using hostname %s as the node name. You must ensure this name is unique among etcd nodes.", host)
info.Name = host
} }
// Setup a default directory based on the node name
if config.DataDir == "" { if config.DataDir == "" {
config.DataDir = info.Name + ".etcd" log.Fatal("The data dir was not set and could not be guessed from machine name")
log.Warnf("Using the directory %s as the etcd configuration directory because a directory was not specified. ", config.DataDir)
} }
// Create data directory if it doesn't already exist. // Create data directory if it doesn't already exist.
@ -77,6 +71,12 @@ func main() {
log.Fatalf("Unable to create path: %s", err) log.Fatalf("Unable to create path: %s", err)
} }
// Load info object.
info, err := config.Info()
if err != nil {
log.Fatal("info:", err)
}
// Retrieve TLS configuration. // Retrieve TLS configuration.
tlsConfig, err := info.EtcdTLS.Config() tlsConfig, err := info.EtcdTLS.Config()
if err != nil { if err != nil {

View File

@ -13,6 +13,7 @@ import (
"strconv" "strconv"
"strings" "strings"
"github.com/coreos/etcd/log"
"github.com/BurntSushi/toml" "github.com/BurntSushi/toml"
) )
@ -300,6 +301,25 @@ func (c *Config) LoadPeersFile() error {
return nil return nil
} }
// DataDirFromName sets the data dir from a machine name and issue a warning
// that etcd is guessing.
func (c *Config) DataDirFromName() {
c.DataDir = c.Name + ".etcd"
log.Warnf("Using the directory %s as the etcd curation directory because a directory was not specified. ", c.DataDir)
return
}
// NameFromHostname sets the machine name from the hostname. This is to help
// people get started without thinking up a name.
func (c *Config) NameFromHostname() {
host, err := os.Hostname()
if err != nil && host == "" {
log.Fatal("Node name required and hostname not set. e.g. '-name=name'")
}
c.Name = host
}
// Reset removes all server configuration files. // Reset removes all server configuration files.
func (c *Config) Reset() error { func (c *Config) Reset() error {
if err := os.RemoveAll(filepath.Join(c.DataDir, "info")); err != nil { if err := os.RemoveAll(filepath.Join(c.DataDir, "info")); err != nil {