From 802a0eb3fe115cd213d1238912fe431601e8f102 Mon Sep 17 00:00:00 2001 From: stlpmo Date: Mon, 11 Nov 2019 09:15:17 +0800 Subject: [PATCH] move from cmd-line to scaffold --- weed/command/master.go | 7 +------ weed/command/scaffold.go | 7 +++++++ weed/server/master_server.go | 22 ++++++++++++++-------- weed/util/config.go | 10 ++++++++++ 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/weed/command/master.go b/weed/command/master.go index 55e3409ed..d4c2b9b16 100644 --- a/weed/command/master.go +++ b/weed/command/master.go @@ -37,9 +37,6 @@ type MasterOptions struct { disableHttp *bool metricsAddress *string metricsIntervalSec *int - - sequencerType *string - etcdUrls *string } func init() { @@ -58,9 +55,6 @@ func init() { m.disableHttp = cmdMaster.Flag.Bool("disableHttp", false, "disable http requests, only gRPC operations are allowed.") m.metricsAddress = cmdMaster.Flag.String("metrics.address", "", "Prometheus gateway address") m.metricsIntervalSec = cmdMaster.Flag.Int("metrics.intervalSeconds", 15, "Prometheus push interval in seconds") - m.sequencerType = cmdMaster.Flag.String("sequencerType", "memory", "Choose [memory|etcd] type for store the file sequence") - m.etcdUrls = cmdMaster.Flag.String("etcdUrls", "", - "when sequencerType=etcd, set etcdUrls for etcd cluster that store file sequence, example : http://127.0.0.1:2379,http://127.0.0.1:2389") } var cmdMaster = &Command{ @@ -84,6 +78,7 @@ func runMaster(cmd *Command, args []string) bool { util.LoadConfiguration("security", false) util.LoadConfiguration("master", false) + glog.V(0).Infof("%v", viper.GetViper().GetString("master.maintenance.scripts")) runtime.GOMAXPROCS(runtime.NumCPU()) util.SetupProfiling(*masterCpuProfile, *masterMemProfile) diff --git a/weed/command/scaffold.go b/weed/command/scaffold.go index 7a988cdcf..9b266a69d 100644 --- a/weed/command/scaffold.go +++ b/weed/command/scaffold.go @@ -346,5 +346,12 @@ scripts = """ """ sleep_minutes = 17 # sleep minutes between each script execution +sequencer.type = memory # Choose [memory|etcd] type for storing the file id sequence + +# when sequencer.type = etcd, set listen client urls of etcd cluster that store file id sequence +# example : http://127.0.0.1:2379,http://127.0.0.1:2389 +sequencer.etcd.urls = http://127.0.0.1:2379 + + ` ) diff --git a/weed/server/master_server.go b/weed/server/master_server.go index fd3236c53..41764c2e7 100644 --- a/weed/server/master_server.go +++ b/weed/server/master_server.go @@ -27,6 +27,12 @@ import ( "google.golang.org/grpc" ) +const ( + MasterPrefix = "master.maintenance." + SequencerType = MasterPrefix + "sequencer_type" + SequencerEtcdUrls = MasterPrefix + "sequencer_etcd_urls" +) + type MasterOption struct { Port int MetaFolder string @@ -39,9 +45,6 @@ type MasterOption struct { DisableHttp bool MetricsAddress string MetricsIntervalSec int - - sequencerType string - etcdUrls string } type MasterServer struct { @@ -172,8 +175,8 @@ func (ms *MasterServer) proxyToLeader(f func(w http.ResponseWriter, r *http.Requ proxy.Transport = util.Transport proxy.ServeHTTP(w, r) } else { - //drop it to the floor - //writeJsonError(w, r, errors.New(ms.Topo.RaftServer.Name()+" does not know Leader yet:"+ms.Topo.RaftServer.Leader())) + // drop it to the floor + // writeJsonError(w, r, errors.New(ms.Topo.RaftServer.Name()+" does not know Leader yet:"+ms.Topo.RaftServer.Leader())) } } } @@ -240,13 +243,16 @@ func (ms *MasterServer) startAdminScripts() { func (ms *MasterServer) createSequencer(option *MasterOption) sequence.Sequencer { var seq sequence.Sequencer - glog.V(0).Infof("sequencer type [%s]", option.sequencerType) - switch strings.ToLower(option.sequencerType) { + seqType := strings.ToLower(util.Config().GetString(SequencerType)) + glog.V(0).Infof("sequencer type [%s]", seqType) + switch strings.ToLower(seqType) { case "memory": seq = sequence.NewMemorySequencer() case "etcd": var err error - seq, err = sequence.NewEtcdSequencer(option.etcdUrls, option.MetaFolder) + urls := util.Config().GetString(SequencerEtcdUrls) + glog.V(4).Infof("ETCD urls : %s", urls) + seq, err = sequence.NewEtcdSequencer(urls, option.MetaFolder) if err != nil { glog.Error(err) seq = nil diff --git a/weed/util/config.go b/weed/util/config.go index 1ea833d1f..f51955263 100644 --- a/weed/util/config.go +++ b/weed/util/config.go @@ -40,5 +40,15 @@ func LoadConfiguration(configFileName string, required bool) (loaded bool) { } return true +} +func Config() Configuration { + return viper.GetViper() } + +func SubConfig(subKey string) Configuration { + if subKey != "" { + return viper.GetViper().Sub(subKey) + } + return viper.GetViper() +} \ No newline at end of file