MCPcopy
hub / github.com/eolinker/goku_lite / CheckPluginIsAvailiable

Function CheckPluginIsAvailiable

utils/request.go:13–91  ·  view source on GitHub ↗

CheckPluginIsAvailiable 检查插件是否可用

(pluginName string, nodeList []map[string]interface{})

Source from the content-addressed store, hash-verified

11
12//CheckPluginIsAvailiable 检查插件是否可用
13func CheckPluginIsAvailiable(pluginName string, nodeList []map[string]interface{}) (bool, []map[string]interface{}) {
14 errNodeList := make([]map[string]interface{}, 0)
15 for _, v := range nodeList {
16 if v["nodePort"] == "" {
17 v["nodePort"] = "6689"
18 }
19 client := &http.Client{
20 Timeout: time.Second * 15,
21 }
22 var data = url.Values{}
23 data.Add("pluginName", pluginName)
24
25 request, err := http.NewRequest("POST", "http://"+v["nodeIP"].(string)+":"+v["nodePort"].(string)+"/goku-check_plugin", strings.NewReader(data.Encode()))
26 if err != nil {
27 errNode := map[string]interface{}{
28 "nodeAddress": v["nodeIP"].(string) + ":" + v["nodePort"].(string),
29 "error": "[ERROR] Fail to create request",
30 "errorStatusCode": "210014",
31 }
32 errNodeList = append(errNodeList, errNode)
33 continue
34 }
35 request.Header.Add("Content-Type", "application/x-www-form-urlencoded")
36 resp, err := client.Do(request)
37 if err != nil {
38 errNode := map[string]interface{}{
39 "nodeAddress": v["nodeIP"].(string) + ":" + v["nodePort"].(string),
40 "error": "[ERROR] Connect timeout",
41 "errorStatusCode": "210011",
42 }
43 errNodeList = append(errNodeList, errNode)
44 continue
45 }
46 body, err := ioutil.ReadAll(resp.Body)
47 if err != nil {
48 errNode := map[string]interface{}{
49 "nodeAddress": v["nodeIP"].(string) + ":" + v["nodePort"].(string),
50 "error": "[ERROR] Fail to read body",
51 "errorStatusCode": "210013",
52 }
53 errNodeList = append(errNodeList, errNode)
54 continue
55 }
56 resp.Body.Close()
57 var bodyJSON map[string]string
58 err = json.Unmarshal(body, &bodyJSON)
59 if err != nil {
60 errNode := map[string]interface{}{
61 "nodeAddress": v["nodeIP"].(string) + ":" + v["nodePort"].(string),
62 "error": "[ERROR] Fail to parse json",
63 "errorStatusCode": "210010",
64 }
65 errNodeList = append(errNodeList, errNode)
66 continue
67 }
68 if _, ok := bodyJSON["statusCode"]; !ok {
69 errNode := map[string]interface{}{
70 "nodeAddress": v["nodeIP"].(string) + ":" + v["nodePort"].(string),

Callers

nothing calls this directly

Calls 5

appendFunction · 0.85
AddMethod · 0.65
EncodeMethod · 0.65
DoMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected