mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 05:00:25 +08:00 
			
		
		
		
	可以在集群中查看待安装节点、并直接安装节点
This commit is contained in:
		
							
								
								
									
										119
									
								
								internal/web/actions/default/clusters/cluster/updateNodeSSH.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								internal/web/actions/default/clusters/cluster/updateNodeSSH.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,119 @@
 | 
			
		||||
package cluster
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/grants/grantutils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
	"github.com/iwind/TeaGo/actions"
 | 
			
		||||
	"github.com/iwind/TeaGo/maps"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type UpdateNodeSSHAction struct {
 | 
			
		||||
	actionutils.ParentAction
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *UpdateNodeSSHAction) Init() {
 | 
			
		||||
	this.Nav("", "", "")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *UpdateNodeSSHAction) RunGet(params struct {
 | 
			
		||||
	NodeId int64
 | 
			
		||||
}) {
 | 
			
		||||
	nodeResp, err := this.RPC().NodeRPC().FindEnabledNode(this.AdminContext(), &pb.FindEnabledNodeRequest{NodeId: params.NodeId})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	if nodeResp.Node == nil {
 | 
			
		||||
		this.NotFound("node", params.NodeId)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	node := nodeResp.Node
 | 
			
		||||
	this.Data["node"] = maps.Map{
 | 
			
		||||
		"id":   node.Id,
 | 
			
		||||
		"name": node.Name,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// SSH
 | 
			
		||||
	loginParams := maps.Map{
 | 
			
		||||
		"host":    "",
 | 
			
		||||
		"port":    "",
 | 
			
		||||
		"grantId": 0,
 | 
			
		||||
	}
 | 
			
		||||
	this.Data["loginId"] = 0
 | 
			
		||||
	if node.Login != nil {
 | 
			
		||||
		this.Data["loginId"] = node.Login.Id
 | 
			
		||||
		if len(node.Login.Params) > 0 {
 | 
			
		||||
			err = json.Unmarshal(node.Login.Params, &loginParams)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				this.ErrorPage(err)
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	this.Data["params"] = loginParams
 | 
			
		||||
 | 
			
		||||
	// 认证信息
 | 
			
		||||
	grantId := loginParams.GetInt64("grantId")
 | 
			
		||||
	grantResp, err := this.RPC().NodeGrantRPC().FindEnabledGrant(this.AdminContext(), &pb.FindEnabledGrantRequest{GrantId: grantId})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
	}
 | 
			
		||||
	var grantMap maps.Map = nil
 | 
			
		||||
	if grantResp.Grant != nil {
 | 
			
		||||
		grantMap = maps.Map{
 | 
			
		||||
			"id":         grantResp.Grant.Id,
 | 
			
		||||
			"name":       grantResp.Grant.Name,
 | 
			
		||||
			"method":     grantResp.Grant.Method,
 | 
			
		||||
			"methodName": grantutils.FindGrantMethodName(grantResp.Grant.Method),
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	this.Data["grant"] = grantMap
 | 
			
		||||
 | 
			
		||||
	this.Show()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *UpdateNodeSSHAction) RunPost(params struct {
 | 
			
		||||
	NodeId  int64
 | 
			
		||||
	LoginId int64
 | 
			
		||||
	SshHost string
 | 
			
		||||
	SshPort int
 | 
			
		||||
	GrantId int64
 | 
			
		||||
 | 
			
		||||
	Must *actions.Must
 | 
			
		||||
}) {
 | 
			
		||||
	params.Must.
 | 
			
		||||
		Field("sshHost", params.SshHost).
 | 
			
		||||
		Require("请输入SSH主机地址").
 | 
			
		||||
		Field("sshPort", params.SshPort).
 | 
			
		||||
		Gt(0, "SSH主机端口需要大于0").
 | 
			
		||||
		Lt(65535, "SSH主机端口需要小于65535")
 | 
			
		||||
 | 
			
		||||
	if params.GrantId <= 0 {
 | 
			
		||||
		this.Fail("需要选择或填写至少一个认证信息")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	login := &pb.NodeLogin{
 | 
			
		||||
		Id:   params.LoginId,
 | 
			
		||||
		Name: "SSH",
 | 
			
		||||
		Type: "ssh",
 | 
			
		||||
		Params: maps.Map{
 | 
			
		||||
			"grantId": params.GrantId,
 | 
			
		||||
			"host":    params.SshHost,
 | 
			
		||||
			"port":    params.SshPort,
 | 
			
		||||
		}.AsJSON(),
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, err := this.RPC().NodeRPC().UpdateNodeLogin(this.AdminContext(), &pb.UpdateNodeLoginRequest{
 | 
			
		||||
		NodeId: params.NodeId,
 | 
			
		||||
		Login:  login,
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	this.Success()
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user