mirror of
https://gitee.com/rainbond/Rainbond.git
synced 2024-12-03 12:18:09 +08:00
[REV] optimize region api ,optimize unmarshal list obj
This commit is contained in:
parent
36bb33cb54
commit
3a46b8868f
@ -57,11 +57,13 @@ type node struct {
|
|||||||
type TaskInterface interface {
|
type TaskInterface interface {
|
||||||
Get(name string) (*model.Task, *util.APIHandleError)
|
Get(name string) (*model.Task, *util.APIHandleError)
|
||||||
Status(name string) (*TaskStatus, error)
|
Status(name string) (*TaskStatus, error)
|
||||||
|
HandleTaskStatus(task string) (*map[string]*model.TaskStatus,*util.APIHandleError)
|
||||||
Add(task *model.Task) *util.APIHandleError
|
Add(task *model.Task) *util.APIHandleError
|
||||||
AddGroup(group *model.TaskGroup) *util.APIHandleError
|
AddGroup(group *model.TaskGroup) *util.APIHandleError
|
||||||
Exec(name string, nodes []string) *util.APIHandleError
|
Exec(name string, nodes []string) *util.APIHandleError
|
||||||
List() ([]*model.Task, *util.APIHandleError)
|
List() ([]*model.Task, *util.APIHandleError)
|
||||||
Refresh() *util.APIHandleError
|
Refresh() *util.APIHandleError
|
||||||
|
|
||||||
}
|
}
|
||||||
type NodeInterface interface {
|
type NodeInterface interface {
|
||||||
Rule(rule string) ([]*model.HostNode,*util.APIHandleError)
|
Rule(rule string) ([]*model.HostNode,*util.APIHandleError)
|
||||||
@ -150,7 +152,7 @@ func (n *node) Rule(rule string) ([]*model.HostNode,*util.APIHandleError) {
|
|||||||
}
|
}
|
||||||
var res utilhttp.ResponseBody
|
var res utilhttp.ResponseBody
|
||||||
var gc []*model.HostNode
|
var gc []*model.HostNode
|
||||||
res.List = &gc
|
res.List = gc
|
||||||
if err := ffjson.Unmarshal(body, &res); err != nil {
|
if err := ffjson.Unmarshal(body, &res); err != nil {
|
||||||
return nil, util.CreateAPIHandleError(code,err)
|
return nil, util.CreateAPIHandleError(code,err)
|
||||||
}
|
}
|
||||||
@ -169,7 +171,7 @@ func (n *node) List() ([]*model.HostNode,*util.APIHandleError) {
|
|||||||
}
|
}
|
||||||
var res utilhttp.ResponseBody
|
var res utilhttp.ResponseBody
|
||||||
var gc []*model.HostNode
|
var gc []*model.HostNode
|
||||||
res.List = &gc
|
res.List = gc
|
||||||
if err := ffjson.Unmarshal(body, &res); err != nil {
|
if err := ffjson.Unmarshal(body, &res); err != nil {
|
||||||
return nil, util.CreateAPIHandleError(code,err)
|
return nil, util.CreateAPIHandleError(code,err)
|
||||||
}
|
}
|
||||||
@ -256,7 +258,7 @@ func (t *task) List() ([]*model.Task, *util.APIHandleError) {
|
|||||||
}
|
}
|
||||||
var res utilhttp.ResponseBody
|
var res utilhttp.ResponseBody
|
||||||
var gc []*model.Task
|
var gc []*model.Task
|
||||||
res.List = &gc
|
res.List = gc
|
||||||
if err := ffjson.Unmarshal(body, &res); err != nil {
|
if err := ffjson.Unmarshal(body, &res); err != nil {
|
||||||
return nil, util.CreateAPIHandleError(code,err)
|
return nil, util.CreateAPIHandleError(code,err)
|
||||||
}
|
}
|
||||||
@ -309,7 +311,7 @@ func (t *task) Status(name string) (*TaskStatus, error) {
|
|||||||
|
|
||||||
return HandleTaskStatus(taskId)
|
return HandleTaskStatus(taskId)
|
||||||
}
|
}
|
||||||
func (t *task)HandleTaskStatus(task string) (*map[string]TaskStatus,*util.APIHandleError) {
|
func (t *task)HandleTaskStatus(task string) (*map[string]*model.TaskStatus,*util.APIHandleError) {
|
||||||
body, code, err := nodeclient.Request("/tasks/"+task+"/status", "GET", nil)
|
body, code, err := nodeclient.Request("/tasks/"+task+"/status", "GET", nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, util.CreateAPIHandleError(code,err)
|
return nil, util.CreateAPIHandleError(code,err)
|
||||||
@ -318,12 +320,12 @@ func (t *task)HandleTaskStatus(task string) (*map[string]TaskStatus,*util.APIHan
|
|||||||
return nil, util.CreateAPIHandleError(code,fmt.Errorf("get task with code %d", code))
|
return nil, util.CreateAPIHandleError(code,fmt.Errorf("get task with code %d", code))
|
||||||
}
|
}
|
||||||
var res utilhttp.ResponseBody
|
var res utilhttp.ResponseBody
|
||||||
var gc map[string]TaskStatus
|
var gc map[string]*model.TaskStatus
|
||||||
res.Bean = &gc
|
res.Bean = &gc
|
||||||
if err := ffjson.Unmarshal(body, &res); err != nil {
|
if err := ffjson.Unmarshal(body, &res); err != nil {
|
||||||
return nil, util.CreateAPIHandleError(code,err)
|
return nil, util.CreateAPIHandleError(code,err)
|
||||||
}
|
}
|
||||||
if gc, ok := res.Bean.(*map[string]TaskStatus); ok {
|
if gc, ok := res.Bean.(*map[string]*model.TaskStatus); ok {
|
||||||
return gc, nil
|
return gc, nil
|
||||||
}
|
}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
|
@ -32,6 +32,7 @@ import (
|
|||||||
"github.com/goodrain/rainbond/pkg/api/util"
|
"github.com/goodrain/rainbond/pkg/api/util"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/pquerna/ffjson/ffjson"
|
"github.com/pquerna/ffjson/ffjson"
|
||||||
|
"github.com/Sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
var regionAPI, token string
|
var regionAPI, token string
|
||||||
@ -89,7 +90,7 @@ type ServiceInterface interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *services) Pods(serviceAlisa string) ([]*dbmodel.K8sPod, *util.APIHandleError) {
|
func (s *services) Pods(serviceAlisa string) ([]*dbmodel.K8sPod, *util.APIHandleError) {
|
||||||
body, code, err := request("/v2"+s.tenant.prefix+s.tenant.tenantID+"/"+serviceAlisa+"/pods", "GET", nil)
|
body, code, err := request("/v2"+s.tenant.prefix+"/"+s.tenant.tenantID+"/"+s.prefix+"/"+serviceAlisa+"/pods", "GET", nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, util.CreateAPIHandleError(code,err)
|
return nil, util.CreateAPIHandleError(code,err)
|
||||||
}
|
}
|
||||||
@ -98,7 +99,7 @@ func (s *services) Pods(serviceAlisa string) ([]*dbmodel.K8sPod, *util.APIHandle
|
|||||||
}
|
}
|
||||||
var res utilhttp.ResponseBody
|
var res utilhttp.ResponseBody
|
||||||
var gc []*dbmodel.K8sPod
|
var gc []*dbmodel.K8sPod
|
||||||
res.List = &gc
|
res.List = gc
|
||||||
if err := ffjson.Unmarshal(body, &res); err != nil {
|
if err := ffjson.Unmarshal(body, &res); err != nil {
|
||||||
return nil, util.CreateAPIHandleError(code,err)
|
return nil, util.CreateAPIHandleError(code,err)
|
||||||
}
|
}
|
||||||
@ -113,7 +114,7 @@ func (s *services) Get(name string) (map[string]string,*util.APIHandleError) {
|
|||||||
return nil, util.CreateAPIHandleError(code,err)
|
return nil, util.CreateAPIHandleError(code,err)
|
||||||
}
|
}
|
||||||
if code != 200 {
|
if code != 200 {
|
||||||
return nil, util.CreateAPIHandleError(code,fmt.Errorf("Get database center configs code %d", code))
|
return nil, util.CreateAPIHandleError(code,fmt.Errorf("Get err with code %d", code))
|
||||||
}
|
}
|
||||||
j, err := simplejson.NewJson(body)
|
j, err := simplejson.NewJson(body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -142,7 +143,7 @@ func (s *services) EventLog(serviceAlisa, eventID, level string) ([]*model.Messa
|
|||||||
}
|
}
|
||||||
var res utilhttp.ResponseBody
|
var res utilhttp.ResponseBody
|
||||||
var gc []*model.MessageData
|
var gc []*model.MessageData
|
||||||
res.List = &gc
|
res.List = gc
|
||||||
if err := ffjson.Unmarshal(body, &res); err != nil {
|
if err := ffjson.Unmarshal(body, &res); err != nil {
|
||||||
return nil, util.CreateAPIHandleError(code,err)
|
return nil, util.CreateAPIHandleError(code,err)
|
||||||
}
|
}
|
||||||
@ -153,37 +154,43 @@ func (s *services) EventLog(serviceAlisa, eventID, level string) ([]*model.Messa
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *services) List() ([]*model.ServiceStruct,*util.APIHandleError) {
|
func (s *services) List() ([]*model.ServiceStruct,*util.APIHandleError) {
|
||||||
body, code, err := request("/v2"+s.tenant.prefix+"/"+s.tenant.tenantID+s.prefix, "GET", nil)
|
body, code, err := request("/v2"+s.tenant.prefix+"/"+s.tenant.tenantID+"/"+s.prefix, "GET", nil)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, util.CreateAPIHandleError(code,err)
|
return nil, util.CreateAPIHandleError(code,err)
|
||||||
}
|
}
|
||||||
if code != 200 {
|
if code != 200 {
|
||||||
return nil, util.CreateAPIHandleError(code,fmt.Errorf("Get database center configs code %d", code))
|
return nil, util.CreateAPIHandleError(code,fmt.Errorf("Get with code %d", code))
|
||||||
}
|
}
|
||||||
var res utilhttp.ResponseBody
|
var res utilhttp.ResponseBody
|
||||||
var gc []*model.ServiceStruct
|
var gc []*model.ServiceStruct
|
||||||
res.List = &gc
|
res.List = gc
|
||||||
|
logrus.Infof("res is %v",res)
|
||||||
if err := ffjson.Unmarshal(body, &res); err != nil {
|
if err := ffjson.Unmarshal(body, &res); err != nil {
|
||||||
return nil, util.CreateAPIHandleError(code,err)
|
return nil, util.CreateAPIHandleError(code,err)
|
||||||
}
|
}
|
||||||
|
logrus.Infof("after unmarshal res is %v",res)
|
||||||
if gc, ok := res.List.([]*model.ServiceStruct); ok {
|
if gc, ok := res.List.([]*model.ServiceStruct); ok {
|
||||||
return gc, nil
|
return gc, nil
|
||||||
|
}else{
|
||||||
|
c:=res.List.([]*model.ServiceStruct)
|
||||||
|
logrus.Infof("response is %v",c)
|
||||||
}
|
}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
func (s *services) Stop(name, eventID string) *util.APIHandleError {
|
func (s *services) Stop(name, eventID string) *util.APIHandleError {
|
||||||
data := []byte(`{"event_id":"` + eventID + `"}`)
|
data := []byte(`{"event_id":"` + eventID + `"}`)
|
||||||
_, code, err := request("/v2"+s.tenant.prefix+"/"+s.tenant.tenantID+s.prefix+name+"/stop", "POST", data)
|
_, code, err := request("/v2"+s.tenant.prefix+"/"+s.tenant.tenantID+"/"+s.prefix+"/"+name+"/stop", "POST", data)
|
||||||
return handleErrAndCode(err,code)
|
return handleErrAndCode(err,code)
|
||||||
}
|
}
|
||||||
func (s *services) Start(name, eventID string) *util.APIHandleError {
|
func (s *services) Start(name, eventID string) *util.APIHandleError {
|
||||||
data := []byte(`{"event_id":"` + eventID + `"}`)
|
data := []byte(`{"event_id":"` + eventID + `"}`)
|
||||||
_, code, err := request("/v2"+s.tenant.prefix+"/"+s.tenant.tenantID+s.prefix+name+"/start", "POST", data)
|
_, code, err := request("/v2"+s.tenant.prefix+"/"+s.tenant.tenantID+"/"+s.prefix+"/"+name+"/start", "POST", data)
|
||||||
return handleErrAndCode(err,code)
|
return handleErrAndCode(err,code)
|
||||||
}
|
}
|
||||||
|
|
||||||
func request(url, method string, body []byte) ([]byte, int, error) {
|
func request(url, method string, body []byte) ([]byte, int, error) {
|
||||||
|
logrus.Infof("req url is %s",region.regionAPI+url)
|
||||||
request, err := http.NewRequest(method, region.regionAPI+url, bytes.NewBuffer(body))
|
request, err := http.NewRequest(method, region.regionAPI+url, bytes.NewBuffer(body))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, 500, err
|
return nil, 500, err
|
||||||
|
@ -204,13 +204,14 @@ func Status(task string, nodes []string) {
|
|||||||
checkFail += 1
|
checkFail += 1
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
status,error:=clients.NodeClient.Tasks().Status(task)
|
//status,error:=clients.NodeClient.Tasks().Status(task)
|
||||||
if error != nil||status==nil {
|
status,err:=clients.NodeClient.Tasks().HandleTaskStatus(task)
|
||||||
logrus.Warnf("error get task %s status,retry",task)
|
if err != nil||status==nil {
|
||||||
|
logrus.Warnf("error get task %s status,details %s,retry",task,err.String())
|
||||||
checkFail+=1
|
checkFail+=1
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
for k,v:=range status.Status{
|
for k,v:=range *status{
|
||||||
//不是当前任务需要检测的status
|
//不是当前任务需要检测的status
|
||||||
if !set[k] {
|
if !set[k] {
|
||||||
fmt.Print("..")
|
fmt.Print("..")
|
||||||
|
@ -40,7 +40,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func handleErr(err *util.APIHandleError) {
|
func handleErr(err *util.APIHandleError) {
|
||||||
if err != nil {
|
if err != nil&&err.Err!=nil {
|
||||||
fmt.Println(err.String())
|
fmt.Println(err.String())
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ func NewCmdTenant() cli.Command {
|
|||||||
},
|
},
|
||||||
cli.Command{
|
cli.Command{
|
||||||
Name: "batchstop",
|
Name: "batchstop",
|
||||||
Usage: "批量停止租户应用。grctl service batchstop tenant_name",
|
Usage: "批量停止租户应用。grctl tenant batchstop tenant_name",
|
||||||
Flags: []cli.Flag{
|
Flags: []cli.Flag{
|
||||||
cli.BoolFlag{
|
cli.BoolFlag{
|
||||||
Name: "f",
|
Name: "f",
|
||||||
|
Loading…
Reference in New Issue
Block a user