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, "")*/ }