From 049ba9f8ed9894de9905ba3acc47532195709186 Mon Sep 17 00:00:00 2001 From: Aravinda VK Date: Thu, 24 May 2018 14:49:36 +0530 Subject: [PATCH] config: removed default configuration file To view the default values run `glusterd2 --help` Signed-off-by: Aravinda VK --- .gitignore | 2 - Makefile | 27 +++++------- extras/make/paths.mk | 1 + glusterd2/config.go | 80 ++++++++++++---------------------- scripts/build.sh | 4 ++ scripts/gen-gd2conf.sh | 16 ------- scripts/prepare_path_config.sh | 13 ------ 7 files changed, 44 insertions(+), 99 deletions(-) delete mode 100755 scripts/prepare_path_config.sh diff --git a/.gitignore b/.gitignore index 911d8b86..c5e6301d 100644 --- a/.gitignore +++ b/.gitignore @@ -23,5 +23,3 @@ endpoints.json generate-doc # Ignore vi backup files *~ -# Generated by Make -glusterd2/paths_config.go diff --git a/Makefile b/Makefile index ef7612e7..ef8b9d54 100644 --- a/Makefile +++ b/Makefile @@ -24,13 +24,14 @@ GD2CONF_INSTALL = $(DESTDIR)$(SYSCONFDIR)/$(GD2)/$(GD2_CONF) GD2STATEDIR = $(LOCALSTATEDIR)/$(GD2) GD2LOGDIR = $(LOGDIR)/$(GD2) +GD2RUNDIR = $(RUNDIR)/$(GD2) DEPENV ?= PLUGINS ?= yes FASTBUILD ?= yes -.PHONY: all build check check-go check-reqs install vendor-update vendor-install verify release check-protoc $(GD2_BIN) $(GD2_BUILD) $(CLI_BIN) $(CLI_BUILD) cli $(GD2_CONF) gd2conf test dist dist-vendor functest generated +.PHONY: all build check check-go check-reqs install vendor-update vendor-install verify release check-protoc $(GD2_BIN) $(GD2_BUILD) $(CLI_BIN) $(CLI_BUILD) cli $(GD2_CONF) gd2conf test dist dist-vendor functest all: build @@ -49,17 +50,9 @@ check-reqs: @./scripts/check-reqs.sh @echo -generated: - @echo "Generating sources..." - @PREFIX=$(PREFIX) BASE_PREFIX=$(BASE_PREFIX) EXEC_PREFIX=$(EXEC_PREFIX) \ - BINDIR=$(BINDIR) SBINDIR=$(SBINDIR) DATADIR=$(DATADIR) \ - LOCALSTATEDIR=$(LOCALSTATEDIR) LOGDIR=$(LOGDIR) \ - SYSCONFDIR=$(SYSCONFDIR) ./scripts/prepare_path_config.sh glusterd2 - - -$(GD2_BIN): $(GD2_BUILD) gd2conf generated -$(GD2_BUILD): generated - @PLUGINS=$(PLUGINS) FASTBUILD=$(FASTBUILD) ./scripts/build.sh glusterd2 +$(GD2_BIN): $(GD2_BUILD) gd2conf +$(GD2_BUILD): + @PLUGINS=$(PLUGINS) FASTBUILD=$(FASTBUILD) BASE_PREFIX=$(BASE_PREFIX) ./scripts/build.sh glusterd2 @echo $(CLI_BIN) cli: $(CLI_BUILD) @@ -69,9 +62,9 @@ $(CLI_BUILD): @./$(CLI_BASH_COMPLETION_GEN_BIN) $(CLI_BASH_COMPLETION_BUILD) @echo -$(GD2_CONF) gd2conf: $(GD2CONF_BUILD) -$(GD2CONF_BUILD): - @GD2STATEDIR=$(GD2STATEDIR) GD2LOGDIR=$(GD2LOGDIR) $(GD2CONF_BUILDSCRIPT) +$(GD2_CONF) gd2conf: + @GD2=$(GD2) GD2STATEDIR=$(GD2STATEDIR) GD2LOGDIR=$(GD2LOGDIR) \ + GD2RUNDIR=$(GD2RUNDIR) $(GD2CONF_BUILDSCRIPT) install: install -D $(GD2_BUILD) $(GD2_INSTALL) @@ -90,10 +83,10 @@ vendor-install: @$(DEPENV) dep ensure @echo -test: check-reqs generated +test: check-reqs @./test.sh $(TESTOPTIONS) -functest: check-reqs generated +functest: check-reqs @go test ./e2e -v -functest release: build diff --git a/extras/make/paths.mk b/extras/make/paths.mk index 07db1dc8..b8fa060c 100644 --- a/extras/make/paths.mk +++ b/extras/make/paths.mk @@ -21,3 +21,4 @@ LOCALSTATEDIR ?= $(BASE_PREFIX)/var/lib LOGDIR ?= $(BASE_PREFIX)/var/log SYSCONFDIR ?= $(BASE_PREFIX)/etc +RUNDIR ?= $(BASE_PREFIX)/var/run diff --git a/glusterd2/config.go b/glusterd2/config.go index 95d3d715..fa4402f9 100644 --- a/glusterd2/config.go +++ b/glusterd2/config.go @@ -7,7 +7,6 @@ import ( "net" "os" "path" - "path/filepath" "github.com/gluster/glusterd2/glusterd2/gdctx" "github.com/gluster/glusterd2/glusterd2/store" @@ -18,39 +17,49 @@ import ( config "github.com/spf13/viper" ) +const ( + defaultlogfile = "STDOUT" + defaultpeerport = "24008" + defaultpeeraddress = ":24008" + defaultclientaddress = ":24007" + defaultloglevel = "debug" +) + var ( // metrics expConfig = expvar.NewMap("config") -) -const ( - defaultLogLevel = "debug" - defaultConfName = "glusterd2" + // defaultPathPrefix is set by LDFLAGS + defaultPathPrefix = "" + + defaultlocalstatedir = defaultPathPrefix + "/var/lib/glusterd2" + defaultlogdir = defaultPathPrefix + "/var/log/glusterd2" + defaultrundir = defaultPathPrefix + "/var/run/glusterd2" ) // parseFlags sets up the flags and parses them, this needs to be called before any other operation func parseFlags() { flag.String("workdir", "", "Working directory for GlusterD. (default: current directory)") - flag.String("localstatedir", "", "Directory to store local state information. (default: workdir)") - flag.String("rundir", "", "Directory to store runtime data.") - flag.String("config", "", "Configuration file for GlusterD. By default looks for glusterd2.toml in [/usr/local]/etc/glusterd2 and current working directory.") + flag.String("localstatedir", defaultlocalstatedir, "Directory to store local state information.") + flag.String("rundir", defaultrundir, "Directory to store runtime data.") + flag.String("config", "", "Configuration file for GlusterD.") - flag.String(logging.DirFlag, "", logging.DirHelp+" (default: workdir/log)") - flag.String(logging.FileFlag, "STDOUT", logging.FileHelp) - flag.String(logging.LevelFlag, defaultLogLevel, logging.LevelHelp) + flag.String(logging.DirFlag, defaultlogdir, logging.DirHelp) + flag.String(logging.FileFlag, defaultlogfile, logging.FileHelp) + flag.String(logging.LevelFlag, defaultloglevel, logging.LevelHelp) // TODO: Change default to false (disabled) in future. flag.Bool("statedump", true, "Enable /statedump endpoint for metrics.") - flag.String("clientaddress", "", "Address to bind the REST service.") - flag.String("peeraddress", "", "Address to bind the inter glusterd2 RPC service.") + flag.String("clientaddress", defaultclientaddress, "Address to bind the REST service.") + flag.String("peeraddress", defaultpeeraddress, "Address to bind the inter glusterd2 RPC service.") // TODO: SSL/TLS is currently only implemented for REST interface flag.String("cert-file", "", "Certificate used for SSL/TLS connections from clients to glusterd2.") flag.String("key-file", "", "Private key for the SSL/TLS certificate.") // PID file - flag.String("pidfile", "", "PID file path(default: rundir/gluster/glusterd2.pid)") + flag.String("pidfile", "", "PID file path. (default \"rundir/glusterd2.pid)\"") store.InitFlags() @@ -65,22 +74,12 @@ func setDefaults() error { return err } - wd := config.GetString("workdir") - if wd == "" { + if config.GetString("workdir") == "" { config.SetDefault("workdir", cwd) - wd = cwd - } - - if config.GetString("localstatedir") == "" { - config.SetDefault("localstatedir", wd) } config.SetDefault("hooksdir", config.GetString("localstatedir")+"/hooks") - if config.GetString(logging.DirFlag) == "" { - config.SetDefault(logging.DirFlag, path.Join(config.GetString("localstatedir"), "log")) - } - if config.GetString("pidfile") == "" { config.SetDefault("pidfile", path.Join(config.GetString("rundir"), "glusterd2.pid")) } @@ -94,7 +93,7 @@ func setDefaults() error { host = gdctx.HostIP } if port == "" { - port = config.GetString("defaultpeerport") + port = defaultpeerport } config.Set("peeraddress", host+":"+port) @@ -111,7 +110,10 @@ func (v valueType) String() string { } func dumpConfigToLog() { - log.WithField("file", config.ConfigFileUsed()).Info("loaded configuration from file") + if config.ConfigFileUsed() != "" { + log.WithField("file", config.ConfigFileUsed()).Info("loaded configuration from file") + } + l := log.NewEntry(log.StandardLogger()) for k, v := range config.AllSettings() { @@ -129,30 +131,6 @@ func initConfig(confFile string) error { // Limit config to toml only to avoid confusion with multiple config types config.SetConfigType("toml") - config.SetConfigName(defaultConfName) - - // Set default config dir and path if default config file exists - // Chances of not having default config file is only during development - // Add current directory to this path if default conf file exists - confdir := defaultConfDir - conffile := defaultConfDir + "/" + defaultConfName + ".toml" - if _, err := os.Stat(defaultConfDir + "/" + defaultConfName + ".toml"); os.IsNotExist(err) { - cdir, err := filepath.Abs(filepath.Dir(os.Args[0])) - if err != nil { - return err - } - confdir = cdir - conffile = cdir + "/" + defaultConfName + ".toml" - log.Info("default config file not found, loading config file from current directory") - } - - config.AddConfigPath(confdir) - if err := config.MergeInConfig(); err != nil { - log.WithError(err). - WithField("file", conffile). - Error("failed to read default config file") - return err - } // If custom configuration is passed if confFile != "" { diff --git a/scripts/build.sh b/scripts/build.sh index 204b3e61..7895e417 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -34,6 +34,10 @@ GIT_SHA_FULL=${GIT_SHA_FULL:-$(git rev-parse HEAD || echo "undefined")} LDFLAGS="-X ${REPO_PATH}/version.GlusterdVersion=${VERSION} -X ${REPO_PATH}/version.GitSHA=${GIT_SHA}" LDFLAGS+=" -B 0x${GIT_SHA_FULL}" +if [ "$BIN" == "glusterd2" ]; then + LDFLAGS+=" -X main.defaultPathPrefix=${BASE_PREFIX}" +fi + GOBUILD_TAGS="" if [ "$PLUGINS" == "yes" ]; then GOBUILD_TAGS+="plugins " diff --git a/scripts/gen-gd2conf.sh b/scripts/gen-gd2conf.sh index 96f9c25d..7092d884 100755 --- a/scripts/gen-gd2conf.sh +++ b/scripts/gen-gd2conf.sh @@ -1,21 +1,5 @@ #!/bin/bash -PREFIX=${PREFIX:-/usr/local} -BASE_PREFIX=$PREFIX -if [ "$PREFIX" = "/usr" ]; then - BASE_PREFIX="" -fi - -DATADIR=${DATADIR:-$PREFIX/share} -LOCALSTATEDIR=${LOCALSTATEDIR:-$PREFIX/var/lib} -LOGDIR=${LOGDIR:-$BASE_PREFIX/var/log} -RUNDIR=${RUNDIR:-$BASE_PREFIX/var/run} - -GD2="glusterd2" -GD2STATEDIR=${GD2STATEDIR:-$LOCALSTATEDIR/$GD2} -GD2LOGDIR=${GD2LOGDIR:-$LOGDIR/$GD2} -GD2RUNDIR=${GD2RUNDIR:-$RUNDIR/$GD2} - OUTDIR=${1:-build} mkdir -p "$OUTDIR" diff --git a/scripts/prepare_path_config.sh b/scripts/prepare_path_config.sh deleted file mode 100755 index d3a9c133..00000000 --- a/scripts/prepare_path_config.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# Create glusterd2/paths_config.go -glusterd2dir=$1 - -OUTPUT=${glusterd2dir}/paths_config.go - - -cat >"$OUTPUT" <