mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 05:00:25 +08:00 
			
		
		
		
	实现远程卸载节点功能
This commit is contained in:
		@@ -48,6 +48,7 @@ func init() {
 | 
			
		||||
			Get("/logs", new(node.LogsAction)).
 | 
			
		||||
			Post("/start", new(node.StartAction)).
 | 
			
		||||
			Post("/stop", new(node.StopAction)).
 | 
			
		||||
			Post("/uninstall", new(node.UninstallAction)).
 | 
			
		||||
			Post("/up", new(node.UpAction)).
 | 
			
		||||
			Post("/updateIsOn", new(node.UpdateIsOnAction)).
 | 
			
		||||
			Get("/detail", new(node.DetailAction)).
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,32 @@
 | 
			
		||||
// Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
 | 
			
		||||
 | 
			
		||||
package node
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type UninstallAction struct {
 | 
			
		||||
	actionutils.ParentAction
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *UninstallAction) RunPost(params struct {
 | 
			
		||||
	NodeId int64
 | 
			
		||||
}) {
 | 
			
		||||
	resp, err := this.RPC().NodeRPC().UninstallNode(this.AdminContext(), &pb.UninstallNodeRequest{NodeId: params.NodeId})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 创建日志
 | 
			
		||||
	defer this.CreateLogInfo(codes.Node_LogUninstallNodeRemotely, params.NodeId)
 | 
			
		||||
 | 
			
		||||
	if resp.IsOk {
 | 
			
		||||
		this.Success()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	this.Fail("执行失败:" + resp.Error)
 | 
			
		||||
}
 | 
			
		||||
@@ -321,8 +321,12 @@
 | 
			
		||||
		<tr>
 | 
			
		||||
			<td>已安装</td>
 | 
			
		||||
			<td>
 | 
			
		||||
				<span v-if="node.isInstalled" class="green">已安装</span>
 | 
			
		||||
				<span v-if="node.isInstalled" class="green">已安装   <a href="" @click.prevent="showMoreOps"><span class="small">[操作]</span></a></span>
 | 
			
		||||
				<a v-else :href="'/clusters/cluster/installNode?clusterId=' + clusterId + '&nodeId=' + nodeId" class="underline" title="点击进入安装界面"><span class="red">未安装</span></a>
 | 
			
		||||
			</td>
 | 
			
		||||
		</tr>
 | 
			
		||||
        <tr v-show="moreOpsVisible && node.isInstalled">
 | 
			
		||||
            <td>操作</td>
 | 
			
		||||
            <td><a href="" @click.prevent="uninstallNode">[卸载]</a> </td>
 | 
			
		||||
        </tr>
 | 
			
		||||
	</table>
 | 
			
		||||
@@ -36,4 +36,24 @@ Tea.context(function () {
 | 
			
		||||
	this.round = function (f) {
 | 
			
		||||
		return Math.round(f * 100) / 100
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	this.moreOpsVisible = false
 | 
			
		||||
	this.showMoreOps = function () {
 | 
			
		||||
		this.moreOpsVisible = !this.moreOpsVisible
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	this.uninstallNode = function () {
 | 
			
		||||
		let that = this
 | 
			
		||||
		teaweb.confirm("html:确定要卸载当前节点吗?<br/>此操作将会删除节点上除缓存以外的相关文件。", function () {
 | 
			
		||||
			that.$post("/clusters/cluster/node/uninstall")
 | 
			
		||||
				.params({
 | 
			
		||||
					nodeId: that.node.id
 | 
			
		||||
				})
 | 
			
		||||
				.success(function () {
 | 
			
		||||
					teaweb.success("执行成功", function () {
 | 
			
		||||
						teaweb.reload()
 | 
			
		||||
					})
 | 
			
		||||
				})
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
		Reference in New Issue
	
	Block a user