mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-12 19:30:26 +08:00
节点可以单独设置缓存的磁盘、内存容量
This commit is contained in:
@@ -185,6 +185,33 @@ func (this *NodeAction) 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",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.Data["node"] = maps.Map{
|
this.Data["node"] = maps.Map{
|
||||||
"id": node.Id,
|
"id": node.Id,
|
||||||
"name": node.Name,
|
"name": node.Name,
|
||||||
@@ -217,6 +244,9 @@ func (this *NodeAction) RunGet(params struct {
|
|||||||
|
|
||||||
"group": groupMap,
|
"group": groupMap,
|
||||||
"region": regionMap,
|
"region": regionMap,
|
||||||
|
|
||||||
|
"maxCacheDiskCapacity": maxCacheDiskCapacity,
|
||||||
|
"maxCacheMemoryCapacity": maxCacheMemoryCapacity,
|
||||||
}
|
}
|
||||||
|
|
||||||
this.Show()
|
this.Show()
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/grants/grantutils"
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/grants/grantutils"
|
||||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes/ipAddresses/ipaddressutils"
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes/ipAddresses/ipaddressutils"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
|
||||||
"github.com/iwind/TeaGo/actions"
|
"github.com/iwind/TeaGo/actions"
|
||||||
"github.com/iwind/TeaGo/maps"
|
"github.com/iwind/TeaGo/maps"
|
||||||
)
|
)
|
||||||
@@ -156,16 +157,45 @@ 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",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.Data["node"] = maps.Map{
|
this.Data["node"] = maps.Map{
|
||||||
"id": node.Id,
|
"id": node.Id,
|
||||||
"name": node.Name,
|
"name": node.Name,
|
||||||
"ipAddresses": ipAddressMaps,
|
"ipAddresses": ipAddressMaps,
|
||||||
"cluster": clusterMap,
|
"cluster": clusterMap,
|
||||||
"login": loginMap,
|
"login": loginMap,
|
||||||
"maxCPU": node.MaxCPU,
|
"maxCPU": node.MaxCPU,
|
||||||
"isOn": node.IsOn,
|
"isOn": node.IsOn,
|
||||||
"group": groupMap,
|
"group": groupMap,
|
||||||
"region": regionMap,
|
"region": regionMap,
|
||||||
|
"maxCacheDiskCapacity": maxCacheDiskCapacity,
|
||||||
|
"maxCacheMemoryCapacity": maxCacheMemoryCapacity,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 所有集群
|
// 所有集群
|
||||||
@@ -190,18 +220,20 @@ func (this *UpdateAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *UpdateAction) RunPost(params struct {
|
func (this *UpdateAction) RunPost(params struct {
|
||||||
LoginId int64
|
LoginId int64
|
||||||
NodeId int64
|
NodeId int64
|
||||||
GroupId int64
|
GroupId int64
|
||||||
RegionId int64
|
RegionId int64
|
||||||
Name string
|
Name string
|
||||||
IPAddressesJSON []byte `alias:"ipAddressesJSON"`
|
IPAddressesJSON []byte `alias:"ipAddressesJSON"`
|
||||||
ClusterId int64
|
ClusterId int64
|
||||||
GrantId int64
|
GrantId int64
|
||||||
SshHost string
|
SshHost string
|
||||||
SshPort int
|
SshPort int
|
||||||
MaxCPU int32
|
MaxCPU int32
|
||||||
IsOn bool
|
IsOn bool
|
||||||
|
MaxCacheDiskCapacityJSON []byte
|
||||||
|
MaxCacheMemoryCapacityJSON []byte
|
||||||
|
|
||||||
DnsDomainId int64
|
DnsDomainId int64
|
||||||
DnsRoutesJSON []byte
|
DnsRoutesJSON []byte
|
||||||
@@ -258,18 +290,49 @@ func (this *UpdateAction) RunPost(params struct {
|
|||||||
}.AsJSON(),
|
}.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{
|
_, err := this.RPC().NodeRPC().UpdateNode(this.AdminContext(), &pb.UpdateNodeRequest{
|
||||||
NodeId: params.NodeId,
|
NodeId: params.NodeId,
|
||||||
GroupId: params.GroupId,
|
GroupId: params.GroupId,
|
||||||
RegionId: params.RegionId,
|
RegionId: params.RegionId,
|
||||||
Name: params.Name,
|
Name: params.Name,
|
||||||
NodeClusterId: params.ClusterId,
|
NodeClusterId: params.ClusterId,
|
||||||
Login: loginInfo,
|
Login: loginInfo,
|
||||||
MaxCPU: params.MaxCPU,
|
MaxCPU: params.MaxCPU,
|
||||||
IsOn: params.IsOn,
|
IsOn: params.IsOn,
|
||||||
DnsDomainId: params.DnsDomainId,
|
DnsDomainId: params.DnsDomainId,
|
||||||
DnsRoutes: dnsRouteCodes,
|
DnsRoutes: dnsRouteCodes,
|
||||||
|
MaxCacheDiskCapacity: pbMaxCacheDiskCapacity,
|
||||||
|
MaxCacheMemoryCapacity: pbMaxCacheMemoryCapacity,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
|
|||||||
@@ -122,6 +122,24 @@
|
|||||||
<span v-else class="disabled">没有限制。</span>
|
<span v-else class="disabled">没有限制。</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>缓存磁盘容量</td>
|
||||||
|
<td>
|
||||||
|
<span v-if="node.maxCacheDiskCapacity == null || node.maxCacheDiskCapacity.count <= 0" class="disabled">没有限制</span>
|
||||||
|
<div v-else>
|
||||||
|
<size-capacity-view :v-value="node.maxCacheDiskCapacity"></size-capacity-view>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>缓存内存容量</td>
|
||||||
|
<td>
|
||||||
|
<span v-if="node.maxCacheMemoryCapacity == null || node.maxCacheMemoryCapacity.count <= 0" class="disabled">没有限制</span>
|
||||||
|
<div v-else>
|
||||||
|
<size-capacity-view :v-value="node.maxCacheMemoryCapacity"></size-capacity-view>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="ui divider"></div>
|
<div class="ui divider"></div>
|
||||||
|
|||||||
@@ -1,97 +1,111 @@
|
|||||||
{$layout}
|
{$layout}
|
||||||
|
|
||||||
{$template "node_menu"}
|
{$template "node_menu"}
|
||||||
|
|
||||||
<h3>修改节点</h3>
|
<h3>修改节点</h3>
|
||||||
<form method="post" class="ui form" data-tea-action="$" data-tea-success="success">
|
<form method="post" class="ui form" data-tea-action="$" data-tea-success="success">
|
||||||
<input type="hidden" name="nodeId" :value="node.id"/>
|
<input type="hidden" name="nodeId" :value="node.id"/>
|
||||||
<input type="hidden" name="loginId" :value="loginId"/>
|
<input type="hidden" name="loginId" :value="loginId"/>
|
||||||
<table class="ui table definition selectable">
|
<table class="ui table definition selectable">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="title">节点名称 *</td>
|
<td class="title">节点名称 *</td>
|
||||||
<td>
|
<td>
|
||||||
<input type="text" name="name" maxlength="50" ref="focus" v-model="node.name"/>
|
<input type="text" name="name" maxlength="50" ref="focus" v-model="node.name"/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>IP地址 *</td>
|
<td>IP地址 *</td>
|
||||||
<td>
|
<td>
|
||||||
<node-ip-addresses-box :v-ip-addresses="ipAddresses"></node-ip-addresses-box>
|
<node-ip-addresses-box :v-ip-addresses="ipAddresses"></node-ip-addresses-box>
|
||||||
<p class="comment">用于访问节点和域名解析等。</p>
|
<p class="comment">用于访问节点和域名解析等。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-if="allDNSRoutes.length > 0">
|
<tr v-if="allDNSRoutes.length > 0">
|
||||||
<td>DNS线路</td>
|
<td>DNS线路</td>
|
||||||
<td>
|
<td>
|
||||||
<input type="hidden" name="dnsDomainId" :value="dnsDomainId"/>
|
<input type="hidden" name="dnsDomainId" :value="dnsDomainId"/>
|
||||||
<dns-route-selector :v-all-routes="allDNSRoutes" :v-routes="dnsRoutes"></dns-route-selector>
|
<dns-route-selector :v-all-routes="allDNSRoutes" :v-routes="dnsRoutes"></dns-route-selector>
|
||||||
<p class="comment">当前节点对应的DNS线路,可用线路是根据集群设置的域名获取的,注意DNS服务商可能对这些线路有其他限制。</p>
|
<p class="comment">当前节点对应的DNS线路,可用线路是根据集群设置的域名获取的,注意DNS服务商可能对这些线路有其他限制。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>所属集群</td>
|
<td>所属集群</td>
|
||||||
<td>
|
<td>
|
||||||
<select class="ui dropdown" name="clusterId" style="width:10em" v-model="clusterId">
|
<select class="ui dropdown" name="clusterId" style="width:10em" v-model="clusterId">
|
||||||
<option v-for="cluster in clusters" :value="cluster.id">{{cluster.name}}</option>
|
<option v-for="cluster in clusters" :value="cluster.id">{{cluster.name}}</option>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>所属区域</td>
|
||||||
|
<td>
|
||||||
|
<node-region-selector :v-region="node.region"></node-region-selector>
|
||||||
|
<p class="comment">设置区域后才能根据区域进行流量统计和计费。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>所属分组</td>
|
||||||
|
<td>
|
||||||
|
<node-group-selector :v-cluster-id="clusterId" :v-group="node.group"></node-group-selector>
|
||||||
|
<p class="comment">仅用来筛选服务。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2"><more-options-indicator></more-options-indicator></td>
|
||||||
|
</tr>
|
||||||
|
<tbody v-show="moreOptionsVisible">
|
||||||
<tr>
|
<tr>
|
||||||
<td>所属区域</td>
|
<td>SSH主机地址</td>
|
||||||
<td>
|
<td>
|
||||||
<node-region-selector :v-region="node.region"></node-region-selector>
|
<input type="text" name="sshHost" maxlength="64" v-model="sshHost"/>
|
||||||
<p class="comment">设置区域后才能根据区域进行流量统计和计费。</p>
|
<p class="comment">比如192.168.1.100</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>所属分组</td>
|
<td>SSH主机端口</td>
|
||||||
<td>
|
<td>
|
||||||
<node-group-selector :v-cluster-id="clusterId" :v-group="node.group"></node-group-selector>
|
<input type="text" name="sshPort" maxlength="5" v-model="sshPort"/>
|
||||||
<p class="comment">仅用来筛选服务。</p>
|
<p class="comment">比如22。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2"><more-options-indicator></more-options-indicator></td>
|
<td>SSH登录认证</td>
|
||||||
</tr>
|
<td>
|
||||||
<tbody v-show="moreOptionsVisible">
|
<grant-selector :v-grant="grant"></grant-selector>
|
||||||
<tr>
|
</td>
|
||||||
<td>SSH主机地址</td>
|
</tr>
|
||||||
<td>
|
<tr>
|
||||||
<input type="text" name="sshHost" maxlength="64" v-model="sshHost"/>
|
<td>CPU线程数</td>
|
||||||
<p class="comment">比如192.168.1.100</p>
|
<td>
|
||||||
</td>
|
<input type="text" name="maxCPU" v-model="node.maxCPU" style="width:5em" maxlength="5em"/>
|
||||||
</tr>
|
<p class="comment">当前节点可以使用的最多的CPU线程数,如果为0表示可以使用全部CPU。</p>
|
||||||
<tr>
|
</td>
|
||||||
<td>SSH主机端口</td>
|
</tr>
|
||||||
<td>
|
<tr>
|
||||||
<input type="text" name="sshPort" maxlength="5" v-model="sshPort"/>
|
<td>缓存磁盘容量</td>
|
||||||
<p class="comment">比如22。</p>
|
<td>
|
||||||
</td>
|
<size-capacity-box :v-value="node.maxCacheDiskCapacity" :v-name="'maxCacheDiskCapacityJSON'"></size-capacity-box>
|
||||||
</tr>
|
<p class="comment">缓存能使用的磁盘的最大容量,0表示不限制。</p>
|
||||||
<tr>
|
</td>
|
||||||
<td>SSH登录认证</td>
|
</tr>
|
||||||
<td>
|
<tr>
|
||||||
<grant-selector :v-grant="grant"></grant-selector>
|
<td>缓存内存容量</td>
|
||||||
</td>
|
<td>
|
||||||
</tr>
|
<size-capacity-box :v-value="node.maxCacheMemoryCapacity" :v-name="'maxCacheMemoryCapacityJSON'"></size-capacity-box>
|
||||||
<tr>
|
<p class="comment">缓存能使用的内存的最大容量,0表示不限制。</p>
|
||||||
<td>CPU线程数</td>
|
</td>
|
||||||
<td>
|
</tr>
|
||||||
<input type="text" name="maxCPU" v-model="node.maxCPU"/>
|
<tr>
|
||||||
<p class="comment">当前节点可以使用的最多的CPU线程数,如果为0表示可以使用全部CPU。</p>
|
<td>是否启用</td>
|
||||||
</td>
|
<td>
|
||||||
</tr>
|
<div class="ui checkbox">
|
||||||
<tr>
|
<input type="checkbox" name="isOn" value="1" v-model="node.isOn"/>
|
||||||
<td>是否启用</td>
|
<label></label>
|
||||||
<td>
|
</div>
|
||||||
<div class="ui checkbox">
|
<p class="comment">如果不启用此节点,此节点上的所有服务将不能访问。</p>
|
||||||
<input type="checkbox" name="isOn" value="1" v-model="node.isOn"/>
|
</td>
|
||||||
<label></label>
|
</tr>
|
||||||
</div>
|
</tbody>
|
||||||
<p class="comment">如果不启用此节点,此节点上的所有服务将不能访问。</p>
|
</table>
|
||||||
</td>
|
<submit-btn></submit-btn>
|
||||||
</tr>
|
</form>
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<submit-btn></submit-btn>
|
|
||||||
</form>
|
|
||||||
Reference in New Issue
Block a user