From 89321bfe39e5a696abdb8ad5372d01e64ea6e2e7 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期一, 16 十一月 2020 17:54:43 +0800
Subject: [PATCH] 退出集群添加参数

---
 cluster.go |   77 +++++++++++++++++++++++++++++---------
 1 files changed, 58 insertions(+), 19 deletions(-)

diff --git a/cluster.go b/cluster.go
index 987d255..b01a79c 100644
--- a/cluster.go
+++ b/cluster.go
@@ -1,33 +1,53 @@
 package dbapi
 
-import "encoding/json"
+import (
+	"basic.com/pubsub/protomsg.git"
+	"encoding/json"
+	"strconv"
+)
 
 type ClusterApi struct {
-
+	Ip string
+	Port int
 }
 
-func (api ClusterApi) FindCluster() (bool,interface{}) {
-	url := BASIC_URL + DATA_URL_PREFIX + "/cluster/findCluster"
+func (api ClusterApi) getBasicUrl() string {
+	if api.Ip == "" {
+		return BASIC_URL
+	}
+	if api.Ip == "" {
+		api.Ip = DEFAULT_IP
+	}
+	if api.Port == 0 {
+		api.Port = DEFAULT_PORT
+	}
+	return "http://"+api.Ip+":"+strconv.Itoa(api.Port)
+}
+
+func (api ClusterApi) FindCluster() (b bool,c protomsg.ClusterAndNodes) {
+	url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/findCluster"
 	client := NewClient()
 	body,err := client.DoGetRequest(url, nil,nil)
 	if err != nil {
-		return false,nil
+		return false,c
 	}
 
 	var res Result
 	if err = json.Unmarshal(body, &res); err != nil {
-		return false,nil
+		return false,c
 	}
-
-	return res.Success,res.Data
+	bytes, _ := json.Marshal(res.Data)
+	err = json.Unmarshal(bytes, &c)
+	return res.Success,c
 }
 
-func (api ClusterApi) Create(clusterName string, password string) (bool,interface{}) {
-	url := BASIC_URL + DATA_URL_PREFIX + "/cluster/create"
+func (api ClusterApi) Create(clusterName string, password string, virtualIp string) (bool,interface{}) {
+	url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/create"
 	client := NewClient()
 	paramBody := map[string]interface{}{
 		"clusterName": clusterName,
 		"password": password,
+		"virtualIp": virtualIp,
 	}
 	body,err := client.DoPostRequest(url,CONTENT_TYPE_JSON, paramBody,nil,nil)
 	if err != nil {
@@ -43,7 +63,7 @@
 }
 
 func (api ClusterApi) Search(searchNum string, password string) (bool,interface{}) {
-	url := BASIC_URL + DATA_URL_PREFIX + "/cluster/search"
+	url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/search"
 	client := NewClient()
 	paramBody := map[string]interface{}{
 		"searchNum": searchNum,
@@ -63,7 +83,7 @@
 }
 
 func (api ClusterApi) GetSearchNodes() (bool,interface{}) {
-	url := BASIC_URL + DATA_URL_PREFIX + "/cluster/getSearchNodes"
+	url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/getSearchNodes"
 	client := NewClient()
 	body,err := client.DoGetRequest(url, nil,nil)
 	if err != nil {
@@ -79,7 +99,7 @@
 }
 
 func (api ClusterApi) StopSearching(searchNum string) (bool,interface{}) {
-	url := BASIC_URL + DATA_URL_PREFIX + "/cluster/stopSearching"
+	url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/stopSearching"
 	client := NewClient()
 	paramBody := map[string]interface{}{
 		"searchNum": searchNum,
@@ -97,11 +117,12 @@
 	return res.Success,res.Data
 }
 
-func (api ClusterApi) UpdateClusterName(clusterName string) (bool,interface{}) {
-	url := BASIC_URL + DATA_URL_PREFIX + "/cluster/updateClusterName"
+func (api ClusterApi) UpdateClusterName(clusterName string, virtualIp string) (bool,interface{}) {
+	url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/updateClusterName"
 	client := NewClient()
 	paramBody := map[string]interface{}{
 		"clusterName": clusterName,
+		"virtualIp": virtualIp,
 	}
 	body,err := client.DoPostRequest(url,CONTENT_TYPE_FORM, paramBody,nil,nil)
 	if err != nil {
@@ -116,10 +137,10 @@
 	return res.Success,res.Data
 }
 
-func (api ClusterApi) Leave() (bool,interface{}) {
-	url := BASIC_URL + DATA_URL_PREFIX + "/cluster/leave"
+func (api ClusterApi) Leave(paramBody map[string]interface{}) (bool,interface{}) {
+	url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/leave"
 	client := NewClient()
-	body,err := client.DoPostRequest(url,CONTENT_TYPE_FORM, nil,nil,nil)
+	body,err := client.DoPostRequest(url,CONTENT_TYPE_FORM, paramBody,nil,nil)
 	if err != nil {
 		return false,nil
 	}
@@ -134,7 +155,7 @@
 
 
 func (api ClusterApi) JoinCluster(paramBody map[string]interface{}) (bool,interface{}) {
-	url := BASIC_URL + DATA_URL_PREFIX + "/cluster/joinCluster"
+	url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/joinCluster"
 	client := NewClient()
 	body,err := client.DoPostRequest(url,CONTENT_TYPE_JSON, paramBody,nil,nil)
 	if err != nil {
@@ -150,4 +171,22 @@
 }
 
 
+func (api ClusterApi) UpdateDriftState(driftState string, nodeId string) (bool,interface{}) {
+	url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/updateDriftState"
+	client := NewClient()
+	paramBody := map[string]interface{}{
+		"driftState": driftState,
+		"nodeId": nodeId,
+	}
+	body,err := client.DoPostRequest(url,CONTENT_TYPE_FORM, paramBody,nil,nil)
+	if err != nil {
+		return false,nil
+	}
 
+	var res Result
+	if err = json.Unmarshal(body, &res); err != nil {
+		return false,nil
+	}
+
+	return res.Success,res.Data
+}

--
Gitblit v1.8.0