mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 05:00:25 +08:00 
			
		
		
		
	实现健康检查配置、立即执行健康检查
This commit is contained in:
		@@ -73,9 +73,10 @@ func (this *IndexAction) RunGet(params struct {
 | 
			
		||||
		ipAddresses := []maps.Map{}
 | 
			
		||||
		for _, addr := range ipAddressesResp.Addresses {
 | 
			
		||||
			ipAddresses = append(ipAddresses, maps.Map{
 | 
			
		||||
				"id":   addr.Id,
 | 
			
		||||
				"name": addr.Name,
 | 
			
		||||
				"ip":   addr.Ip,
 | 
			
		||||
				"id":        addr.Id,
 | 
			
		||||
				"name":      addr.Name,
 | 
			
		||||
				"ip":        addr.Ip,
 | 
			
		||||
				"canAccess": addr.CanAccess,
 | 
			
		||||
			})
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -60,9 +60,10 @@ func (this *NodeAction) RunGet(params struct {
 | 
			
		||||
	ipAddressMaps := []maps.Map{}
 | 
			
		||||
	for _, addr := range ipAddressesResp.Addresses {
 | 
			
		||||
		ipAddressMaps = append(ipAddressMaps, maps.Map{
 | 
			
		||||
			"id":   addr.Id,
 | 
			
		||||
			"name": addr.Name,
 | 
			
		||||
			"ip":   addr.Ip,
 | 
			
		||||
			"id":        addr.Id,
 | 
			
		||||
			"name":      addr.Name,
 | 
			
		||||
			"ip":        addr.Ip,
 | 
			
		||||
			"canAccess": addr.CanAccess,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes/grants/grantutils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes/ipAddresses/ipaddressutils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
	"github.com/iwind/TeaGo/actions"
 | 
			
		||||
	"github.com/iwind/TeaGo/maps"
 | 
			
		||||
@@ -51,9 +52,10 @@ func (this *UpdateAction) RunGet(params struct {
 | 
			
		||||
	ipAddressMaps := []maps.Map{}
 | 
			
		||||
	for _, addr := range ipAddressesResp.Addresses {
 | 
			
		||||
		ipAddressMaps = append(ipAddressMaps, maps.Map{
 | 
			
		||||
			"id":   addr.Id,
 | 
			
		||||
			"name": addr.Name,
 | 
			
		||||
			"ip":   addr.Ip,
 | 
			
		||||
			"id":        addr.Id,
 | 
			
		||||
			"name":      addr.Name,
 | 
			
		||||
			"ip":        addr.Ip,
 | 
			
		||||
			"canAccess": addr.CanAccess,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -128,16 +130,16 @@ func (this *UpdateAction) RunGet(params struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *UpdateAction) RunPost(params struct {
 | 
			
		||||
	LoginId     int64
 | 
			
		||||
	NodeId      int64
 | 
			
		||||
	Name        string
 | 
			
		||||
	IPAddresses string `alias:"ipAddresses"`
 | 
			
		||||
	ClusterId   int64
 | 
			
		||||
	GrantId     int64
 | 
			
		||||
	SshHost     string
 | 
			
		||||
	SshPort     int
 | 
			
		||||
	MaxCPU      int32
 | 
			
		||||
	IsOn        bool
 | 
			
		||||
	LoginId         int64
 | 
			
		||||
	NodeId          int64
 | 
			
		||||
	Name            string
 | 
			
		||||
	IPAddressesJSON []byte `alias:"ipAddressesJSON"`
 | 
			
		||||
	ClusterId       int64
 | 
			
		||||
	GrantId         int64
 | 
			
		||||
	SshHost         string
 | 
			
		||||
	SshPort         int
 | 
			
		||||
	MaxCPU          int32
 | 
			
		||||
	IsOn            bool
 | 
			
		||||
 | 
			
		||||
	Must *actions.Must
 | 
			
		||||
}) {
 | 
			
		||||
@@ -188,23 +190,11 @@ func (this *UpdateAction) RunPost(params struct {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 添加新的IP地址
 | 
			
		||||
	ipAddresses := []maps.Map{}
 | 
			
		||||
	err = json.Unmarshal([]byte(params.IPAddresses), &ipAddresses)
 | 
			
		||||
	err = ipaddressutils.UpdateNodeIPAddresses(this.Parent(), params.NodeId, params.IPAddressesJSON)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	for _, address := range ipAddresses {
 | 
			
		||||
		addressId := address.GetInt64("id")
 | 
			
		||||
		_, err = this.RPC().NodeIPAddressRPC().UpdateNodeIPAddressNodeId(this.AdminContext(), &pb.UpdateNodeIPAddressNodeIdRequest{
 | 
			
		||||
			AddressId: addressId,
 | 
			
		||||
			NodeId:    params.NodeId,
 | 
			
		||||
		})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			this.ErrorPage(err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	this.Success()
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,63 @@
 | 
			
		||||
package settings
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
			
		||||
	"github.com/iwind/TeaGo/actions"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type HealthAction struct {
 | 
			
		||||
	actionutils.ParentAction
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *HealthAction) Init() {
 | 
			
		||||
	this.Nav("", "setting", "")
 | 
			
		||||
	this.SecondMenu("health")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *HealthAction) RunGet(params struct {
 | 
			
		||||
	ClusterId int64
 | 
			
		||||
}) {
 | 
			
		||||
	configResp, err := this.RPC().NodeClusterRPC().FindNodeClusterHealthCheckConfig(this.AdminContext(), &pb.FindNodeClusterHealthCheckConfigRequest{ClusterId: params.ClusterId})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	var config *serverconfigs.HealthCheckConfig = nil
 | 
			
		||||
	if len(configResp.HealthCheckConfig) > 0 {
 | 
			
		||||
		config = &serverconfigs.HealthCheckConfig{}
 | 
			
		||||
		err = json.Unmarshal(configResp.HealthCheckConfig, config)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			this.ErrorPage(err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	this.Data["healthCheckConfig"] = config
 | 
			
		||||
	this.Show()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *HealthAction) RunPost(params struct {
 | 
			
		||||
	ClusterId       int64
 | 
			
		||||
	HealthCheckJSON []byte
 | 
			
		||||
	Must            *actions.Must
 | 
			
		||||
}) {
 | 
			
		||||
	config := &serverconfigs.HealthCheckConfig{}
 | 
			
		||||
	err := json.Unmarshal(params.HealthCheckJSON, config)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, err = this.RPC().NodeClusterRPC().UpdateNodeClusterHealthCheck(this.AdminContext(), &pb.UpdateNodeClusterHealthCheckRequest{
 | 
			
		||||
		ClusterId:       params.ClusterId,
 | 
			
		||||
		HealthCheckJSON: params.HealthCheckJSON,
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	this.Success()
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,34 @@
 | 
			
		||||
package settings
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
	"github.com/iwind/TeaGo/actions"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type HealthRunAction struct {
 | 
			
		||||
	actionutils.ParentAction
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *HealthRunAction) Init() {
 | 
			
		||||
	this.Nav("", "", "")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *HealthRunAction) RunGet(params struct{}) {
 | 
			
		||||
 | 
			
		||||
	this.Show()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *HealthRunAction) RunPost(params struct {
 | 
			
		||||
	ClusterId int64
 | 
			
		||||
 | 
			
		||||
	Must *actions.Must
 | 
			
		||||
}) {
 | 
			
		||||
	resp, err := this.RPC().NodeClusterRPC().ExecuteNodeClusterHealthCheck(this.AdminContext(), &pb.ExecuteNodeClusterHealthCheckRequest{ClusterId: params.ClusterId})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.Fail(err.Error())
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	this.Data["results"] = resp.Results
 | 
			
		||||
	this.Success()
 | 
			
		||||
}
 | 
			
		||||
@@ -13,6 +13,8 @@ func init() {
 | 
			
		||||
			Helper(clusters.NewClusterHelper()).
 | 
			
		||||
			Prefix("/clusters/cluster/settings").
 | 
			
		||||
			GetPost("", new(IndexAction)).
 | 
			
		||||
			GetPost("/health", new(HealthAction)).
 | 
			
		||||
			GetPost("/healthRun", new(HealthRunAction)).
 | 
			
		||||
			EndAll()
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -84,5 +84,10 @@ func (this *ClusterHelper) createSettingMenu(clusterId string, selectedItem stri
 | 
			
		||||
		"url":      "/clusters/cluster/settings?clusterId=" + clusterId,
 | 
			
		||||
		"isActive": selectedItem == "basic",
 | 
			
		||||
	})
 | 
			
		||||
	items = append(items, maps.Map{
 | 
			
		||||
		"name":     "健康检查",
 | 
			
		||||
		"url":      "/clusters/cluster/settings/health?clusterId=" + clusterId,
 | 
			
		||||
		"isActive": selectedItem == "health",
 | 
			
		||||
	})
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user