From c14fefa2903a54298666e1d11df0c5013c51429d Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期二, 24 三月 2020 15:12:16 +0800
Subject: [PATCH] t1

---
 main.go |   92 ++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 89 insertions(+), 3 deletions(-)

diff --git a/main.go b/main.go
index 5388689..2a7d323 100644
--- a/main.go
+++ b/main.go
@@ -2,10 +2,13 @@
 
 import (
 	"bytes"
+	"encoding/json"
+	"errors"
 	"fmt"
 	"io/ioutil"
 	"net/http"
 	"os/exec"
+	"strings"
 	"time"
 )
 
@@ -13,6 +16,7 @@
 
 	oldPeers := GetOldPeers()
 	fmt.Println("oldPeers: ", oldPeers)
+	//AddNewMasterToPeers()
 	newPeers := GetNewPeers()
 	fmt.Println("newPeers: ", newPeers)
 	UpdatePeers(oldPeers, newPeers)
@@ -44,9 +48,13 @@
     "size": 1
 }`
 
-	getRes, _ := EsReq("POST", getUrl, []byte(getJson))
-	fmt.Println(getRes)
-	return ""
+	buf, _ := EsReq("POST", getUrl, []byte(getJson))
+	source, _ := Sourcelist(buf)
+	//fmt.Println(source)
+	peers := source[0]["peers"].([]interface{})
+	fmt.Println(peers)
+	p := "peers=" + strings.Replace(strings.Trim(fmt.Sprint(peers), "[]"), " ", ",", -1)
+	return p
 }
 
 func UpdatePeers(oldPeers string, newPeers string) {
@@ -95,3 +103,81 @@
 	}
 	return body, nil
 }
+
+func Sourcelist(buf []byte) (sources []map[string]interface{}, err error) {
+	var info interface{}
+	json.Unmarshal(buf, &info)
+	out, ok := info.(map[string]interface{})
+	if !ok {
+		return nil, errors.New("http response interface can not change map[string]interface{}")
+	}
+
+	middle, ok := out["hits"].(map[string]interface{})
+	if !ok {
+		return nil, errors.New("first hits change error!")
+	}
+	for _, in := range middle["hits"].([]interface{}) {
+		tmpbuf, ok := in.(map[string]interface{})
+		if !ok {
+			fmt.Println("change to source error!")
+			continue
+		}
+		source, ok := tmpbuf["_source"].(map[string]interface{})
+		if !ok {
+			fmt.Println("change _source error!")
+			continue
+		}
+		sources = append(sources, source)
+	}
+	return sources, nil
+}
+
+func AddNewMasterToPeers() (result bool) {
+
+	peer := "192.168.5.22:6333"
+	addUrl := "http://192.168.20.10:9200/basicfs/_update_by_query"
+	addJson := `{
+    "script": {
+        "lang": "painless",
+        "inline": "ctx._source.peers.add(params.newpeer)",
+        "params": {
+            "newpeer": "` + peer + `"
+        }
+    },
+    "query": {
+        "bool": {
+            "filter": [
+                {
+                    "term": {
+                        "application": "nodeOperation"
+                    }
+                }
+            ]
+        }
+    }
+}`
+	buf, _ := EsReq("POST", addUrl, []byte(addJson))
+	updateRes, _ := SourceUpdated(buf)
+	if updateRes == -1 {
+		result = false
+	} else {
+		result = true
+	}
+	return result
+}
+
+func SourceUpdated(buf []byte) (total int, err error) {
+	var info interface{}
+	json.Unmarshal(buf, &info)
+	out, ok := info.(map[string]interface{})
+	if !ok {
+		return -1, errors.New("http response interface can not change map[string]interface{}")
+	}
+
+	middle, ok := out["updated"].(float64)
+	if !ok {
+		return -1, errors.New("first total change error!")
+	}
+	total = int(middle)
+	return total, nil
+}

--
Gitblit v1.8.0