240 lines
6.9 KiB
Go
240 lines
6.9 KiB
Go
package manage
|
||
|
||
import (
|
||
"bytes"
|
||
"encoding/json"
|
||
err1 "errors"
|
||
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/controller"
|
||
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/controller/v1/app_manage"
|
||
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/model"
|
||
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/model/app_manage/node"
|
||
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/model/app_manage/project_info"
|
||
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/pkg/errors"
|
||
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/pkg/request"
|
||
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/service/app_manage/common"
|
||
node2 "git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/service/app_manage/node"
|
||
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/service/app_manage/outgiving"
|
||
"github.com/gin-gonic/gin"
|
||
)
|
||
|
||
// GS4Z2X
|
||
func GetProjectPort(c *gin.Context) {
|
||
nodeId := c.PostForm("nodeId")
|
||
ids := c.PostForm("ids")
|
||
if nodeId == "" {
|
||
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!")
|
||
return
|
||
}
|
||
if ids == "" {
|
||
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!")
|
||
return
|
||
}
|
||
var idArray []string
|
||
err := json.Unmarshal([]byte(ids), &idArray)
|
||
if err != nil {
|
||
controller.FailCode(c, errors.ServerError, err, "请检查参数!")
|
||
return
|
||
}
|
||
if len(idArray) == 0 {
|
||
controller.FailCode(c, errors.ServerError, err, "请检查参数!")
|
||
return
|
||
}
|
||
n := &node.Node{}
|
||
n.Id = nodeId
|
||
err = n.GetById(n)
|
||
if err != nil {
|
||
controller.FailCode(c, errors.ServerError, err, "没有对应的节点")
|
||
return
|
||
}
|
||
jsonBody := make(map[string][]string)
|
||
jsonBody["ids"] = idArray
|
||
body, _ := json.Marshal(jsonBody)
|
||
resp, err := common.Request5(n, common.Manage_GetProjectPort, bytes.NewReader(body))
|
||
if err != nil {
|
||
controller.FailCode(c, errors.ServerError, err, "查询失败")
|
||
return
|
||
}
|
||
if !resp.IsBusinessSuccess() {
|
||
controller.FailCode(c, errors.ServerError, err1.New(resp.Result.Msg), resp.Result.Data)
|
||
return
|
||
}
|
||
controller.Success(c, resp.Result.Data)
|
||
}
|
||
|
||
type ProjectPageBody struct {
|
||
PageInfo *request.PageInfo `json:"pageInfo" binding:"required"`
|
||
NodeId string `json:"nodeId"`
|
||
Group string `json:"group"`
|
||
Keyword string `json:"keyword"`
|
||
RunMode string `json:"runMode"`
|
||
}
|
||
|
||
func PageProject(c *gin.Context) {
|
||
var pageBody ProjectPageBody
|
||
err := c.ShouldBindJSON(&pageBody)
|
||
if err != nil {
|
||
controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!")
|
||
return
|
||
}
|
||
if pageBody.NodeId == "" {
|
||
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!")
|
||
return
|
||
}
|
||
p := project_info.New()
|
||
fields := map[string]interface{}{}
|
||
fields["node_id"] = pageBody.NodeId
|
||
|
||
if len(pageBody.Group) > 0 {
|
||
fields["\"group\""] = pageBody.Group
|
||
}
|
||
if len(pageBody.RunMode) > 0 {
|
||
fields["run_mode"] = pageBody.RunMode
|
||
}
|
||
|
||
workspaceId := app_manage.GetWorkspaceId(c)
|
||
fields["workspace_id"] = workspaceId
|
||
|
||
page := &model.PageConfig{}
|
||
page.Covert(pageBody.PageInfo)
|
||
result, err := p.Page(p, page, fields)
|
||
if err != nil {
|
||
controller.FailCode(c, errors.ServerError, err, "内部错误!")
|
||
return
|
||
}
|
||
page.Data = result
|
||
controller.Success(c, page)
|
||
}
|
||
|
||
func DeleteProject(c *gin.Context) {
|
||
bodyToMap := request.GetBodyToMap(c)
|
||
|
||
n, err := app_manage.TryGetNode(bodyToMap)
|
||
if err != nil {
|
||
return
|
||
}
|
||
|
||
projectId, _ := bodyToMap["id"].(string)
|
||
if projectId == "" {
|
||
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数:projectId!")
|
||
return
|
||
}
|
||
workspaceId := app_manage.GetWorkspaceId(c)
|
||
|
||
err = outgiving.CheckNodeProject(n.Id, projectId, workspaceId, "当前项目存在节点分发,不能直接删除")
|
||
if err != nil {
|
||
controller.FailCode(c, errors.ServerError, err, "当前项目存在节点分发,不能直接删除")
|
||
return
|
||
}
|
||
|
||
// todo 检查日志阅读 项目监控
|
||
// logReadServer.checkNodeProject(nodeModel.getId(), id, request, "当前项目存在日志阅读,不能直接删除");
|
||
resp := app_manage.TryRequestNode("", bodyToMap, common.Manage_DeleteProject)
|
||
if resp.Result.Code == errors.SUCCESS {
|
||
node2.SyncExecuteNode(n)
|
||
controller.Success(c, resp.Result.Data)
|
||
return
|
||
}
|
||
|
||
controller.Fail(c, errors.ServerError, resp.Result.Msg)
|
||
|
||
}
|
||
|
||
func StartProject(c *gin.Context) {
|
||
nodeId := c.PostForm("nodeId")
|
||
id := c.PostForm("id")
|
||
if nodeId == "" {
|
||
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数:nodeId!")
|
||
return
|
||
}
|
||
if id == "" {
|
||
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数:id!")
|
||
return
|
||
}
|
||
n := &node.Node{}
|
||
n.Id = nodeId
|
||
err := n.GetById(n)
|
||
if err != nil {
|
||
controller.FailCode(c, errors.ServerError, err, "没有对应的节点")
|
||
return
|
||
}
|
||
jsonBody := make(map[string]string)
|
||
jsonBody["id"] = id
|
||
body, _ := json.Marshal(jsonBody)
|
||
resp, err := common.Request5(n, common.Manage_StartProject, bytes.NewReader(body))
|
||
if err != nil {
|
||
controller.FailCode(c, errors.ServerError, err, "下载失败")
|
||
return
|
||
}
|
||
if !resp.IsBusinessSuccess() {
|
||
controller.FailCode(c, errors.ServerError, err1.New(resp.Result.Msg), resp.Result.Data)
|
||
return
|
||
}
|
||
controller.Success(c, resp.Result.Data)
|
||
}
|
||
|
||
func StopProject(c *gin.Context) {
|
||
nodeId := c.PostForm("nodeId")
|
||
id := c.PostForm("id")
|
||
if nodeId == "" {
|
||
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!")
|
||
return
|
||
}
|
||
if id == "" {
|
||
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!")
|
||
return
|
||
}
|
||
n := &node.Node{}
|
||
n.Id = nodeId
|
||
err := n.GetById(n)
|
||
if err != nil {
|
||
controller.FailCode(c, errors.ServerError, err, "没有对应的节点")
|
||
return
|
||
}
|
||
jsonBody := make(map[string]string)
|
||
jsonBody["id"] = id
|
||
body, _ := json.Marshal(jsonBody)
|
||
resp, err := common.Request5(n, common.Manage_StopProject, bytes.NewReader(body))
|
||
if err != nil {
|
||
controller.FailCode(c, errors.ServerError, err, "下载失败")
|
||
return
|
||
}
|
||
if !resp.IsBusinessSuccess() {
|
||
controller.FailCode(c, errors.ServerError, err1.New(resp.Result.Msg), resp.Result.Data)
|
||
return
|
||
}
|
||
controller.Success(c, resp.Result.Data)
|
||
}
|
||
|
||
func RestartProject(c *gin.Context) {
|
||
nodeId := c.PostForm("nodeId")
|
||
id := c.PostForm("id")
|
||
if nodeId == "" {
|
||
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!")
|
||
return
|
||
}
|
||
if id == "" {
|
||
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!")
|
||
return
|
||
}
|
||
n := &node.Node{}
|
||
n.Id = nodeId
|
||
err := n.GetById(n)
|
||
if err != nil {
|
||
controller.FailCode(c, errors.ServerError, err, "没有对应的节点")
|
||
return
|
||
}
|
||
jsonBody := make(map[string]string)
|
||
jsonBody["id"] = id
|
||
body, _ := json.Marshal(jsonBody)
|
||
resp, err := common.Request5(n, common.Manage_RestartProject, bytes.NewReader(body))
|
||
if err != nil {
|
||
controller.FailCode(c, errors.ServerError, err, "下载失败")
|
||
return
|
||
}
|
||
if !resp.IsBusinessSuccess() {
|
||
controller.FailCode(c, errors.ServerError, err1.New(resp.Result.Msg), resp.Result.Data)
|
||
return
|
||
}
|
||
controller.Success(c, resp.Result.Data)
|
||
}
|