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

303 lines
7.8 KiB
Go

package node
import (
"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"
node2 "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/out_giving"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/model/app_manage/project_info"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/model/app_manage/script_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"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/validator"
"github.com/gin-gonic/gin"
"strings"
)
func GetAllNodesByWorkspaceId(c *gin.Context) {
workspaceId := c.Query("workspaceId")
if workspaceId == "" {
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!")
return
}
n := node2.New()
fields := map[string]interface{}{}
fields["workspace_id"] = workspaceId
result, err := n.GetAll(n, fields, nil)
if err != nil {
controller.FailCode(c, errors.InvalidParameter, err, "无法查找到对象!")
return
}
controller.Success(c, result)
}
type NodePageBody struct {
PageInfo *request.PageInfo `json:"pageInfo" binding:"required"`
WorkspaceId string `json:"workspaceId"`
Name string `json:"name"`
Group string `json:"group"`
Keyword string `json:"keyword"`
}
func PageNodesByWorkspaceId(c *gin.Context) {
var pageBody NodePageBody
err := c.ShouldBindJSON(&pageBody)
if err != nil {
controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!")
return
}
if pageBody.WorkspaceId == "" {
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!")
return
}
n := node2.New()
fields := map[string]interface{}{}
fields["workspace_id"] = pageBody.WorkspaceId
if pageBody.Name != "" {
fields["name"] = pageBody.Name
}
if pageBody.Group != "" {
fields["\"group\""] = pageBody.Group
}
page := &model.PageConfig{}
page.Covert(pageBody.PageInfo)
result, err := n.Page(n, page, fields)
if err != nil {
controller.FailCode(c, errors.ServerError, err, "内部错误!")
return
}
nodes := result.([]node2.Node)
if len(nodes) > 0 {
for i, node := range nodes {
m := &node2.MachineNode{}
m.Id = node.MachineId
err = m.GetById(m)
projects, _ := project_info.GetProjectByNodeId(node.Id)
scripts, err := script_info.GetNodeScriptByNodeId(node.Id)
if err == nil {
m.CfnAgentProjectCount = len(projects)
m.CfnAgentScriptCount = len(scripts)
nodes[i].MachineNodeData = m
}
}
}
page.Data = nodes
controller.Success(c, page)
}
func SyncToWorkspace(c *gin.Context) {
ids := c.Query("ids")
if ids == "" {
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!")
return
}
workspaceId := c.Query("workspaceId")
if workspaceId == "" {
controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!")
return
}
fields := map[string]interface{}{}
idArray := strings.Split(ids, ",")
username := service.GetUserName(c)
for _, id := range idArray {
nd := node2.New()
nd.Id = id
err := nd.GetById(nd)
if err != nil {
controller.FailCode(c, errors.InvalidParameter, nil, "节点不存在!")
return
}
fields = map[string]interface{}{}
fields["workspace_id"] = workspaceId
fields["machine_id"] = nd.MachineId
result, _ := nd.GetAll(nd, fields, nil)
if len(result.([]node2.Node)) > 0 {
controller.FailCode(c, errors.InvalidParameter, nil, "目标工作空间已存在该节点!")
return
}
nd.Id = ""
nd.WorkspaceId = workspaceId
nd.CreateUser = username
nd.ModifyUser = username
nd.LoginName = ""
nd.Url = ""
nd.LoginPwd = ""
nd.Protocol = ""
nd.HttpProxy = ""
nd.HttpProxyType = ""
_, err = nd.Create(nd)
if err != nil {
controller.FailCode(c, errors.ServerError, err, "内部错误!")
return
}
}
controller.Success(c, "")
}
func EditNode(c *gin.Context) {
n := &node2.Node{}
err := validator.CheckPostParams(c, n)
if err != nil {
controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!")
return
}
n1 := &node2.Node{}
err = n.GetById(n1)
if err != nil {
controller.FailCode(c, errors.InvalidParameter, err, "无法查找到对象!")
return
}
n.ModifyUser = service.GetUserName(c)
_, err = n.Update(n, nil)
if err != nil {
controller.FailCode(c, errors.ServerError, err, "数据库错误!")
return
}
// TODO projectInfoCacheService.syncNode(nodeModel);
controller.Success(c, "")
}
func ListNodeGroup(c *gin.Context) {
n := &node2.Node{}
result, _ := n.ListGroup()
controller.Success(c, result)
}
type UnbindNodeBody struct {
Id string `json:"id"`
}
func UnbindNode(c *gin.Context) {
var body UnbindNodeBody
err := c.ShouldBindJSON(&body)
id := body.Id
if id == "" {
controller.Fail(c, errors.InvalidParameter, "id为空")
return
}
workspaceId := app_manage.GetWorkspaceId(c)
//
{
exists, _ := out_giving.ExistsOutGivingModel(workspaceId, id)
if exists {
controller.FailCode(c, errors.InvalidParameter, nil, "该节点存在分发项目,不能删除")
return
}
}
{
exists, _ := project_info.Exists_1(workspaceId, id)
if exists {
controller.FailCode(c, errors.InvalidParameter, nil, "该节点下还存在项目,不能删除")
return
}
}
{
exists, _ := script_info.ExistsNodeScriptCacheModel(workspaceId, id)
if exists {
controller.FailCode(c, errors.InvalidParameter, nil, "该节点下还存在脚本模版,不能删除")
return
}
}
n := &node2.Node{}
n.Id = id
err = n.GetById(n)
if err != nil {
controller.FailCode(c, errors.InvalidParameter, err, "无法查找到对象!")
return
}
_, err = n.Delete(n)
if err != nil {
controller.FailCode(c, errors.ServerError, err, "数据库错误!")
return
}
script_info.DeleteNodeScriptExecuteLogByNodeIdAndWorkspaceIds(id, []string{workspaceId, "GLOBAL"})
controller.Success(c, "")
}
func DeleteNode(c *gin.Context) {
id := c.PostForm("id")
if id == "" {
controller.Success(c, "")
return
}
workspaceId := app_manage.GetWorkspaceId(c)
//
{
exists, _ := out_giving.ExistsOutGivingModel(workspaceId, id)
if exists {
controller.FailCode(c, errors.InvalidParameter, nil, "该节点存在分发项目,不能删除")
return
}
}
_, err := project_info.DeleteProjectByNodeIdAndWorkspaceId(id, workspaceId)
if err != nil {
controller.FailCode(c, errors.ServerError, err, "删除项目失败!")
return
}
_, err = script_info.DeleteNodeScriptByNodeIdAndWorkspaceId(id, workspaceId)
if err != nil {
controller.FailCode(c, errors.ServerError, err, "删除脚本失败!")
return
}
n := &node2.Node{}
n.Id = id
err = n.GetById(n)
if err != nil {
controller.FailCode(c, errors.InvalidParameter, err, "无法查找到对象!")
return
}
_, err = n.Delete(n)
if err != nil {
controller.FailCode(c, errors.ServerError, err, "数据库错误!")
return
}
script_info.DeleteNodeScriptExecuteLogByNodeIdAndWorkspaceIds(id, []string{workspaceId, "GLOBAL"})
controller.Success(c, "")
}
func SortItem(c *gin.Context) {
/*n := &node.Node{}
err := validator.CheckPostParams(c, n)
if err != nil {
controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!")
return
}
fields := map[string]interface{}{}
fields["id"] = n.Id
_, err = n.Get(fields)
if err != nil {
controller.FailCode(c, errors.InvalidParameter, err, "无法查找到对象!")
return
}
userName := service.GetUserName(c)
n.ModifyUser = userName
var updateColumns []string
_, err = n.Update(updateColumns)
if err != nil {
controller.FailCode(c, errors.ServerError, err, "数据库错误!")
return
}
controller.Success(c, "")*/
}