package dbapi
|
|
import (
|
"basic.com/pubsub/protomsg.git"
|
"encoding/json"
|
"strconv"
|
)
|
|
type ClusterApi struct {
|
Ip string
|
Port int
|
}
|
|
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,c
|
}
|
|
var res Result
|
if err = json.Unmarshal(body, &res); err != nil {
|
return false,c
|
}
|
bytes, _ := json.Marshal(res.Data)
|
err = json.Unmarshal(bytes, &c)
|
return res.Success,c
|
}
|
|
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 {
|
return false,nil
|
}
|
|
var res Result
|
if err = json.Unmarshal(body, &res); err != nil {
|
return false,nil
|
}
|
|
return res.Success,res.Data
|
}
|
|
func (api ClusterApi) Search(searchNum string, password string) (bool,interface{}) {
|
url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/search"
|
client := NewClient()
|
paramBody := map[string]interface{}{
|
"searchNum": searchNum,
|
"password": password,
|
}
|
body,err := client.DoPostRequest(url,CONTENT_TYPE_JSON, 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
|
}
|
|
func (api ClusterApi) GetSearchNodes() (bool,interface{}) {
|
url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/getSearchNodes"
|
client := NewClient()
|
body,err := client.DoGetRequest(url, 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
|
}
|
|
func (api ClusterApi) StopSearching(searchNum string) (bool,interface{}) {
|
url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/stopSearching"
|
client := NewClient()
|
paramBody := map[string]interface{}{
|
"searchNum": searchNum,
|
}
|
body,err := client.DoPostRequest(url,CONTENT_TYPE_JSON, 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
|
}
|
|
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 {
|
return false,nil
|
}
|
|
var res Result
|
if err = json.Unmarshal(body, &res); err != nil {
|
return false,nil
|
}
|
|
return res.Success,res.Data
|
}
|
|
func (api ClusterApi) Leave() (bool,interface{}) {
|
url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/leave"
|
client := NewClient()
|
body,err := client.DoPostRequest(url,CONTENT_TYPE_FORM, nil,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
|
}
|
|
|
func (api ClusterApi) JoinCluster(paramBody map[string]interface{}) (bool,interface{}) {
|
url := api.getBasicUrl() + DATA_URL_PREFIX + "/cluster/joinCluster"
|
client := NewClient()
|
body,err := client.DoPostRequest(url,CONTENT_TYPE_JSON, 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
|
}
|