From 294affdfd2270e4479c9861890cd33d69920dd37 Mon Sep 17 00:00:00 2001 From: Lvbo163 Date: Thu, 2 Aug 2018 09:03:25 +0800 Subject: [PATCH] support setting consul from config file Issue-ID: MSB-244 Change-Id: I255a737bafd26245f3c484fcbead84b8f8e8b2d6 Signed-off-by: Lvbo163 --- msb2pilot/src/msb2pilot/consul/controller.go | 44 +++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/msb2pilot/src/msb2pilot/consul/controller.go b/msb2pilot/src/msb2pilot/consul/controller.go index 3ea34ec..ca57bd2 100644 --- a/msb2pilot/src/msb2pilot/consul/controller.go +++ b/msb2pilot/src/msb2pilot/consul/controller.go @@ -13,15 +13,28 @@ package consul import ( "msb2pilot/log" + "msb2pilot/util" + "path/filepath" "github.com/hashicorp/consul/api" ) var client *api.Client +var consulAddress string + +var ( + cfgFilePath = filepath.Join(util.GetCfgPath(), "consul.yml") +) + +const ( + defaultAddress = "http://localhost:8500" +) func init() { + consulAddress = getConsulAddress(cfgFilePath) + conf := api.DefaultConfig() - conf.Address = "http://localhost:8500" + conf.Address = consulAddress var err error client, err = api.NewClient(conf) @@ -29,3 +42,32 @@ func init() { log.Log.Error("failed to init consul client", err) } } + +func getConsulAddress(path string) string { + cfg, err := loadCfgInfo(path) + if err != nil { + log.Log.Error("load consul config info error", err) + return defaultAddress + } else { + if addr, exist := cfg["address"]; exist { + return addr.(string) + } else { + return defaultAddress + } + } +} + +func loadCfgInfo(path string) (map[interface{}]interface{}, error) { + log.Log.Informational("consul config path is:" + path) + cfg, err := util.Read(path) + if err != nil { + return nil, err + } + + result := make(map[interface{}]interface{}) + err = util.UnmarshalYaml(cfg, result) + if err != nil { + return nil, err + } + return result, nil +} -- 2.16.6