From b7a694e99dab69927ea85b337b9a94eee34ab421 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Mon, 13 Sep 2021 16:47:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=8A=82=E7=82=B9=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/default/clusters/cluster/init.go | 12 +- .../default/clusters/cluster/node/index.go | 2 +- .../default/clusters/cluster/node/logs.go | 2 +- .../clusters/cluster/node/nodeutils/utils.go | 56 ++++- .../cluster/node/settings/cache/index.go | 117 +++++++++ .../cluster/node/settings/dns/index.go | 125 +++++++++ .../cluster/node/settings/ssh/index.go | 114 +++++++++ .../cluster/node/settings/system/index.go | 61 +++++ .../node/{ => settings}/thresholds/index.go | 10 +- .../default/clusters/cluster/node/status.go | 2 +- .../default/clusters/cluster/node/update.go | 238 ++---------------- .../js/components/dns/dns-route-selector.js | 13 + web/views/@default/@layout.css | 6 + web/views/@default/@layout.css.map | 2 +- web/views/@default/@left_menu.less | 7 + web/views/@default/@left_menu_with_menu.html | 9 + .../clusters/cluster/node/@node_menu.html | 1 - .../cluster/node/settings/cache/index.html | 27 ++ .../cluster/node/settings/cache/index.js | 3 + .../cluster/node/settings/dns/index.html | 23 ++ .../cluster/node/settings/dns/index.js | 3 + .../cluster/node/settings/ssh/index.html | 35 +++ .../cluster/node/settings/ssh/index.js | 30 +++ .../cluster/node/settings/system/index.html | 20 ++ .../cluster/node/settings/system/index.js | 3 + .../node/settings/thresholds/index.html | 41 +++ .../node/{ => settings}/thresholds/index.js | 2 +- .../cluster/node/thresholds/index.html | 37 --- .../clusters/cluster/node/update.html | 149 ++++------- .../@default/clusters/cluster/node/update.js | 36 +-- .../cluster/settings/thresholds/index.html | 2 +- .../ns/clusters/cluster/node/@node_menu.html | 2 - 32 files changed, 793 insertions(+), 397 deletions(-) create mode 100644 internal/web/actions/default/clusters/cluster/node/settings/cache/index.go create mode 100644 internal/web/actions/default/clusters/cluster/node/settings/dns/index.go create mode 100644 internal/web/actions/default/clusters/cluster/node/settings/ssh/index.go create mode 100644 internal/web/actions/default/clusters/cluster/node/settings/system/index.go rename internal/web/actions/default/clusters/cluster/node/{ => settings}/thresholds/index.go (93%) create mode 100644 web/views/@default/@left_menu_with_menu.html create mode 100644 web/views/@default/clusters/cluster/node/settings/cache/index.html create mode 100644 web/views/@default/clusters/cluster/node/settings/cache/index.js create mode 100644 web/views/@default/clusters/cluster/node/settings/dns/index.html create mode 100644 web/views/@default/clusters/cluster/node/settings/dns/index.js create mode 100644 web/views/@default/clusters/cluster/node/settings/ssh/index.html create mode 100644 web/views/@default/clusters/cluster/node/settings/ssh/index.js create mode 100644 web/views/@default/clusters/cluster/node/settings/system/index.html create mode 100644 web/views/@default/clusters/cluster/node/settings/system/index.js create mode 100644 web/views/@default/clusters/cluster/node/settings/thresholds/index.html rename web/views/@default/clusters/cluster/node/{ => settings}/thresholds/index.js (93%) delete mode 100644 web/views/@default/clusters/cluster/node/thresholds/index.html diff --git a/internal/web/actions/default/clusters/cluster/init.go b/internal/web/actions/default/clusters/cluster/init.go index 4d60c5b9..4fa933db 100644 --- a/internal/web/actions/default/clusters/cluster/init.go +++ b/internal/web/actions/default/clusters/cluster/init.go @@ -4,7 +4,11 @@ import ( "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/groups" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/node" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/node/thresholds" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/node/settings/cache" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/node/settings/dns" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/node/settings/ssh" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/node/settings/system" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/node/settings/thresholds" clusters "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/clusterutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" "github.com/iwind/TeaGo" @@ -42,10 +46,14 @@ func init() { Post("/start", new(node.StartAction)). Post("/stop", new(node.StopAction)). Post("/up", new(node.UpAction)). - Get("/thresholds", new(thresholds.IndexAction)). Get("/detail", new(node.DetailAction)). GetPost("/updateDNSPopup", new(node.UpdateDNSPopupAction)). Post("/syncDomain", new(node.SyncDomainAction)). + GetPost("/settings/cache", new(cache.IndexAction)). + GetPost("/settings/dns", new(dns.IndexAction)). + GetPost("/settings/system", new(system.IndexAction)). + GetPost("/settings/ssh", new(ssh.IndexAction)). + GetPost("/settings/thresholds", new(thresholds.IndexAction)). // 分组相关 Prefix("/clusters/cluster/groups"). diff --git a/internal/web/actions/default/clusters/cluster/node/index.go b/internal/web/actions/default/clusters/cluster/node/index.go index 5301c841..d5fe950f 100644 --- a/internal/web/actions/default/clusters/cluster/node/index.go +++ b/internal/web/actions/default/clusters/cluster/node/index.go @@ -20,7 +20,7 @@ func (this *IndexAction) Init() { func (this *IndexAction) RunGet(params struct { NodeId int64 }) { - err := nodeutils.InitNodeInfo(this, params.NodeId) + _, err := nodeutils.InitNodeInfo(this.Parent(), params.NodeId) if err != nil { this.ErrorPage(err) return diff --git a/internal/web/actions/default/clusters/cluster/node/logs.go b/internal/web/actions/default/clusters/cluster/node/logs.go index 205e7072..c387d1ea 100644 --- a/internal/web/actions/default/clusters/cluster/node/logs.go +++ b/internal/web/actions/default/clusters/cluster/node/logs.go @@ -25,7 +25,7 @@ func (this *LogsAction) RunGet(params struct { Level string }) { // 初始化节点信息(用于菜单) - err := nodeutils.InitNodeInfo(this, params.NodeId) + _, err := nodeutils.InitNodeInfo(this.Parent(), params.NodeId) if err != nil { this.ErrorPage(err) return diff --git a/internal/web/actions/default/clusters/cluster/node/nodeutils/utils.go b/internal/web/actions/default/clusters/cluster/node/nodeutils/utils.go index 5e296181..068b5ccd 100644 --- a/internal/web/actions/default/clusters/cluster/node/nodeutils/utils.go +++ b/internal/web/actions/default/clusters/cluster/node/nodeutils/utils.go @@ -7,28 +7,70 @@ import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/iwind/TeaGo/maps" + "github.com/iwind/TeaGo/types" "strconv" ) // InitNodeInfo 初始化节点信息 -func InitNodeInfo(action actionutils.ActionInterface, nodeId int64) error { +func InitNodeInfo(parentAction *actionutils.ParentAction, nodeId int64) (*pb.Node, error) { // 节点信息(用于菜单) - nodeResp, err := action.RPC().NodeRPC().FindEnabledNode(action.AdminContext(), &pb.FindEnabledNodeRequest{NodeId: nodeId}) + nodeResp, err := parentAction.RPC().NodeRPC().FindEnabledNode(parentAction.AdminContext(), &pb.FindEnabledNodeRequest{NodeId: nodeId}) if err != nil { - return err + return nil, err } if nodeResp.Node == nil { - return errors.New("node '" + strconv.FormatInt(nodeId, 10) + "' not found") + return nil, errors.New("node '" + strconv.FormatInt(nodeId, 10) + "' not found") } var node = nodeResp.Node - action.ViewData()["node"] = maps.Map{ + parentAction.Data["node"] = maps.Map{ "id": node.Id, "name": node.Name, "isOn": node.IsOn, "isUp": node.IsUp, } + var clusterId int64 = 0 if node.NodeCluster != nil { - action.ViewData()["clusterId"] = node.NodeCluster.Id + parentAction.Data["clusterId"] = node.NodeCluster.Id + clusterId = node.NodeCluster.Id } - return nil + + // 左侧菜单 + var prefix = "/clusters/cluster/node" + var query = "clusterId=" + types.String(clusterId) + "&nodeId=" + types.String(nodeId) + var menuItem = parentAction.Data.GetString("secondMenuItem") + + parentAction.Data["leftMenuItems"] = []maps.Map{ + { + "name": "基础设置", + "url": prefix + "/update?" + query, + "isActive": menuItem == "basic", + }, + { + "name": "DNS设置", + "url": prefix + "/settings/dns?" + query, + "isActive": menuItem == "dns", + }, + { + "name": "缓存设置", + "url": prefix + "/settings/cache?" + query, + "isActive": menuItem == "cache", + }, + { + "name": "阈值设置", + "url": prefix + "/settings/thresholds?" + query, + "isActive": menuItem == "threshold", + }, + { + "name": "SSH设置", + "url": prefix + "/settings/ssh?" + query, + "isActive": menuItem == "ssh", + }, + { + "name": "系统设置", + "url": prefix + "/settings/system?" + query, + "isActive": menuItem == "system", + }, + } + + return nodeResp.Node, nil } diff --git a/internal/web/actions/default/clusters/cluster/node/settings/cache/index.go b/internal/web/actions/default/clusters/cluster/node/settings/cache/index.go new file mode 100644 index 00000000..44b89bf0 --- /dev/null +++ b/internal/web/actions/default/clusters/cluster/node/settings/cache/index.go @@ -0,0 +1,117 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package cache + +import ( + "encoding/json" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/node/nodeutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/maps" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { + this.Nav("", "", "update") + this.SecondMenu("cache") +} + +func (this *IndexAction) RunGet(params struct { + NodeId int64 +}) { + node, err := nodeutils.InitNodeInfo(this.Parent(), params.NodeId) + if err != nil { + this.ErrorPage(err) + return + } + + // 缓存硬盘 & 内存容量 + var maxCacheDiskCapacity maps.Map = nil + if node.MaxCacheDiskCapacity != nil { + maxCacheDiskCapacity = maps.Map{ + "count": node.MaxCacheDiskCapacity.Count, + "unit": node.MaxCacheDiskCapacity.Unit, + } + } else { + maxCacheDiskCapacity = maps.Map{ + "count": 0, + "unit": "gb", + } + } + + var maxCacheMemoryCapacity maps.Map = nil + if node.MaxCacheMemoryCapacity != nil { + maxCacheMemoryCapacity = maps.Map{ + "count": node.MaxCacheMemoryCapacity.Count, + "unit": node.MaxCacheMemoryCapacity.Unit, + } + } else { + maxCacheMemoryCapacity = maps.Map{ + "count": 0, + "unit": "gb", + } + } + + var nodeMap = this.Data["node"].(maps.Map) + nodeMap["maxCacheDiskCapacity"] = maxCacheDiskCapacity + nodeMap["maxCacheMemoryCapacity"] = maxCacheMemoryCapacity + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + NodeId int64 + MaxCacheDiskCapacityJSON []byte + MaxCacheMemoryCapacityJSON []byte + + Must *actions.Must + CSRF *actionutils.CSRF +}) { + defer this.CreateLogInfo("修改节点 %d 缓存设置", params.NodeId) + + // 缓存硬盘 & 内存容量 + var pbMaxCacheDiskCapacity *pb.SizeCapacity + if len(params.MaxCacheDiskCapacityJSON) > 0 { + var sizeCapacity = &shared.SizeCapacity{} + err := json.Unmarshal(params.MaxCacheDiskCapacityJSON, sizeCapacity) + if err != nil { + this.ErrorPage(err) + return + } + pbMaxCacheDiskCapacity = &pb.SizeCapacity{ + Count: sizeCapacity.Count, + Unit: sizeCapacity.Unit, + } + } + + var pbMaxCacheMemoryCapacity *pb.SizeCapacity + if len(params.MaxCacheMemoryCapacityJSON) > 0 { + var sizeCapacity = &shared.SizeCapacity{} + err := json.Unmarshal(params.MaxCacheMemoryCapacityJSON, sizeCapacity) + if err != nil { + this.ErrorPage(err) + return + } + pbMaxCacheMemoryCapacity = &pb.SizeCapacity{ + Count: sizeCapacity.Count, + Unit: sizeCapacity.Unit, + } + } + + _, err := this.RPC().NodeRPC().UpdateNodeCache(this.AdminContext(), &pb.UpdateNodeCacheRequest{ + NodeId: params.NodeId, + MaxCacheDiskCapacity: pbMaxCacheDiskCapacity, + MaxCacheMemoryCapacity: pbMaxCacheMemoryCapacity, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/clusters/cluster/node/settings/dns/index.go b/internal/web/actions/default/clusters/cluster/node/settings/dns/index.go new file mode 100644 index 00000000..2f8095c2 --- /dev/null +++ b/internal/web/actions/default/clusters/cluster/node/settings/dns/index.go @@ -0,0 +1,125 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package dns + +import ( + "encoding/json" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/node/nodeutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/maps" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { + this.Nav("", "", "update") + this.SecondMenu("dns") +} + +func (this *IndexAction) RunGet(params struct { + NodeId int64 +}) { + node, err := nodeutils.InitNodeInfo(this.Parent(), params.NodeId) + if err != nil { + this.ErrorPage(err) + return + } + + // DNS相关 + var clusters = []*pb.NodeCluster{node.NodeCluster} + clusters = append(clusters, node.SecondaryNodeClusters...) + var allDNSRouteMaps = map[int64][]maps.Map{} // domain id => routes + var routeMaps = map[int64][]maps.Map{} // domain id => routes + for _, cluster := range clusters { + dnsInfoResp, err := this.RPC().NodeRPC().FindEnabledNodeDNS(this.AdminContext(), &pb.FindEnabledNodeDNSRequest{ + NodeId: params.NodeId, + NodeClusterId: cluster.Id, + }) + if err != nil { + this.ErrorPage(err) + return + } + var dnsInfo = dnsInfoResp.Node + if dnsInfo.DnsDomainId <= 0 || len(dnsInfo.DnsDomainName) == 0 { + continue + } + var domainId = dnsInfo.DnsDomainId + var domainName = dnsInfo.DnsDomainName + if len(dnsInfo.Routes) > 0 { + for _, route := range dnsInfo.Routes { + routeMaps[domainId] = append(routeMaps[domainId], maps.Map{ + "domainId": domainId, + "domainName": domainName, + "code": route.Code, + "name": route.Name, + }) + } + } + + // 所有线路选项 + routesResp, err := this.RPC().DNSDomainRPC().FindAllDNSDomainRoutes(this.AdminContext(), &pb.FindAllDNSDomainRoutesRequest{DnsDomainId: dnsInfoResp.Node.DnsDomainId}) + if err != nil { + this.ErrorPage(err) + return + } + for _, route := range routesResp.Routes { + allDNSRouteMaps[domainId] = append(allDNSRouteMaps[domainId], maps.Map{ + "domainId": domainId, + "domainName": domainName, + "name": route.Name, + "code": route.Code, + }) + } + } + + var domainRoutes = []maps.Map{} + for _, m := range routeMaps { + domainRoutes = append(domainRoutes, m...) + } + this.Data["dnsRoutes"] = domainRoutes + + var allDomainRoutes = []maps.Map{} + for _, m := range allDNSRouteMaps { + allDomainRoutes = append(allDomainRoutes, m...) + } + this.Data["allDNSRoutes"] = allDomainRoutes + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + NodeId int64 + DnsDomainId int64 + DnsRoutesJSON []byte + + Must *actions.Must + CSRF *actionutils.CSRF +}) { + defer this.CreateLogInfo("修改节点 %d DNS设置", params.NodeId) + + dnsRouteCodes := []string{} + if len(params.DnsRoutesJSON) > 0 { + err := json.Unmarshal(params.DnsRoutesJSON, &dnsRouteCodes) + if err != nil { + this.ErrorPage(err) + return + } + } + + _, err := this.RPC().NodeRPC().UpdateNodeDNS(this.AdminContext(), &pb.UpdateNodeDNSRequest{ + NodeId: params.NodeId, + IpAddr: "", + DnsDomainId: 0, + Routes: dnsRouteCodes, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/clusters/cluster/node/settings/ssh/index.go b/internal/web/actions/default/clusters/cluster/node/settings/ssh/index.go new file mode 100644 index 00000000..1cbd4c7c --- /dev/null +++ b/internal/web/actions/default/clusters/cluster/node/settings/ssh/index.go @@ -0,0 +1,114 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package ssh + +import ( + "encoding/json" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/node/nodeutils" + "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 IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { + this.Nav("", "", "update") + this.SecondMenu("ssh") +} + +func (this *IndexAction) RunGet(params struct { + NodeId int64 +}) { + node, err := nodeutils.InitNodeInfo(this.Parent(), params.NodeId) + if err != nil { + this.ErrorPage(err) + return + } + + // 登录信息 + var loginMap maps.Map = nil + if node.NodeLogin != nil { + loginParams := maps.Map{} + if len(node.NodeLogin.Params) > 0 { + err = json.Unmarshal(node.NodeLogin.Params, &loginParams) + if err != nil { + this.ErrorPage(err) + return + } + } + + grantMap := maps.Map{} + grantId := loginParams.GetInt64("grantId") + if grantId > 0 { + grantResp, err := this.RPC().NodeGrantRPC().FindEnabledNodeGrant(this.AdminContext(), &pb.FindEnabledNodeGrantRequest{NodeGrantId: grantId}) + if err != nil { + this.ErrorPage(err) + return + } + if grantResp.NodeGrant != nil { + grantMap = maps.Map{ + "id": grantResp.NodeGrant.Id, + "name": grantResp.NodeGrant.Name, + "method": grantResp.NodeGrant.Method, + "methodName": grantutils.FindGrantMethodName(grantResp.NodeGrant.Method), + "username": grantResp.NodeGrant.Username, + } + } + } + + loginMap = maps.Map{ + "id": node.NodeLogin.Id, + "name": node.NodeLogin.Name, + "type": node.NodeLogin.Type, + "params": loginParams, + "grant": grantMap, + } + } + + var nodeMap = this.Data["node"].(maps.Map) + nodeMap["login"] = loginMap + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + NodeId int64 + + LoginId int64 + GrantId int64 + SshHost string + SshPort int + + Must *actions.Must + CSRF *actionutils.CSRF +}) { + defer this.CreateLogInfo("修改节点 %d SSH登录信息", params.NodeId) + + // TODO 检查登录授权 + loginInfo := &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, + NodeLogin: loginInfo, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/clusters/cluster/node/settings/system/index.go b/internal/web/actions/default/clusters/cluster/node/settings/system/index.go new file mode 100644 index 00000000..405d4ce6 --- /dev/null +++ b/internal/web/actions/default/clusters/cluster/node/settings/system/index.go @@ -0,0 +1,61 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package system + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/node/nodeutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/maps" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { + this.Nav("", "", "update") + this.SecondMenu("system") +} + +func (this *IndexAction) RunGet(params struct { + NodeId int64 +}) { + node, err := nodeutils.InitNodeInfo(this.Parent(), params.NodeId) + if err != nil { + this.ErrorPage(err) + return + } + + // 获取节点信息 + var nodeMap = this.Data["node"].(maps.Map) + nodeMap["maxCPU"] = node.MaxCPU + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + NodeId int64 + MaxCPU int32 + + Must *actions.Must + CSRF *actionutils.CSRF +}) { + defer this.CreateLogInfo("修改节点 %d 系统信息", params.NodeId) + + if params.MaxCPU < 0 { + this.Fail("CPU线程数不能小于0") + } + + _, err := this.RPC().NodeRPC().UpdateNodeSystem(this.AdminContext(), &pb.UpdateNodeSystemRequest{ + NodeId: params.NodeId, + MaxCPU: params.MaxCPU, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/clusters/cluster/node/thresholds/index.go b/internal/web/actions/default/clusters/cluster/node/settings/thresholds/index.go similarity index 93% rename from internal/web/actions/default/clusters/cluster/node/thresholds/index.go rename to internal/web/actions/default/clusters/cluster/node/settings/thresholds/index.go index 18e99c58..7c2384a4 100644 --- a/internal/web/actions/default/clusters/cluster/node/thresholds/index.go +++ b/internal/web/actions/default/clusters/cluster/node/settings/thresholds/index.go @@ -15,22 +15,22 @@ type IndexAction struct { } func (this *IndexAction) Init() { - this.Nav("", "node", "threshold") + this.Nav("", "", "update") + this.SecondMenu("threshold") } func (this *IndexAction) RunGet(params struct { ClusterId int64 NodeId int64 }) { - this.Data["nodeId"] = params.NodeId - - // 初始化节点信息(用于菜单) - err := nodeutils.InitNodeInfo(this, params.NodeId) + _, err := nodeutils.InitNodeInfo(this.Parent(), params.NodeId) if err != nil { this.ErrorPage(err) return } + this.Data["nodeId"] = params.NodeId + // 列出所有阈值 thresholdsResp, err := this.RPC().NodeThresholdRPC().FindAllEnabledNodeThresholds(this.AdminContext(), &pb.FindAllEnabledNodeThresholdsRequest{ Role: "node", diff --git a/internal/web/actions/default/clusters/cluster/node/status.go b/internal/web/actions/default/clusters/cluster/node/status.go index 2aba5c99..99b8766c 100644 --- a/internal/web/actions/default/clusters/cluster/node/status.go +++ b/internal/web/actions/default/clusters/cluster/node/status.go @@ -6,7 +6,7 @@ import ( "github.com/iwind/TeaGo/maps" ) -// 节点状态 +// StatusAction 节点状态 type StatusAction struct { actionutils.ParentAction } diff --git a/internal/web/actions/default/clusters/cluster/node/update.go b/internal/web/actions/default/clusters/cluster/node/update.go index 5a85d63d..265ffd91 100644 --- a/internal/web/actions/default/clusters/cluster/node/update.go +++ b/internal/web/actions/default/clusters/cluster/node/update.go @@ -4,11 +4,10 @@ import ( "encoding/json" "github.com/TeaOSLab/EdgeAdmin/internal/oplogs" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/grants/grantutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/node/nodeutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes/ipAddresses/ipaddressutils" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/maps" ) @@ -19,12 +18,18 @@ type UpdateAction struct { func (this *UpdateAction) Init() { this.Nav("", "node", "update") - this.SecondMenu("nodes") + this.SecondMenu("basic") } func (this *UpdateAction) RunGet(params struct { NodeId int64 }) { + _, err := nodeutils.InitNodeInfo(this.Parent(), params.NodeId) + if err != nil { + this.ErrorPage(err) + return + } + this.Data["nodeId"] = params.NodeId nodeResp, err := this.RPC().NodeRPC().FindEnabledNode(this.AdminContext(), &pb.FindEnabledNodeRequest{NodeId: params.NodeId}) @@ -74,105 +79,6 @@ func (this *UpdateAction) RunGet(params struct { }) } - // DNS相关 - var clusters = []*pb.NodeCluster{node.NodeCluster} - clusters = append(clusters, node.SecondaryNodeClusters...) - var allDNSRouteMaps = map[int64][]maps.Map{} // domain id => routes - var routeMaps = map[int64][]maps.Map{} // domain id => routes - for _, cluster := range clusters { - dnsInfoResp, err := this.RPC().NodeRPC().FindEnabledNodeDNS(this.AdminContext(), &pb.FindEnabledNodeDNSRequest{ - NodeId: params.NodeId, - NodeClusterId: cluster.Id, - }) - if err != nil { - this.ErrorPage(err) - return - } - var dnsInfo = dnsInfoResp.Node - if dnsInfo.DnsDomainId <= 0 || len(dnsInfo.DnsDomainName) == 0 { - continue - } - var domainId = dnsInfo.DnsDomainId - var domainName = dnsInfo.DnsDomainName - if len(dnsInfo.Routes) > 0 { - for _, route := range dnsInfo.Routes { - routeMaps[domainId] = append(routeMaps[domainId], maps.Map{ - "domainId": domainId, - "domainName": domainName, - "code": route.Code, - "name": route.Name, - }) - } - } - - // 所有线路选项 - routesResp, err := this.RPC().DNSDomainRPC().FindAllDNSDomainRoutes(this.AdminContext(), &pb.FindAllDNSDomainRoutesRequest{DnsDomainId: dnsInfoResp.Node.DnsDomainId}) - if err != nil { - this.ErrorPage(err) - return - } - for _, route := range routesResp.Routes { - allDNSRouteMaps[domainId] = append(allDNSRouteMaps[domainId], maps.Map{ - "domainId": domainId, - "domainName": domainName, - "name": route.Name, - "code": route.Code, - }) - } - } - - var domainRoutes = []maps.Map{} - for _, m := range routeMaps { - domainRoutes = append(domainRoutes, m...) - } - this.Data["dnsRoutes"] = domainRoutes - - var allDomainRoutes = []maps.Map{} - for _, m := range allDNSRouteMaps { - allDomainRoutes = append(allDomainRoutes, m...) - } - this.Data["allDNSRoutes"] = allDomainRoutes - - // 登录信息 - var loginMap maps.Map = nil - if node.NodeLogin != nil { - loginParams := maps.Map{} - if len(node.NodeLogin.Params) > 0 { - err = json.Unmarshal(node.NodeLogin.Params, &loginParams) - if err != nil { - this.ErrorPage(err) - return - } - } - - grantMap := maps.Map{} - grantId := loginParams.GetInt64("grantId") - if grantId > 0 { - grantResp, err := this.RPC().NodeGrantRPC().FindEnabledNodeGrant(this.AdminContext(), &pb.FindEnabledNodeGrantRequest{NodeGrantId: grantId}) - if err != nil { - this.ErrorPage(err) - return - } - if grantResp.NodeGrant != nil { - grantMap = maps.Map{ - "id": grantResp.NodeGrant.Id, - "name": grantResp.NodeGrant.Name, - "method": grantResp.NodeGrant.Method, - "methodName": grantutils.FindGrantMethodName(grantResp.NodeGrant.Method), - "username": grantResp.NodeGrant.Username, - } - } - } - - loginMap = maps.Map{ - "id": node.NodeLogin.Id, - "name": node.NodeLogin.Name, - "type": node.NodeLogin.Type, - "params": loginParams, - "grant": grantMap, - } - } - // 分组 var groupMap maps.Map = nil if node.NodeGroup != nil { @@ -191,45 +97,14 @@ func (this *UpdateAction) RunGet(params struct { } } - // 缓存硬盘 & 内存容量 - var maxCacheDiskCapacity maps.Map = nil - if node.MaxCacheDiskCapacity != nil { - maxCacheDiskCapacity = maps.Map{ - "count": node.MaxCacheDiskCapacity.Count, - "unit": node.MaxCacheDiskCapacity.Unit, - } - } else { - maxCacheDiskCapacity = maps.Map{ - "count": 0, - "unit": "gb", - } - } - - var maxCacheMemoryCapacity maps.Map = nil - if node.MaxCacheMemoryCapacity != nil { - maxCacheMemoryCapacity = maps.Map{ - "count": node.MaxCacheMemoryCapacity.Count, - "unit": node.MaxCacheMemoryCapacity.Unit, - } - } else { - maxCacheMemoryCapacity = maps.Map{ - "count": 0, - "unit": "gb", - } - } - var m = maps.Map{ - "id": node.Id, - "name": node.Name, - "ipAddresses": ipAddressMaps, - "cluster": clusterMap, - "login": loginMap, - "maxCPU": node.MaxCPU, - "isOn": node.IsOn, - "group": groupMap, - "region": regionMap, - "maxCacheDiskCapacity": maxCacheDiskCapacity, - "maxCacheMemoryCapacity": maxCacheMemoryCapacity, + "id": node.Id, + "name": node.Name, + "ipAddresses": ipAddressMaps, + "cluster": clusterMap, + "isOn": node.IsOn, + "group": groupMap, + "region": regionMap, } if node.NodeCluster != nil { @@ -260,24 +135,15 @@ func (this *UpdateAction) RunGet(params struct { } func (this *UpdateAction) RunPost(params struct { - LoginId int64 - NodeId int64 - GroupId int64 - RegionId int64 - Name string - IPAddressesJSON []byte `alias:"ipAddressesJSON"` - PrimaryClusterId int64 - SecondaryClusterIds []byte - GrantId int64 - SshHost string - SshPort int - MaxCPU int32 - IsOn bool - MaxCacheDiskCapacityJSON []byte - MaxCacheMemoryCapacityJSON []byte - - DnsDomainId int64 - DnsRoutesJSON []byte + LoginId int64 + NodeId int64 + GroupId int64 + RegionId int64 + Name string + IPAddressesJSON []byte `alias:"ipAddressesJSON"` + PrimaryClusterId int64 + SecondaryClusterIds []byte + IsOn bool Must *actions.Must }) { @@ -319,56 +185,6 @@ func (this *UpdateAction) RunPost(params struct { this.Fail("请至少输入一个IP地址") } - dnsRouteCodes := []string{} - if len(params.DnsRoutesJSON) > 0 { - err := json.Unmarshal(params.DnsRoutesJSON, &dnsRouteCodes) - if err != nil { - this.ErrorPage(err) - return - } - } - - // TODO 检查登录授权 - loginInfo := &pb.NodeLogin{ - Id: params.LoginId, - Name: "SSH", - Type: "ssh", - Params: maps.Map{ - "grantId": params.GrantId, - "host": params.SshHost, - "port": params.SshPort, - }.AsJSON(), - } - - // 缓存硬盘 & 内存容量 - var pbMaxCacheDiskCapacity *pb.SizeCapacity - if len(params.MaxCacheDiskCapacityJSON) > 0 { - var sizeCapacity = &shared.SizeCapacity{} - err := json.Unmarshal(params.MaxCacheDiskCapacityJSON, sizeCapacity) - if err != nil { - this.ErrorPage(err) - return - } - pbMaxCacheDiskCapacity = &pb.SizeCapacity{ - Count: sizeCapacity.Count, - Unit: sizeCapacity.Unit, - } - } - - var pbMaxCacheMemoryCapacity *pb.SizeCapacity - if len(params.MaxCacheMemoryCapacityJSON) > 0 { - var sizeCapacity = &shared.SizeCapacity{} - err := json.Unmarshal(params.MaxCacheMemoryCapacityJSON, sizeCapacity) - if err != nil { - this.ErrorPage(err) - return - } - pbMaxCacheMemoryCapacity = &pb.SizeCapacity{ - Count: sizeCapacity.Count, - Unit: sizeCapacity.Unit, - } - } - // 保存 _, err := this.RPC().NodeRPC().UpdateNode(this.AdminContext(), &pb.UpdateNodeRequest{ NodeId: params.NodeId, @@ -377,13 +193,7 @@ func (this *UpdateAction) RunPost(params struct { Name: params.Name, NodeClusterId: params.PrimaryClusterId, SecondaryNodeClusterIds: secondaryClusterIds, - NodeLogin: loginInfo, - MaxCPU: params.MaxCPU, IsOn: params.IsOn, - DnsDomainId: params.DnsDomainId, - DnsRoutes: dnsRouteCodes, - MaxCacheDiskCapacity: pbMaxCacheDiskCapacity, - MaxCacheMemoryCapacity: pbMaxCacheMemoryCapacity, }) if err != nil { this.ErrorPage(err) diff --git a/web/public/js/components/dns/dns-route-selector.js b/web/public/js/components/dns/dns-route-selector.js index 2b2376d7..d3b8eb13 100644 --- a/web/public/js/components/dns/dns-route-selector.js +++ b/web/public/js/components/dns/dns-route-selector.js @@ -5,6 +5,12 @@ Vue.component("dns-route-selector", { if (routes == null) { routes = [] } + routes.$sort(function (v1, v2) { + if (v1.domainId == v2.domainId) { + return v1.code < v2.code + } + return (v1.domainId < v2.domainId) ? 1 : -1 + }) return { routes: routes, routeCodes: routes.$map(function (k, v) { @@ -49,6 +55,13 @@ Vue.component("dns-route-selector", { this.routeCodes.push(this.routeCode) this.routes.push(route) + this.routes.$sort(function (v1, v2) { + if (v1.domainId == v2.domainId) { + return v1.code < v2.code + } + return (v1.domainId < v2.domainId) ? 1 : -1 + }) + this.routeCode = "" this.isAdding = false }, diff --git a/web/views/@default/@layout.css b/web/views/@default/@layout.css index bff14395..53e0fd82 100644 --- a/web/views/@default/@layout.css +++ b/web/views/@default/@layout.css @@ -57,6 +57,9 @@ .left-box.without-tabbar { top: 3em; } +.left-box.with-menu { + top: 10em; +} .right-box { position: fixed; top: 7.5em; @@ -80,6 +83,9 @@ body.expanded .right-box { .right-box.without-tabbar { top: 3em; } +.right-box.with-menu { + top: 10em; +} .main.without-footer .left-box { bottom: 0.2em; } diff --git a/web/views/@default/@layout.css.map b/web/views/@default/@layout.css.map index a73025c7..e939e381 100644 --- a/web/views/@default/@layout.css.map +++ b/web/views/@default/@layout.css.map @@ -1 +1 @@ -{"version":3,"sources":["@left_menu.less","@layout.less"],"names":[],"mappings":"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","file":"@layout.css"} \ No newline at end of file +{"version":3,"sources":["@left_menu.less","@layout.less"],"names":[],"mappings":"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","file":"@layout.css"} \ No newline at end of file diff --git a/web/views/@default/@left_menu.less b/web/views/@default/@left_menu.less index 6a22fca9..ef4037da 100644 --- a/web/views/@default/@left_menu.less +++ b/web/views/@default/@left_menu.less @@ -79,6 +79,10 @@ top: 3em; } +.left-box.with-menu { + top: 10em; +} + .right-box { position: fixed; top: 7.5em; @@ -107,6 +111,9 @@ body.expanded .right-box { top: 3em; } +.right-box.with-menu { + top: 10em; +} // main .main.without-footer .left-box { diff --git a/web/views/@default/@left_menu_with_menu.html b/web/views/@default/@left_menu_with_menu.html new file mode 100644 index 00000000..cb192c0b --- /dev/null +++ b/web/views/@default/@left_menu_with_menu.html @@ -0,0 +1,9 @@ +
+ +
+ +
\ No newline at end of file diff --git a/web/views/@default/clusters/cluster/node/@node_menu.html b/web/views/@default/clusters/cluster/node/@node_menu.html index f67820fd..b0f31116 100644 --- a/web/views/@default/clusters/cluster/node/@node_menu.html +++ b/web/views/@default/clusters/cluster/node/@node_menu.html @@ -5,7 +5,6 @@ v-if="!teaIsPlus">"{{node.name}}"节点详情 "{{node.name}}" 节点看板 节点详情 - 阈值设置 运行日志 安装节点 修改设置 diff --git a/web/views/@default/clusters/cluster/node/settings/cache/index.html b/web/views/@default/clusters/cluster/node/settings/cache/index.html new file mode 100644 index 00000000..cb211152 --- /dev/null +++ b/web/views/@default/clusters/cluster/node/settings/cache/index.html @@ -0,0 +1,27 @@ +{$layout} +{$template "/clusters/cluster/node/node_menu"} +{$template "/left_menu_with_menu"} + +
+
+ + + + + + + + + + + +
缓存磁盘容量 + +

