303 lines
7.8 KiB
Go
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, "")*/
|
|
}
|