init
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/julienschmidt/httprouter"
|
||||
"github.com/snail007/go-activerecord/mysql"
|
||||
)
|
||||
|
||||
type Cluster struct{}
|
||||
|
||||
func NewCluster() *Cluster {
|
||||
return &Cluster{}
|
||||
}
|
||||
|
||||
//report a cluster status
|
||||
//method : POST
|
||||
//params : sys_conn_number,bandwidth,tunnel_conn_number
|
||||
func (this *Cluster) Report(responseWrite http.ResponseWriter, request *http.Request, params httprouter.Params) {
|
||||
|
||||
_sysConn := request.PostFormValue("sys_conn_number")
|
||||
sysConn, err := strconv.Atoi(_sysConn)
|
||||
if err != nil {
|
||||
jsonError(responseWrite, "sys_conn_number is error!", nil)
|
||||
return
|
||||
}
|
||||
_bandwidth := request.PostFormValue("bandwidth")
|
||||
bandwidth, err := strconv.Atoi(_bandwidth)
|
||||
if err != nil {
|
||||
jsonError(responseWrite, "bandwidth is error!", nil)
|
||||
return
|
||||
}
|
||||
_tunnelConn := request.PostFormValue("tunnel_conn_number")
|
||||
tunnelConn, err := strconv.Atoi(_tunnelConn)
|
||||
if err != nil {
|
||||
jsonError(responseWrite, "tunnel_conn_number is error!", nil)
|
||||
return
|
||||
}
|
||||
addr := request.RemoteAddr
|
||||
ip := addr[0:strings.Index(addr, ":")]
|
||||
clusterValue := map[string]interface{}{
|
||||
"ip": ip,
|
||||
"system_conn_number": sysConn,
|
||||
"tunnel_conn_number": tunnelConn,
|
||||
"bandwidth": bandwidth,
|
||||
}
|
||||
where := map[string]interface{}{
|
||||
"ip": ip,
|
||||
"is_delete": 0,
|
||||
}
|
||||
db := G.DB()
|
||||
var rs *mysql.ResultSet
|
||||
rs, err = db.Query(db.AR().From("cluster").Where(where))
|
||||
if err != nil {
|
||||
jsonError(responseWrite, err.Error(), nil)
|
||||
log.Warnf("Cluster Report ERR:%s", err)
|
||||
return
|
||||
}
|
||||
if rs.Len() > 0 {
|
||||
clusterValue["update_time"] = time.Now().Unix()
|
||||
_, err = db.Exec(db.AR().Update("cluster", clusterValue, where))
|
||||
} else {
|
||||
clusterValue["create_time"] = time.Now().Unix()
|
||||
_, err = db.Exec(db.AR().Insert("cluster", clusterValue))
|
||||
}
|
||||
if err != nil {
|
||||
jsonError(responseWrite, err.Error(), nil)
|
||||
log.Warnf("Cluster Report ERR:%s", err)
|
||||
return
|
||||
}
|
||||
responseWrite.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
|
||||
//cluster list
|
||||
//method : POST
|
||||
//params : sys_conn_number,bandwidth,tunnel_conn_number
|
||||
func (this *Cluster) List(responseWrite http.ResponseWriter, request *http.Request, params httprouter.Params) {
|
||||
|
||||
_sysConn := request.PostFormValue("sys_conn_number")
|
||||
sysConn, err := strconv.Atoi(_sysConn)
|
||||
if err != nil {
|
||||
jsonError(responseWrite, "sys_conn_number is error!", nil)
|
||||
return
|
||||
}
|
||||
_bandwidth := request.PostFormValue("bandwidth")
|
||||
bandwidth, err := strconv.Atoi(_bandwidth)
|
||||
if err != nil {
|
||||
jsonError(responseWrite, "bandwidth is error!", nil)
|
||||
return
|
||||
}
|
||||
_tunnelConn := request.PostFormValue("tunnel_conn_number")
|
||||
tunnelConn, err := strconv.Atoi(_tunnelConn)
|
||||
if err != nil {
|
||||
jsonError(responseWrite, "tunnel_conn_number is error!", nil)
|
||||
return
|
||||
}
|
||||
addr := request.RemoteAddr
|
||||
ip := addr[0:strings.Index(addr, ":")]
|
||||
clusterValue := map[string]interface{}{
|
||||
"ip": ip,
|
||||
"system_conn_number": sysConn,
|
||||
"tunnel_conn_number": tunnelConn,
|
||||
"bandwidth": bandwidth,
|
||||
}
|
||||
where := map[string]interface{}{
|
||||
"ip": ip,
|
||||
"is_delete": 0,
|
||||
}
|
||||
db := G.DB()
|
||||
var rs *mysql.ResultSet
|
||||
rs, err = db.Query(db.AR().From("cluster").Where(where))
|
||||
if err != nil {
|
||||
jsonError(responseWrite, err.Error(), nil)
|
||||
log.Warnf("Cluster Report ERR:%s", err)
|
||||
return
|
||||
}
|
||||
if rs.Len() > 0 {
|
||||
clusterValue["update_time"] = time.Now().Unix()
|
||||
_, err = db.Exec(db.AR().Update("cluster", clusterValue, where))
|
||||
} else {
|
||||
clusterValue["create_time"] = time.Now().Unix()
|
||||
_, err = db.Exec(db.AR().Insert("cluster", clusterValue))
|
||||
}
|
||||
if err != nil {
|
||||
jsonError(responseWrite, err.Error(), nil)
|
||||
log.Warnf("Cluster Report ERR:%s", err)
|
||||
return
|
||||
}
|
||||
responseWrite.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
Reference in New Issue
Block a user