mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-06 06:40:27 +08:00
边缘节点支持设置多个缓存目录
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
|||||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
"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/cluster/node/nodeutils"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
|
"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"
|
||||||
@@ -57,9 +58,19 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var diskSubDirs = []*serverconfigs.CacheDir{}
|
||||||
|
if len(node.CacheDiskSubDirsJSON) > 0 {
|
||||||
|
err = json.Unmarshal(node.CacheDiskSubDirsJSON, &diskSubDirs)
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var nodeMap = this.Data["node"].(maps.Map)
|
var nodeMap = this.Data["node"].(maps.Map)
|
||||||
nodeMap["maxCacheDiskCapacity"] = maxCacheDiskCapacity
|
nodeMap["maxCacheDiskCapacity"] = maxCacheDiskCapacity
|
||||||
nodeMap["cacheDiskDir"] = node.CacheDiskDir
|
nodeMap["cacheDiskDir"] = node.CacheDiskDir
|
||||||
|
nodeMap["cacheDiskSubDirs"] = diskSubDirs
|
||||||
nodeMap["maxCacheMemoryCapacity"] = maxCacheMemoryCapacity
|
nodeMap["maxCacheMemoryCapacity"] = maxCacheMemoryCapacity
|
||||||
|
|
||||||
this.Show()
|
this.Show()
|
||||||
@@ -69,6 +80,7 @@ func (this *IndexAction) RunPost(params struct {
|
|||||||
NodeId int64
|
NodeId int64
|
||||||
MaxCacheDiskCapacityJSON []byte
|
MaxCacheDiskCapacityJSON []byte
|
||||||
CacheDiskDir string
|
CacheDiskDir string
|
||||||
|
CacheDiskSubDirsJSON []byte
|
||||||
MaxCacheMemoryCapacityJSON []byte
|
MaxCacheMemoryCapacityJSON []byte
|
||||||
|
|
||||||
Must *actions.Must
|
Must *actions.Must
|
||||||
@@ -105,10 +117,20 @@ func (this *IndexAction) RunPost(params struct {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(params.CacheDiskSubDirsJSON) > 0 {
|
||||||
|
var cacheSubDirs = []*serverconfigs.CacheDir{}
|
||||||
|
err := json.Unmarshal(params.CacheDiskSubDirsJSON, &cacheSubDirs)
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_, err := this.RPC().NodeRPC().UpdateNodeCache(this.AdminContext(), &pb.UpdateNodeCacheRequest{
|
_, err := this.RPC().NodeRPC().UpdateNodeCache(this.AdminContext(), &pb.UpdateNodeCacheRequest{
|
||||||
NodeId: params.NodeId,
|
NodeId: params.NodeId,
|
||||||
MaxCacheDiskCapacity: pbMaxCacheDiskCapacity,
|
MaxCacheDiskCapacity: pbMaxCacheDiskCapacity,
|
||||||
CacheDiskDir: params.CacheDiskDir,
|
CacheDiskDir: params.CacheDiskDir,
|
||||||
|
CacheDiskSubDirsJSON: params.CacheDiskSubDirsJSON,
|
||||||
MaxCacheMemoryCapacity: pbMaxCacheMemoryCapacity,
|
MaxCacheMemoryCapacity: pbMaxCacheMemoryCapacity,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
79
web/public/js/components/node/node-cache-disk-dirs-box.js
Normal file
79
web/public/js/components/node/node-cache-disk-dirs-box.js
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
Vue.component("node-cache-disk-dirs-box", {
|
||||||
|
props: ["value", "name"],
|
||||||
|
data: function () {
|
||||||
|
let dirs = this.value
|
||||||
|
if (dirs == null) {
|
||||||
|
dirs = []
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
dirs: dirs,
|
||||||
|
|
||||||
|
isEditing: false,
|
||||||
|
isAdding: false,
|
||||||
|
|
||||||
|
addingPath: ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
add: function () {
|
||||||
|
this.isAdding = true
|
||||||
|
let that = this
|
||||||
|
setTimeout(function () {
|
||||||
|
that.$refs.addingPath.focus()
|
||||||
|
}, 100)
|
||||||
|
},
|
||||||
|
confirm: function () {
|
||||||
|
let addingPath = this.addingPath.trim()
|
||||||
|
if (addingPath.length == 0) {
|
||||||
|
let that = this
|
||||||
|
teaweb.warn("请输入要添加的缓存目录", function () {
|
||||||
|
that.$refs.addingPath.focus()
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (addingPath[0] != "/") {
|
||||||
|
addingPath = "/" + addingPath
|
||||||
|
}
|
||||||
|
this.dirs.push({
|
||||||
|
path: addingPath
|
||||||
|
})
|
||||||
|
this.cancel()
|
||||||
|
},
|
||||||
|
cancel: function () {
|
||||||
|
this.addingPath = ""
|
||||||
|
this.isAdding = false
|
||||||
|
this.isEditing = false
|
||||||
|
},
|
||||||
|
remove: function (index) {
|
||||||
|
let that = this
|
||||||
|
teaweb.confirm("确定要删除此目录吗?", function () {
|
||||||
|
that.dirs.$remove(index)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
template: `<div>
|
||||||
|
<input type="hidden" :name="name" :value="JSON.stringify(dirs)"/>
|
||||||
|
<div style="margin-bottom: 0.3em">
|
||||||
|
<span class="ui label small basic" v-for="(dir, index) in dirs">
|
||||||
|
<i class="icon folder"></i>{{dir.path}} <a href="" title="删除" @click.prevent="remove(index)"><i class="icon remove small"></i></a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 添加 -->
|
||||||
|
<div v-if="isAdding">
|
||||||
|
<div class="ui fields inline">
|
||||||
|
<div class="ui field">
|
||||||
|
<input type="text" style="width: 30em" v-model="addingPath" @keyup.enter="confirm()" @keypress.enter.prevent="1" @keydown.esc="cancel()" ref="addingPath" placeholder="新的缓存目录,比如 /mnt/cache"/>
|
||||||
|
</div>
|
||||||
|
<div class="ui field">
|
||||||
|
<button class="ui button small" type="button" @click.prevent="confirm">确定</button>
|
||||||
|
<a href="" title="取消" @click.prevent="cancel"><i class="icon remove small"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-if="!isAdding">
|
||||||
|
<button class="ui button tiny" type="button" @click.prevent="add">+</button>
|
||||||
|
</div>
|
||||||
|
</div>`
|
||||||
|
})
|
||||||
@@ -15,10 +15,17 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>磁盘缓存目录</td>
|
<td>磁盘缓存主目录</td>
|
||||||
<td>
|
<td>
|
||||||
<input type="text" name="cacheDiskDir" maxlength="500" value="" v-model="node.cacheDiskDir"/>
|
<input type="text" name="cacheDiskDir" maxlength="500" value="" v-model="node.cacheDiskDir"/>
|
||||||
<p class="comment">存放文件缓存的目录,通常填写绝对路径。不填则表示使用集群缓存策略中定义的目录。</p>
|
<p class="comment">存放文件缓存的主目录,通常填写绝对路径。不填则表示使用集群缓存策略中定义的目录。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>其他磁盘缓存目录</td>
|
||||||
|
<td>
|
||||||
|
<node-cache-disk-dirs-box name="cacheDiskSubDirsJSON" v-model="node.cacheDiskSubDirs"></node-cache-disk-dirs-box>
|
||||||
|
<p class="comment">除了主目录外,可以在这里添加别的可用于缓存的目录;缓存目录有变更时(添加、删除或修改)需要手动将这些缓存目录清空。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
Reference in New Issue
Block a user