缓存能使用的磁盘的最大容量,0表示不限制。

+
缓存内存容量 + +

缓存能使用的内存的最大容量,0表示不限制。

+
+ +
+
\ No newline at end of file diff --git a/web/views/@default/clusters/cluster/node/settings/cache/index.js b/web/views/@default/clusters/cluster/node/settings/cache/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/clusters/cluster/node/settings/cache/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file diff --git a/web/views/@default/clusters/cluster/node/settings/dns/index.html b/web/views/@default/clusters/cluster/node/settings/dns/index.html new file mode 100644 index 00000000..784e4970 --- /dev/null +++ b/web/views/@default/clusters/cluster/node/settings/dns/index.html @@ -0,0 +1,23 @@ +{$layout} +{$template "/clusters/cluster/node/node_menu"} +{$template "/left_menu_with_menu"} + +
+
+ + + + + + + + +
DNS线路 +
+ +

当前节点对应的DNS线路,可用线路是根据集群设置的域名获取的,注意DNS服务商可能对这些线路有其他限制。

+
+
+ +
+
\ No newline at end of file diff --git a/web/views/@default/clusters/cluster/node/settings/dns/index.js b/web/views/@default/clusters/cluster/node/settings/dns/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/clusters/cluster/node/settings/dns/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file diff --git a/web/views/@default/clusters/cluster/node/settings/ssh/index.html b/web/views/@default/clusters/cluster/node/settings/ssh/index.html new file mode 100644 index 00000000..18a39293 --- /dev/null +++ b/web/views/@default/clusters/cluster/node/settings/ssh/index.html @@ -0,0 +1,35 @@ +{$layout} +{$template "/clusters/cluster/node/node_menu"} +{$template "/left_menu_with_menu"} + +
+
+ + + + + + + + + + + + + + + + + +
SSH主机地址 + +

