support setting consul from config file 25/58525/1
authorLvbo163 <lv.bo163@zte.com.cn>
Thu, 2 Aug 2018 01:03:25 +0000 (09:03 +0800)
committerLvbo163 <lv.bo163@zte.com.cn>
Thu, 2 Aug 2018 01:03:25 +0000 (09:03 +0800)
Issue-ID: MSB-244

Change-Id: I255a737bafd26245f3c484fcbead84b8f8e8b2d6
Signed-off-by: Lvbo163 <lv.bo163@zte.com.cn>
msb2pilot/src/msb2pilot/consul/controller.go

index 3ea34ec..ca57bd2 100644 (file)
@@ -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
+}