From 4cda874e24e56e0310e7bf946bc1fc97b91784d4 Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期四, 22 十月 2020 16:32:21 +0800
Subject: [PATCH] fic

---
 ClusterApi.go |   92 +++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 78 insertions(+), 14 deletions(-)

diff --git a/ClusterApi.go b/ClusterApi.go
index 6c3c8dc..269e662 100644
--- a/ClusterApi.go
+++ b/ClusterApi.go
@@ -13,6 +13,7 @@
 	"time"
 )
 
+//鍒濆鍖栭厤缃枃浠�
 func InitYml(configPath string) (bool, error) {
 	v := viper.New()
 	v.SetConfigType("yml")
@@ -28,19 +29,31 @@
 	return true, nil
 }
 
-func StartServer(binPath string, ip string) bool {
-	resultMsg := CMDSC("sh " + binPath + "/elasticsearch -d")
+//鍚姩鏈嶅姟
+func StartServer(binPath string, ip string, port string) bool {
+	resultMsg := CMDSC("sh " + binPath + "/es_start.sh")
 	if resultMsg == "杩愯澶辫触" {
 		return false
 	}
-	bool := VerifyNodeServer(ip, "9200")
-	return bool
+	b := VerifyNodeServer(ip, port)
+	return b
 }
 
-func StopServer(binPath string) {
-
+//鍏抽棴鏈嶅姟
+func StopServer(binPath string, ip string, port string) bool {
+	b := VerifyShortNodeServer(ip, port)
+	if b == true {
+		resultMsg := CMDSC("sh " + binPath + "/es_stop.sh")
+		if resultMsg == "杩愯澶辫触" {
+			return true
+		}
+	}
+	bs := VerifyShortNodeServer(ip, port)
+	return bs
 }
 
+
+//鏇存崲鑺傜偣瑙掕壊
 func UpdateNodeRole(configPath string, role string) (bool, error) {
 	v := viper.New()
 	v.SetConfigType("yml")
@@ -58,9 +71,10 @@
 	if err := v.WriteConfig(); err != nil {
 		return false, err
 	}
-	return true,nil
+	return true, nil
 }
 
+//楠岃瘉璇ヨ妭鐐规槸鍚﹁浣跨敤杩�
 func VerifyCreated(configPath string, ip string) (bool, error) {
 	v := viper.New()
 	v.SetConfigType("yml")
@@ -68,7 +82,7 @@
 	v.AddConfigPath(configPath)
 	err := v.ReadInConfig()
 	if err != nil {
-		return false, err
+		return true, err
 	}
 	hosts := v.GetStringSlice("discovery.zen.ping.unicast.hosts")
 	for _, pick := range hosts {
@@ -82,6 +96,7 @@
 	return false, nil
 }
 
+//楠岃瘉鑺傜偣鏈嶅姟鏄惁姝e父鍚姩
 func VerifyNodeServer(ip string, port string) bool {
 	b := false
 	url := "http://" + ip + ":" + port
@@ -101,6 +116,17 @@
 	return b
 }
 
+//楠岃瘉鑺傜偣鏈嶅姟鏄惁姝e父鍚姩(鐭獙璇�)
+func VerifyShortNodeServer(ip string, port string) bool {
+	url := "http://" + ip + ":" + port
+	_, err := HttpRC("GET", url, nil)
+	if err != nil {
+		return false
+	}
+	return true
+}
+
+//楠岃瘉鑺傜偣瑙掕壊
 func VerifyNodeRole(configPath string, ) (string, error) {
 	role := "slave"
 	v := viper.New()
@@ -118,6 +144,38 @@
 	return role, nil
 }
 
+//鏌ヨ缁勬挱鍒楄〃
+func GetDiscoveryZenPingUnicastHosts(configPath string) ([]string, error) {
+	v := viper.New()
+	v.SetConfigType("yml")
+	v.SetConfigName("elasticsearch")
+	v.AddConfigPath(configPath)
+	err := v.ReadInConfig()
+	if err != nil {
+		return nil, err
+	}
+	hosts := v.GetStringSlice("discovery.zen.ping.unicast.hosts")
+	return hosts, nil
+}
+
+//璁剧疆缁勬挱鍒楄〃
+func SetDiscoveryZenPingUnicastHosts(configPath string, hosts []string) (bool, error) {
+	v := viper.New()
+	v.SetConfigType("yml")
+	v.SetConfigName("elasticsearch")
+	v.AddConfigPath(configPath)
+	err := v.ReadInConfig()
+	if err != nil {
+		return false, err
+	}
+	v.Set("discovery.zen.ping.unicast.hosts", hosts)
+	if err := v.WriteConfig(); err != nil {
+		return false, err
+	}
+	return true, nil
+}
+
+//鏇存柊缁勬挱鍒楄〃
 func UpdateDiscoveryZenPingUnicastHosts(configPath string, oldIp string, newIp string) (bool, error) {
 	v := viper.New()
 	v.SetConfigType("yml")
@@ -145,18 +203,23 @@
 	return true, nil
 }
 
-func AddDiscoveryZenPingUnicastHosts(configPath string, ip string) []string {
+//娣诲姞缁勬挱鎴愬憳
+func AddDiscoveryZenPingUnicastHosts(configPath string, ip string) (bool, error) {
 	v := viper.New()
 	v.SetConfigType("yml")
 	v.SetConfigName("elasticsearch")
 	v.AddConfigPath(configPath)
-	err := v.ReadInConfig()
-	if err != nil {
-
+	errR := v.ReadInConfig()
+	if errR != nil {
+		return false, errR
 	}
 	hosts := v.GetStringSlice("discovery.zen.ping.unicast.hosts")
 	hosts = append(hosts, ip)
-	return hosts
+	v.Set("discovery.zen.ping.unicast.hosts", hosts)
+	if errW := v.WriteConfig(); errW != nil {
+		return false, errW
+	}
+	return true, nil
 }
 
 type NodeInfo struct {
@@ -166,6 +229,7 @@
 	NodeName   string `json:"nodeName"`
 }
 
+//鏌ヨ闆嗙兢淇℃伅
 func GetClusterInfo(ip string, port string) ([]NodeInfo, error) {
 	url := "http://" + ip + ":" + port + "/_cat/nodes?v"
 	buf, err := HttpRC("GET", url, nil)
@@ -198,6 +262,7 @@
 	return inf, nil
 }
 
+//鎺掗櫎鍗冲皢閫�鍑洪泦缇ょ殑鑺傜偣
 func ExcludeNode(ip string, port string) (bool, error) {
 	flag := false
 	url := "http://" + ip + ":" + port + "/_cluster/settings"
@@ -236,7 +301,6 @@
 	}
 	request, err := http.NewRequest(method, url, bytes.NewBuffer(parama))
 	request.Header.Set("Content-type", "application/json")
-
 	if err != nil {
 		fmt.Println("build request fail !")
 		return nil, err

--
Gitblit v1.8.0