比如192.168.1.100

+
SSH主机端口 + +

比如22。

+
SSH登录认证 + +
+ +
+
\ No newline at end of file diff --git a/web/views/@default/clusters/cluster/node/settings/ssh/index.js b/web/views/@default/clusters/cluster/node/settings/ssh/index.js new file mode 100644 index 00000000..f865c148 --- /dev/null +++ b/web/views/@default/clusters/cluster/node/settings/ssh/index.js @@ -0,0 +1,30 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") + + // 认证相关 + this.grant = null + + this.sshHost = "" + this.sshPort = "" + this.loginId = 0 + if (this.node.login != null) { + this.loginId = this.node.login.id + + if (this.node.login.params != null) { + this.sshHost = this.node.login.params.host + if (this.node.login.params.port > 0) { + this.sshPort = this.node.login.params.port + } + } + + if (this.node.login.grant != null && typeof this.node.login.grant.id != "undefined") { + this.grant = { + id: this.node.login.grant.id, + name: this.node.login.grant.name, + method: this.node.login.grant.method, + methodName: this.node.login.grant.methodName, + username: this.node.login.grant.username + } + } + } +}) \ No newline at end of file diff --git a/web/views/@default/clusters/cluster/node/settings/system/index.html b/web/views/@default/clusters/cluster/node/settings/system/index.html new file mode 100644 index 00000000..5447f45a --- /dev/null +++ b/web/views/@default/clusters/cluster/node/settings/system/index.html @@ -0,0 +1,20 @@ +{$layout} +{$template "/clusters/cluster/node/node_menu"} +{$template "/left_menu_with_menu"} + +
+
+ + + + + + + +
CPU线程数 + +

