liuhaijun e94826ce29 add server
Change-Id: I0760f17f6a01c0121b59fcbfafc666032dbc30af
2024-09-19 09:44:15 +00:00

240 lines
6.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
}