From 63645d248c765244488cd34dbc1bb6528ca6b7c7 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期二, 05 九月 2023 09:58:13 +0800
Subject: [PATCH] 修复编译

---
 system-service/controllers/test.go |  706 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 353 insertions(+), 353 deletions(-)

diff --git a/system-service/controllers/test.go b/system-service/controllers/test.go
index 1689de6..a9ce2ae 100644
--- a/system-service/controllers/test.go
+++ b/system-service/controllers/test.go
@@ -1,353 +1,353 @@
-package controllers
-
-import (
-	"basic.com/pubsub/esutil.git"
-	"basic.com/valib/bhomeclient.git"
-	"bytes"
-	"encoding/json"
-	"fmt"
-	"io/ioutil"
-	"net/http"
-	"strings"
-	"time"
-	"vamicro/config"
-	"vamicro/system-service/sys"
-	"vamicro/system-service/util"
-)
-
-type TestControllers struct{}
-
-type NodeInfo struct {
-	BinPath    string   `json:"binPath"`
-	ConfigPath string   `json:"configPath"`
-	IndexPath  string   `json:"indexPath"`
-	ScriptPath string   `json:"scriptPath"`
-	Ip         string   `json:"ip"`
-	Port       string   `json:"port"`
-	Peers      []string `json:"peers"`
-}
-
-//鍒涘缓闆嗙兢锛堝垵鍒涜妭鐐癸紝鍒濆鑺傜偣锛屼竴涓泦缇よ鍔熻兘鍙彲杩愯涓�娆★級
-func (tc *TestControllers) CreateOriginalClusterT(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
-	verIp, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
-	verPort := "9200"
-	var ni NodeInfo
-	c.BindJSON(&ni)
-	configPath := ni.ConfigPath
-	binPath := ni.BinPath
-	fmt.Println("configPath: ", configPath)
-	fmt.Println("binPath: ", binPath)
-	fmt.Println("verIp: ", verIp)
-	fmt.Println("verPort: ", verPort)
-	sp := esutil.StopServer(binPath, "0.0.0.0", verPort)
-	fmt.Println("sp: ", sp)
-	if sp == true {
-		return &bhomeclient.Reply{Msg: "binPath璺緞閿欒"}
-	}
-	_, errC := esutil.VerifyCreated(configPath)
-	if errC != nil {
-		fmt.Println("errC: ", errC)
-		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errC)}
-	}
-	_, errI := esutil.InitYml(configPath)
-	if errI != nil {
-		fmt.Println("errI: ", errI)
-		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errI)}
-	}
-	_, errR := esutil.UpdateNodeRole(configPath, "master")
-	if errR != nil {
-		fmt.Println("errR: ", errR)
-		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errR)}
-	}
-	_, errS := esutil.SetDiscoveryZenPingUnicastHosts(configPath, []string{verIp})
-	if errS != nil {
-		fmt.Println("errS: ", errS)
-		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errS)}
-	}
-	st := esutil.StartServer(binPath, verIp, verPort)
-	if st == false {
-		fmt.Println("st: ", st)
-		return &bhomeclient.Reply{Msg: "binPath璺緞閿欒"}
-	}
-	fmt.Println("resultfff: ")
-	result := esutil.VerifyNodeServer("0.0.0.0", "9200", 20)
-	fmt.Println("resultsss: ", result)
-	if result == false {
-		fmt.Println("result: ", result)
-		return &bhomeclient.Reply{Msg: "鏈嶅姟鍚姩瓒呮椂"}
-	}
-	fmt.Println("resulteee: ", result)
-	rIndexInit := esutil.InitIndex(ni.IndexPath)
-	if rIndexInit == false {
-		fmt.Println("绱㈠紩鍒濆鍖栧け璐�")
-		return &bhomeclient.Reply{Msg: "绱㈠紩鍒濆鍖栧け璐�"}
-	}
-	return &bhomeclient.Reply{Success: true, Msg: "鎼炲畾锛侊紒锛侊紒锛侊紒锛�"}
-}
-
-//鍔犲叆闆嗙兢锛堣鑺傜偣灏嗘牴鎹绠楀緱鍑鸿嚜宸遍渶瑕佹壆婕旂殑瑙掕壊锛�
-func (tc *TestControllers) AddClusterT(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
-	var ni NodeInfo
-	c.BindJSON(&ni)
-	binPath := ni.BinPath
-	configPath := ni.ConfigPath
-	ip := ni.Ip
-	port := ni.Port
-	verIp, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
-	verPort := "9200"
-	localIp := verIp
-	localPort := verPort
-	sp := esutil.StopServer(binPath, "0.0.0.0", "9200")
-	if sp == true {
-		fmt.Println("sp: ", sp)
-		return &bhomeclient.Reply{Msg: "binPath璺緞閿欒"}
-	}
-	LocalRole := "slave"
-	_, errC := esutil.VerifyCreated(configPath)
-	if errC != nil {
-		fmt.Println("errC: ", errC)
-		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errC)}
-	}
-	NodesInfo, errG := esutil.GetClusterInfo(ip, port)
-	if errG != nil {
-		fmt.Println("errG: ", errG)
-		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errG)}
-	}
-	TotalAllNodes := len(NodesInfo)
-	if TotalAllNodes < 1 {
-		fmt.Println("鐩爣闆嗙兢涓嶅瓨鍦�")
-		return &bhomeclient.Reply{Msg: "鐩爣闆嗙兢涓嶅瓨鍦�"}
-	}
-	TotalMasterNodes := 0
-	hosts := make([]string, 0)
-	allHosts := make([]string, 0)
-	for _, mp := range NodesInfo {
-		if mp.NodeRole == "master" {
-			TotalMasterNodes = TotalMasterNodes + 1
-			hosts = append(hosts, mp.NodeIp)
-		}
-		allHosts = append(allHosts, mp.NodeIp)
-	}
-	if TotalAllNodes/5 > TotalMasterNodes {
-		LocalRole = "master"
-		hosts = append(hosts, localIp)
-	}
-	_, errNR := esutil.UpdateNodeRole(configPath, LocalRole)
-	if errNR != nil {
-		fmt.Println("errNR: ", errNR)
-		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errNR)}
-	}
-	for _, mpk := range allHosts {
-		url := "http://" + mpk + ":8888/data/api-v/es/node/synchronizeHosts"
-		body := `{
-			"binPath":"` + binPath + `",
-    		"configPath":"` + configPath + `",
-    		"hosts":["` + strings.Join(hosts, ",") + `"]
-		}`
-		_, err := HttpRCT("POST", url, []byte(body))
-		if err != nil {
-			fmt.Println("err: ", err)
-			return &bhomeclient.Reply{Msg: mpk + "鑺傜偣鍚屾澶辫触"}
-		}
-	}
-	_, errS := esutil.SetDiscoveryZenPingUnicastHosts(configPath, hosts)
-	if errS != nil {
-		fmt.Println("errS: ", errS)
-		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errS)}
-	}
-	st := esutil.StartServer(binPath, localIp, localPort)
-	if st == false {
-		fmt.Println("st: ", st)
-		return &bhomeclient.Reply{Msg: "鏈嶅姟鍚姩瓒呮椂"}
-	}
-	return &bhomeclient.Reply{Success: true, Msg: "鎼炲畾锛侊紒锛侊紒锛侊紒锛�"}
-}
-
-//閫�鍑洪泦缇わ紙浠庡綋鍓嶉泦缇ら��鍑猴級
-func (tc *TestControllers) ExitClusterT(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
-	var ni NodeInfo
-	c.BindJSON(&ni)
-	configPath := ni.ConfigPath
-	binPath := ni.BinPath
-	verIp, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
-	verPort := "9200"
-	localIp := verIp
-	localPort := verPort
-	hosts, errH := esutil.GetDiscoveryZenPingUnicastHosts(configPath)
-	if errH != nil {
-		fmt.Println("errH: ", errH)
-		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errH)}
-	}
-	for _, p := range hosts {
-		if p == localIp {
-			fmt.Println("涓昏妭鐐逛笉鍏佽閫�鍑洪泦缇�")
-			return &bhomeclient.Reply{Msg: "涓昏妭鐐逛笉鍏佽閫�鍑洪泦缇�"}
-		}
-	}
-	_, errEN := esutil.ExcludeNode(localIp, localPort)
-	if errEN != nil {
-		fmt.Println("errEN: ", errEN)
-		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errEN)}
-	}
-	sp := esutil.StopServer(binPath, "0.0.0.0", "9200")
-	if sp == true {
-		fmt.Println("binPath璺緞閿欒")
-		return &bhomeclient.Reply{Msg: "binPath璺緞閿欒"}
-	}
-	_, errS := esutil.SetDiscoveryZenPingUnicastHosts(configPath, nil)
-	if errS != nil {
-		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errS)}
-	}
-	return &bhomeclient.Reply{Success: true, Msg: "鎼炲畾锛侊紒锛侊紒锛侊紒锛�"}
-}
-
-func HttpRCT(method string, url string, parama []byte) (buf []byte, err error) {
-	timeout := time.Duration(30 * time.Second)
-	client := http.Client{
-		Timeout: timeout,
-	}
-	request, err := http.NewRequest(method, url, bytes.NewBuffer(parama))
-	request.Header.Set("Content-type", "application/json")
-	request.Header.Add("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3ND"+
-		"UwMjU5MjMsInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW"+
-		"9uc1wiOltcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJjb2RlTWFuZ2U6dmlld1wiLFwiZGV2aWNlTWFuYWdlOmFkZFwiLFwiYW"+
-		"RtaW5NYW5hZ2VcIixcIm9yZGVyTWFuZ2VcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJwcm9kdWN0TWFuZ2U6YWRkXCIsXCJhZG"+
-		"1pbk1hbmFnZTp2aWV3XCIsXCJjb2RlTWFuZ2U6YWRkXCIsXCJwcm9kdWN0TWFuZ2U6b2ZmU2FsZVwiLFwib3JkZXJNYW5nZTpjYW"+
-		"5jZWxcIixcInByb2R1Y3RDZW50ZXI6ZG93bmxvYWRcIixcInByb2R1Y3RDZW50ZXI6YnV5XCIsXCJwcm9kdWN0TWFuZ2U6dmlld1"+
-		"wiLFwiYXBpXCIsXCJob21lXCIsXCJvcmRlck1hbmdlOnBheVwiLFwiYWRtaW5NYW5hZ2U6YWRkXCIsXCJvcmRlck1hbmdlOmRvd2"+
-		"5sb2FkXCIsXCJwcm9kdWN0Q2VudGVyXCIsXCJkZXZpY2VNYW5hZ2U6dW5iaW5kXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImFkbW"+
-		"luTWFuYWdlOmVkaXRcIixcImRldmljZU1hbmFnZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwidmlwTWFuYWdlOnZpZXdcIixcInByb2"+
-		"R1Y3RDZW50ZXI6dmlld1wiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcIm"+
-		"NvZGVNYW5nZVwiLFwicHJvZHVjdE1hbmdlXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.vwjAFkWuEyadRLvIOGK8LFE3Mj"+
-		"pY3SQ7j6AlTXnQDG8")
-
-	if err != nil {
-		fmt.Println("build request fail !")
-		return nil, err
-	}
-
-	resp, err := client.Do(request)
-	if err != nil {
-		fmt.Println("request error: ", err)
-		return nil, err
-	}
-
-	defer resp.Body.Close()
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		fmt.Println(err)
-		return nil, err
-	}
-	return body, nil
-}
-
-func (tc *TestControllers) CreateServer(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
-	var ni NodeInfo
-	c.BindJSON(&ni)
-	ip, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
-	scriptPath := ni.ScriptPath
-	peers := make([]string, 0)
-	peers = append(peers, ip+":6333")
-	_, err := util.VerifyServer(ip)
-	if err == nil {
-		sp := util.StopServer(scriptPath)
-		if sp == false {
-			return &bhomeclient.Reply{Msg: "stop scriptPath  璺緞閿欒锛�"}
-		}
-	}
-	sc := util.SetConfig(scriptPath, ip, peers, "000")
-	if sc == false {
-		return &bhomeclient.Reply{Msg: "set scriptPath  璺緞閿欒锛�"}
-	}
-	st := util.StartServer(scriptPath)
-	if st == false {
-		return &bhomeclient.Reply{Msg: "start scriptPath  璺緞閿欒锛�"}
-	}
-	time.Sleep(time.Second * 5)
-	_, errF := util.VerifyServer(ip)
-	if errF != nil {
-		time.Sleep(time.Second * 5)
-		_, errS := util.VerifyServer(ip)
-		if errS != nil {
-			return &bhomeclient.Reply{Msg: "鍚姩瓒呮椂"}
-		}
-	}
-	return &bhomeclient.Reply{Success: true, Msg: "鍒涘缓鎴愬姛锛�"}
-}
-
-func (tc *TestControllers) AddServer(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
-	var ni NodeInfo
-	c.BindJSON(&ni)
-	ip := ni.Ip
-	localIp, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
-	url := "http://" + ip + ":8888/data/api-v/swfs/getSWFSPeers"
-	body := `{"scriptPath":"` + ni.ScriptPath + `"}`
-	buf, err := HttpRCT("POST", url, []byte(body))
-	if err != nil {
-		return &bhomeclient.Reply{Msg: "鑾峰彇peers鍒楄〃澶辫触"}
-	}
-	var info interface{}
-	json.Unmarshal(buf, &info)
-	peers := info.(map[string]interface{})["data"].([]interface{})
-	if len(peers) < 1 {
-		return &bhomeclient.Reply{Msg: "鎸囧畾ip涓嶅瓨鍦ㄩ泦缇�!"}
-	}
-	for _, pc := range peers {
-		if strings.Contains(pc.(string), localIp) == true {
-			return &bhomeclient.Reply{Msg: "璇ヨ妭鐐瑰凡缁忓湪鐩爣闆嗙兢"}
-		}
-	}
-	peers = append(peers, localIp+":6333")
-	for _, pick := range peers {
-		mIp := strings.Split(pick.(string), ":")[0]
-		url := "http://" + mIp + ":8888/data/api-v/swfs/syncSWFSNode"
-		body := `{"scriptPath":"` + ni.ScriptPath + `",
-                   "peers":["` + strings.Replace(strings.Trim(fmt.Sprint(peers), "[]"), " ", "\",\"", -1) + `"]}`
-		_, err := HttpRCT("POST", url, []byte(body))
-		if err != nil {
-			return &bhomeclient.Reply{Msg: mIp + "鑺傜偣淇敼澶辫触"}
-		}
-	}
-	return &bhomeclient.Reply{Success: true, Msg: "鍔犲叆鎴愬姛锛侊紒锛�"}
-}
-
-func (tc *TestControllers) ExitServer(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
-	var ni NodeInfo
-	c.BindJSON(&ni)
-	scriptPath := ni.ScriptPath
-
-	localIp, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
-	configInfo, err := util.GetConfig(scriptPath)
-	if err != nil {
-		return &bhomeclient.Reply{Msg: "鑾峰彇peers鍒楄〃澶辫触"}
-	}
-	newPeers := make([]string, 0)
-	for _, p := range configInfo.Peers {
-		if strings.Split(p, ":")[0] == localIp {
-			continue
-		}
-		newPeers = append(newPeers, p)
-	}
-	for _, pick := range newPeers {
-		mIp := strings.Split(pick, ":")[0]
-		url := "http://" + mIp + ":8888/data/api-v/swfs/syncSWFSNode/"
-		body := `{"scriptPath":"` + ni.ConfigPath + `",
-                   "peers":["` + strings.Replace(strings.Trim(fmt.Sprint(newPeers), "[]"), " ", "\",\"", -1) + `"]}`
-		_, err := HttpRCT("POST", url, []byte(body))
-		if err != nil {
-			return &bhomeclient.Reply{Msg: mIp + "鑺傜偣淇敼澶辫触"}
-		}
-	}
-	sc := util.SetConfig(scriptPath, "", []string{}, "000")
-	if sc == false {
-		return &bhomeclient.Reply{Msg: "scriptPath  璺緞閿欒锛�"}
-	}
-	_, errVS := util.VerifyServer(localIp)
-	if errVS == nil {
-		sp := util.StopServer(scriptPath)
-		if sp == false {
-			return &bhomeclient.Reply{Msg: "stop scriptPath  璺緞閿欒锛�"}
-		}
-	}
-	return &bhomeclient.Reply{Success: true, Msg: "閫�鍑烘垚鍔燂紒锛侊紒"}
-}
+package controllers
+
+import (
+	"basic.com/pubsub/esutil.git"
+	"basic.com/valib/bhomeclient.git"
+	"bytes"
+	"encoding/json"
+	"fmt"
+	"io/ioutil"
+	"net/http"
+	"strings"
+	"time"
+	"vamicro/config"
+	"vamicro/system-service/sys"
+	"vamicro/system-service/util"
+)
+
+type TestControllers struct{}
+
+type NodeInfo struct {
+	BinPath    string   `json:"binPath"`
+	ConfigPath string   `json:"configPath"`
+	IndexPath  string   `json:"indexPath"`
+	ScriptPath string   `json:"scriptPath"`
+	Ip         string   `json:"ip"`
+	Port       string   `json:"port"`
+	Peers      []string `json:"peers"`
+}
+
+//鍒涘缓闆嗙兢锛堝垵鍒涜妭鐐癸紝鍒濆鑺傜偣锛屼竴涓泦缇よ鍔熻兘鍙彲杩愯涓�娆★級
+func (tc *TestControllers) CreateOriginalClusterT(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
+	verIp, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
+	verPort := "9200"
+	var ni NodeInfo
+	c.BindJSON(&ni)
+	configPath := ni.ConfigPath
+	binPath := ni.BinPath
+	fmt.Println("configPath: ", configPath)
+	fmt.Println("binPath: ", binPath)
+	fmt.Println("verIp: ", verIp)
+	fmt.Println("verPort: ", verPort)
+	sp := esutil.StopServer(binPath, "0.0.0.0", verPort)
+	fmt.Println("sp: ", sp)
+	if sp == true {
+		return &bhomeclient.Reply{Msg: "binPath璺緞閿欒"}
+	}
+	_, errC := esutil.VerifyCreated(configPath)
+	if errC != nil {
+		fmt.Println("errC: ", errC)
+		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errC)}
+	}
+	_, errI := esutil.InitYml(configPath)
+	if errI != nil {
+		fmt.Println("errI: ", errI)
+		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errI)}
+	}
+	_, errR := esutil.UpdateNodeRole(configPath, "master")
+	if errR != nil {
+		fmt.Println("errR: ", errR)
+		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errR)}
+	}
+	_, errS := esutil.SetDiscoveryZenPingUnicastHosts(configPath, []string{verIp})
+	if errS != nil {
+		fmt.Println("errS: ", errS)
+		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errS)}
+	}
+	st := esutil.StartServer(binPath, verIp, verPort)
+	if st == false {
+		fmt.Println("st: ", st)
+		return &bhomeclient.Reply{Msg: "binPath璺緞閿欒"}
+	}
+	fmt.Println("resultfff: ")
+	result := esutil.VerifyNodeServer("0.0.0.0", "9200", 20)
+	fmt.Println("resultsss: ", result)
+	if result == false {
+		fmt.Println("result: ", result)
+		return &bhomeclient.Reply{Msg: "鏈嶅姟鍚姩瓒呮椂"}
+	}
+	fmt.Println("resulteee: ", result)
+	rIndexInit := esutil.InitIndex(ni.IndexPath)
+	if rIndexInit == false {
+		fmt.Println("绱㈠紩鍒濆鍖栧け璐�")
+		return &bhomeclient.Reply{Msg: "绱㈠紩鍒濆鍖栧け璐�"}
+	}
+	return &bhomeclient.Reply{Success: true, Msg: "鎼炲畾锛侊紒锛侊紒锛侊紒锛�"}
+}
+
+//鍔犲叆闆嗙兢锛堣鑺傜偣灏嗘牴鎹绠楀緱鍑鸿嚜宸遍渶瑕佹壆婕旂殑瑙掕壊锛�
+func (tc *TestControllers) AddClusterT(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
+	var ni NodeInfo
+	c.BindJSON(&ni)
+	binPath := ni.BinPath
+	configPath := ni.ConfigPath
+	ip := ni.Ip
+	port := ni.Port
+	verIp, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
+	verPort := "9200"
+	localIp := verIp
+	localPort := verPort
+	sp := esutil.StopServer(binPath, "0.0.0.0", "9200")
+	if sp == true {
+		fmt.Println("sp: ", sp)
+		return &bhomeclient.Reply{Msg: "binPath璺緞閿欒"}
+	}
+	LocalRole := "slave"
+	_, errC := esutil.VerifyCreated(configPath)
+	if errC != nil {
+		fmt.Println("errC: ", errC)
+		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errC)}
+	}
+	NodesInfo, errG := esutil.GetClusterInfo(ip, port)
+	if errG != nil {
+		fmt.Println("errG: ", errG)
+		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errG)}
+	}
+	TotalAllNodes := len(NodesInfo)
+	if TotalAllNodes < 1 {
+		fmt.Println("鐩爣闆嗙兢涓嶅瓨鍦�")
+		return &bhomeclient.Reply{Msg: "鐩爣闆嗙兢涓嶅瓨鍦�"}
+	}
+	TotalMasterNodes := 0
+	hosts := make([]string, 0)
+	allHosts := make([]string, 0)
+	for _, mp := range NodesInfo {
+		if mp.NodeRole == "master" {
+			TotalMasterNodes = TotalMasterNodes + 1
+			hosts = append(hosts, mp.NodeIp)
+		}
+		allHosts = append(allHosts, mp.NodeIp)
+	}
+	if TotalAllNodes/5 > TotalMasterNodes {
+		LocalRole = "master"
+		hosts = append(hosts, localIp)
+	}
+	_, errNR := esutil.UpdateNodeRole(configPath, LocalRole)
+	if errNR != nil {
+		fmt.Println("errNR: ", errNR)
+		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errNR)}
+	}
+	for _, mpk := range allHosts {
+		url := "http://" + mpk + ":8888/data/api-v/es/node/synchronizeHosts"
+		body := `{
+			"binPath":"` + binPath + `",
+    		"configPath":"` + configPath + `",
+    		"hosts":["` + strings.Join(hosts, ",") + `"]
+		}`
+		_, err := HttpRCT("POST", url, []byte(body))
+		if err != nil {
+			fmt.Println("err: ", err)
+			return &bhomeclient.Reply{Msg: mpk + "鑺傜偣鍚屾澶辫触"}
+		}
+	}
+	_, errS := esutil.SetDiscoveryZenPingUnicastHosts(configPath, hosts)
+	if errS != nil {
+		fmt.Println("errS: ", errS)
+		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errS)}
+	}
+	st := esutil.StartServer(binPath, localIp, localPort)
+	if st == false {
+		fmt.Println("st: ", st)
+		return &bhomeclient.Reply{Msg: "鏈嶅姟鍚姩瓒呮椂"}
+	}
+	return &bhomeclient.Reply{Success: true, Msg: "鎼炲畾锛侊紒锛侊紒锛侊紒锛�"}
+}
+
+//閫�鍑洪泦缇わ紙浠庡綋鍓嶉泦缇ら��鍑猴級
+func (tc *TestControllers) ExitClusterT(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
+	var ni NodeInfo
+	c.BindJSON(&ni)
+	configPath := ni.ConfigPath
+	binPath := ni.BinPath
+	verIp, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
+	verPort := "9200"
+	localIp := verIp
+	localPort := verPort
+	hosts, errH := esutil.GetDiscoveryZenPingUnicastHosts(configPath)
+	if errH != nil {
+		fmt.Println("errH: ", errH)
+		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errH)}
+	}
+	for _, p := range hosts {
+		if p == localIp {
+			fmt.Println("涓昏妭鐐逛笉鍏佽閫�鍑洪泦缇�")
+			return &bhomeclient.Reply{Msg: "涓昏妭鐐逛笉鍏佽閫�鍑洪泦缇�"}
+		}
+	}
+	_, errEN := esutil.ExcludeNode(localIp, localPort)
+	if errEN != nil {
+		fmt.Println("errEN: ", errEN)
+		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errEN)}
+	}
+	sp := esutil.StopServer(binPath, "0.0.0.0", "9200")
+	if sp == true {
+		fmt.Println("binPath璺緞閿欒")
+		return &bhomeclient.Reply{Msg: "binPath璺緞閿欒"}
+	}
+	_, errS := esutil.SetDiscoveryZenPingUnicastHosts(configPath, nil)
+	if errS != nil {
+		return &bhomeclient.Reply{Msg: fmt.Sprint("%s", errS)}
+	}
+	return &bhomeclient.Reply{Success: true, Msg: "鎼炲畾锛侊紒锛侊紒锛侊紒锛�"}
+}
+
+func HttpRCT(method string, url string, parama []byte) (buf []byte, err error) {
+	timeout := time.Duration(30 * time.Second)
+	client := http.Client{
+		Timeout: timeout,
+	}
+	request, err := http.NewRequest(method, url, bytes.NewBuffer(parama))
+	request.Header.Set("Content-type", "application/json")
+	request.Header.Add("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3ND"+
+		"UwMjU5MjMsInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW"+
+		"9uc1wiOltcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJjb2RlTWFuZ2U6dmlld1wiLFwiZGV2aWNlTWFuYWdlOmFkZFwiLFwiYW"+
+		"RtaW5NYW5hZ2VcIixcIm9yZGVyTWFuZ2VcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJwcm9kdWN0TWFuZ2U6YWRkXCIsXCJhZG"+
+		"1pbk1hbmFnZTp2aWV3XCIsXCJjb2RlTWFuZ2U6YWRkXCIsXCJwcm9kdWN0TWFuZ2U6b2ZmU2FsZVwiLFwib3JkZXJNYW5nZTpjYW"+
+		"5jZWxcIixcInByb2R1Y3RDZW50ZXI6ZG93bmxvYWRcIixcInByb2R1Y3RDZW50ZXI6YnV5XCIsXCJwcm9kdWN0TWFuZ2U6dmlld1"+
+		"wiLFwiYXBpXCIsXCJob21lXCIsXCJvcmRlck1hbmdlOnBheVwiLFwiYWRtaW5NYW5hZ2U6YWRkXCIsXCJvcmRlck1hbmdlOmRvd2"+
+		"5sb2FkXCIsXCJwcm9kdWN0Q2VudGVyXCIsXCJkZXZpY2VNYW5hZ2U6dW5iaW5kXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImFkbW"+
+		"luTWFuYWdlOmVkaXRcIixcImRldmljZU1hbmFnZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwidmlwTWFuYWdlOnZpZXdcIixcInByb2"+
+		"R1Y3RDZW50ZXI6dmlld1wiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcIm"+
+		"NvZGVNYW5nZVwiLFwicHJvZHVjdE1hbmdlXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.vwjAFkWuEyadRLvIOGK8LFE3Mj"+
+		"pY3SQ7j6AlTXnQDG8")
+
+	if err != nil {
+		fmt.Println("build request fail !")
+		return nil, err
+	}
+
+	resp, err := client.Do(request)
+	if err != nil {
+		fmt.Println("request error: ", err)
+		return nil, err
+	}
+
+	defer resp.Body.Close()
+	body, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		fmt.Println(err)
+		return nil, err
+	}
+	return body, nil
+}
+
+func (tc *TestControllers) CreateServer(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
+	var ni NodeInfo
+	c.BindJSON(&ni)
+	ip, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
+	scriptPath := ni.ScriptPath
+	peers := make([]string, 0)
+	peers = append(peers, ip+":6333")
+	_, err := util.VerifyServer(ip)
+	if err == nil {
+		sp := util.StopServer(scriptPath)
+		if sp == false {
+			return &bhomeclient.Reply{Msg: "stop scriptPath  璺緞閿欒锛�"}
+		}
+	}
+	sc := util.SetConfig(scriptPath, ip, peers, "000")
+	if sc == false {
+		return &bhomeclient.Reply{Msg: "set scriptPath  璺緞閿欒锛�"}
+	}
+	st := util.StartServer(scriptPath)
+	if st == false {
+		return &bhomeclient.Reply{Msg: "start scriptPath  璺緞閿欒锛�"}
+	}
+	time.Sleep(time.Second * 5)
+	_, errF := util.VerifyServer(ip)
+	if errF != nil {
+		time.Sleep(time.Second * 5)
+		_, errS := util.VerifyServer(ip)
+		if errS != nil {
+			return &bhomeclient.Reply{Msg: "鍚姩瓒呮椂"}
+		}
+	}
+	return &bhomeclient.Reply{Success: true, Msg: "鍒涘缓鎴愬姛锛�"}
+}
+
+func (tc *TestControllers) AddServer(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
+	var ni NodeInfo
+	c.BindJSON(&ni)
+	ip := ni.Ip
+	localIp, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
+	url := "http://" + ip + ":8888/data/api-v/swfs/getSWFSPeers"
+	body := `{"scriptPath":"` + ni.ScriptPath + `"}`
+	buf, err := HttpRCT("POST", url, []byte(body))
+	if err != nil {
+		return &bhomeclient.Reply{Msg: "鑾峰彇peers鍒楄〃澶辫触"}
+	}
+	var info interface{}
+	json.Unmarshal(buf, &info)
+	peers := info.(map[string]interface{})["data"].([]interface{})
+	if len(peers) < 1 {
+		return &bhomeclient.Reply{Msg: "鎸囧畾ip涓嶅瓨鍦ㄩ泦缇�!"}
+	}
+	for _, pc := range peers {
+		if strings.Contains(pc.(string), localIp) == true {
+			return &bhomeclient.Reply{Msg: "璇ヨ妭鐐瑰凡缁忓湪鐩爣闆嗙兢"}
+		}
+	}
+	peers = append(peers, localIp+":6333")
+	for _, pick := range peers {
+		mIp := strings.Split(pick.(string), ":")[0]
+		url := "http://" + mIp + ":8888/data/api-v/swfs/syncSWFSNode"
+		body := `{"scriptPath":"` + ni.ScriptPath + `",
+                   "peers":["` + strings.Replace(strings.Trim(fmt.Sprint(peers), "[]"), " ", "\",\"", -1) + `"]}`
+		_, err := HttpRCT("POST", url, []byte(body))
+		if err != nil {
+			return &bhomeclient.Reply{Msg: mIp + "鑺傜偣淇敼澶辫触"}
+		}
+	}
+	return &bhomeclient.Reply{Success: true, Msg: "鍔犲叆鎴愬姛锛侊紒锛�"}
+}
+
+func (tc *TestControllers) ExitServer(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
+	var ni NodeInfo
+	c.BindJSON(&ni)
+	scriptPath := ni.ScriptPath
+
+	localIp, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
+	configInfo, err := util.GetConfig(scriptPath)
+	if err != nil {
+		return &bhomeclient.Reply{Msg: "鑾峰彇peers鍒楄〃澶辫触"}
+	}
+	newPeers := make([]string, 0)
+	for _, p := range configInfo.Peers {
+		if strings.Split(p, ":")[0] == localIp {
+			continue
+		}
+		newPeers = append(newPeers, p)
+	}
+	for _, pick := range newPeers {
+		mIp := strings.Split(pick, ":")[0]
+		url := "http://" + mIp + ":8888/data/api-v/swfs/syncSWFSNode/"
+		body := `{"scriptPath":"` + ni.ConfigPath + `",
+                   "peers":["` + strings.Replace(strings.Trim(fmt.Sprint(newPeers), "[]"), " ", "\",\"", -1) + `"]}`
+		_, err := HttpRCT("POST", url, []byte(body))
+		if err != nil {
+			return &bhomeclient.Reply{Msg: mIp + "鑺傜偣淇敼澶辫触"}
+		}
+	}
+	sc := util.SetConfig(scriptPath, "", []string{}, "000")
+	if sc == false {
+		return &bhomeclient.Reply{Msg: "scriptPath  璺緞閿欒锛�"}
+	}
+	_, errVS := util.VerifyServer(localIp)
+	if errVS == nil {
+		sp := util.StopServer(scriptPath)
+		if sp == false {
+			return &bhomeclient.Reply{Msg: "stop scriptPath  璺緞閿欒锛�"}
+		}
+	}
+	return &bhomeclient.Reply{Success: true, Msg: "閫�鍑烘垚鍔燂紒锛侊紒"}
+}

--
Gitblit v1.8.0