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