当前节点可以使用的最多的CPU线程数,如果为0表示可以使用全部CPU。

+
+ +
+
\ No newline at end of file diff --git a/web/views/@default/clusters/cluster/node/settings/system/index.js b/web/views/@default/clusters/cluster/node/settings/system/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/clusters/cluster/node/settings/system/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file diff --git a/web/views/@default/clusters/cluster/node/settings/thresholds/index.html b/web/views/@default/clusters/cluster/node/settings/thresholds/index.html new file mode 100644 index 00000000..0c3fd3ef --- /dev/null +++ b/web/views/@default/clusters/cluster/node/settings/thresholds/index.html @@ -0,0 +1,41 @@ +{$layout} +{$template "/clusters/cluster/node/node_menu"} +{$template "/left_menu_with_menu"} + +
+ +
+ + 添加阈值 + +
+ +

暂时还没有设置阈值。

+ + + + + + + + + + + + + + + + + + + + + +
监控项参数操作符对比值统计时间段状态操作
{{threshold.itemName}}{{threshold.paramName}}{{threshold.operatorName}}{{threshold.value}}{{threshold.duration}}{{threshold.durationUnitName}} + + + 修改   + 删除 +
+
\ No newline at end of file diff --git a/web/views/@default/clusters/cluster/node/thresholds/index.js b/web/views/@default/clusters/cluster/node/settings/thresholds/index.js similarity index 93% rename from web/views/@default/clusters/cluster/node/thresholds/index.js rename to web/views/@default/clusters/cluster/node/settings/thresholds/index.js index 3770bf29..2260af76 100644 --- a/web/views/@default/clusters/cluster/node/thresholds/index.js +++ b/web/views/@default/clusters/cluster/node/settings/thresholds/index.js @@ -27,7 +27,7 @@ Tea.context(function () { this.deleteThreshold = function (thresholdId) { let that = this teaweb.confirm("确定要删除这个阈值吗?", function () { - that.$post(".delete") + that.$post("/clusters/cluster/settings/thresholds/delete") .params({ thresholdId: thresholdId }) diff --git a/web/views/@default/clusters/cluster/node/thresholds/index.html b/web/views/@default/clusters/cluster/node/thresholds/index.html deleted file mode 100644 index 14c0a26d..00000000 --- a/web/views/@default/clusters/cluster/node/thresholds/index.html +++ /dev/null @@ -1,37 +0,0 @@ -{$layout} -{$template "../node_menu"} - -
- - 添加阈值 - -
- -

暂时还没有设置阈值。

- - - - - - - - - - - - - - - - - - - - - -
监控项参数操作符对比值统计时间段状态操作
{{threshold.itemName}}{{threshold.paramName}}{{threshold.operatorName}}{{threshold.value}}{{threshold.duration}}{{threshold.durationUnitName}} - - - 修改   - 删除 -
\ No newline at end of file diff --git a/web/views/@default/clusters/cluster/node/update.html b/web/views/@default/clusters/cluster/node/update.html index 63f5be08..75e27230 100644 --- a/web/views/@default/clusters/cluster/node/update.html +++ b/web/views/@default/clusters/cluster/node/update.html @@ -1,108 +1,65 @@ {$layout} - {$template "node_menu"} -

修改节点

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +{$template "/left_menu_with_menu"} + +
+ + +
节点名称 * - -
所属集群 - -
IP地址 * - -

用于访问节点和域名解析等。

-
DNS线路 - -

当前节点对应的DNS线路,可用线路是根据集群设置的域名获取的,注意DNS服务商可能对这些线路有其他限制。

-
所属区域 - -

设置区域后才能根据区域进行流量统计和计费。

-
所属分组 - -

仅用来筛选服务。

-
- + - + - - - - - - - - - - - - - - - - - - - - - -
SSH主机地址节点名称 * - -

比如192.168.1.100

+
SSH主机端口所属集群 - -

比如22。

-
SSH登录认证 - -
CPU线程数 - -

当前节点可以使用的最多的CPU线程数,如果为0表示可以使用全部CPU。

-
缓存磁盘容量 - -

缓存能使用的磁盘的最大容量,0表示不限制。

-
缓存内存容量 - -

缓存能使用的内存的最大容量,0表示不限制。

-
是否启用 -
- - + {{node.primaryCluster.name}} + {{cluster.name}}   [修改] +
+
-

如果不启用此节点,此节点上的所有服务将不能访问。

- -
\ No newline at end of file + + IP地址 * + + +

用于访问节点和域名解析等。

+ + + + 所属区域 + + +

设置区域后才能根据区域进行流量统计和计费。

+ + + + 所属分组 + + +

仅用来筛选服务。

+ + + + + + + + 是否启用 + +
+ + +
+

如果不启用此节点,此节点上的所有服务将不能访问。

+ + + + + + + \ No newline at end of file diff --git a/web/views/@default/clusters/cluster/node/update.js b/web/views/@default/clusters/cluster/node/update.js index cc4ad02a..0ba81e19 100644 --- a/web/views/@default/clusters/cluster/node/update.js +++ b/web/views/@default/clusters/cluster/node/update.js @@ -14,34 +14,16 @@ Tea.context(function () { // IP地址相关 this.ipAddresses = this.node.ipAddresses - // 认证相关 - this.grant = null - - this.sshHost = "" - this.sshPort = "" - this.loginId = 0 - if (this.node.login != null) { - this.loginId = this.node.login.id - - if (this.node.login.params != null) { - this.sshHost = this.node.login.params.host - if (this.node.login.params.port > 0) { - this.sshPort = this.node.login.params.port - } - } - - if (this.node.login.grant != null && typeof this.node.login.grant.id != "undefined") { - this.grant = { - id: this.node.login.grant.id, - name: this.node.login.grant.name, - method: this.node.login.grant.method, - methodName: this.node.login.grant.methodName, - username: this.node.login.grant.username - } - } - } - this.changeClusters = function (info) { this.clusterId = info.clusterId } + + /** + * 集群相关 + */ + this.showClustersBox = false + + this.updateClusters = function () { + this.showClustersBox = !this.showClustersBox + } }) \ No newline at end of file diff --git a/web/views/@default/clusters/cluster/settings/thresholds/index.html b/web/views/@default/clusters/cluster/settings/thresholds/index.html index 54457c0b..b3dc577d 100644 --- a/web/views/@default/clusters/cluster/settings/thresholds/index.html +++ b/web/views/@default/clusters/cluster/settings/thresholds/index.html @@ -22,7 +22,7 @@ {{threshold.itemName}}
- 节点:{{threshold.node.name}} + 节点:{{threshold.node.name}}
{{threshold.paramName}} diff --git a/web/views/@default/ns/clusters/cluster/node/@node_menu.html b/web/views/@default/ns/clusters/cluster/node/@node_menu.html index ed545e57..8955223a 100644 --- a/web/views/@default/ns/clusters/cluster/node/@node_menu.html +++ b/web/views/@default/ns/clusters/cluster/node/@node_menu.html @@ -2,8 +2,6 @@ 节点列表 | 节点详情 - 运行日志 修改设置 安装节点