可以在创建、修改节点的时候选择分组,可以根据分组筛选节点

This commit is contained in:
GoEdgeLab
2020-10-28 20:00:27 +08:00
parent 7aa62ea822
commit d68a49cb41
21 changed files with 310 additions and 33 deletions

View File

@@ -42,6 +42,7 @@ func (this *CreateBatchAction) RunGet(params struct {
func (this *CreateBatchAction) RunPost(params struct {
ClusterId int64
GroupId int64
IpList string
Must *actions.Must
@@ -76,6 +77,7 @@ func (this *CreateBatchAction) RunPost(params struct {
resp, err := this.RPC().NodeRPC().CreateNode(this.AdminContext(), &pb.CreateNodeRequest{
Name: ip,
ClusterId: params.ClusterId,
GroupId: params.GroupId,
Login: nil,
})
if err != nil {

View File

@@ -43,6 +43,7 @@ func (this *CreateNodeAction) RunPost(params struct {
Name string
IpAddressesJSON []byte
ClusterId int64
GroupId int64
GrantId int64
SshHost string
SshPort int
@@ -78,6 +79,7 @@ func (this *CreateNodeAction) RunPost(params struct {
createResp, err := this.RPC().NodeRPC().CreateNode(this.AdminContext(), &pb.CreateNodeRequest{
Name: params.Name,
ClusterId: params.ClusterId,
GroupId: params.GroupId,
Login: loginInfo,
})
if err != nil {

View File

@@ -4,6 +4,7 @@ import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps"
)
type CreatePopupAction struct {
@@ -31,7 +32,7 @@ func (this *CreatePopupAction) RunPost(params struct {
params.Must.
Field("name", params.Name).
Require("请输入分组名称")
_, err := this.RPC().NodeGroupRPC().CreateNodeGroup(this.AdminContext(), &pb.CreateNodeGroupRequest{
createResp, err := this.RPC().NodeGroupRPC().CreateNodeGroup(this.AdminContext(), &pb.CreateNodeGroupRequest{
ClusterId: params.ClusterId,
Name: params.Name,
})
@@ -40,5 +41,10 @@ func (this *CreatePopupAction) RunPost(params struct {
return
}
this.Data["group"] = maps.Map{
"id": createResp.GroupId,
"name": params.Name,
}
this.Success()
}

View File

@@ -0,0 +1,31 @@
package groups
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/maps"
)
type OptionsAction struct {
actionutils.ParentAction
}
func (this *OptionsAction) RunPost(params struct {
ClusterId int64
}) {
groupsResp, err := this.RPC().NodeGroupRPC().FindAllEnabledNodeGroupsWithClusterId(this.AdminContext(), &pb.FindAllEnabledNodeGroupsWithClusterIdRequest{ClusterId: params.ClusterId})
if err != nil {
this.ErrorPage(err)
}
groupMaps := []maps.Map{}
for _, group := range groupsResp.Groups {
groupMaps = append(groupMaps, maps.Map{
"id": group.Id,
"name": group.Name,
})
}
this.Data["groups"] = groupMaps
this.Success()
}

View File

@@ -0,0 +1,64 @@
package groups
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps"
)
type SelectPopupAction struct {
actionutils.ParentAction
}
func (this *SelectPopupAction) Init() {
this.Nav("", "", "")
}
func (this *SelectPopupAction) RunGet(params struct {
ClusterId int64
}) {
groupsResp, err := this.RPC().NodeGroupRPC().FindAllEnabledNodeGroupsWithClusterId(this.AdminContext(), &pb.FindAllEnabledNodeGroupsWithClusterIdRequest{ClusterId: params.ClusterId})
if err != nil {
this.ErrorPage(err)
}
groupMaps := []maps.Map{}
for _, group := range groupsResp.Groups {
groupMaps = append(groupMaps, maps.Map{
"id": group.Id,
"name": group.Name,
})
}
this.Data["groups"] = groupMaps
this.Show()
}
func (this *SelectPopupAction) RunPost(params struct {
GroupId int64
Must *actions.Must
}) {
if params.GroupId <= 0 {
this.Fail("请选择要使用的分组")
}
groupResp, err := this.RPC().NodeGroupRPC().FindEnabledNodeGroup(this.AdminContext(), &pb.FindEnabledNodeGroupRequest{GroupId: params.GroupId})
if err != nil {
this.ErrorPage(err)
return
}
group := groupResp.Group
if group == nil {
this.NotFound("nodeGroup", params.GroupId)
return
}
this.Data["group"] = maps.Map{
"id": group.Id,
"name": group.Name,
}
this.Success()
}

View File

@@ -23,16 +23,19 @@ func (this *IndexAction) Init() {
func (this *IndexAction) RunGet(params struct {
ClusterId int64
GroupId int64
InstalledState int
ActiveState int
Keyword string
}) {
this.Data["groupId"] = params.GroupId
this.Data["installState"] = params.InstalledState
this.Data["activeState"] = params.ActiveState
this.Data["keyword"] = params.Keyword
countResp, err := this.RPC().NodeRPC().CountAllEnabledNodesMatch(this.AdminContext(), &pb.CountAllEnabledNodesMatchRequest{
ClusterId: params.ClusterId,
GroupId: params.GroupId,
InstallState: types.Int32(params.InstalledState),
ActiveState: types.Int32(params.ActiveState),
Keyword: params.Keyword,
@@ -49,6 +52,7 @@ func (this *IndexAction) RunGet(params struct {
Offset: page.Offset,
Size: page.Size,
ClusterId: params.ClusterId,
GroupId: params.GroupId,
InstallState: types.Int32(params.InstalledState),
ActiveState: types.Int32(params.ActiveState),
Keyword: params.Keyword,
@@ -84,6 +88,14 @@ func (this *IndexAction) RunGet(params struct {
})
}
var groupMap maps.Map = nil
if node.Group != nil {
groupMap = maps.Map{
"id": node.Group.Id,
"name": node.Group.Name,
}
}
nodeMaps = append(nodeMaps, maps.Map{
"id": node.Id,
"name": node.Name,
@@ -110,9 +122,35 @@ func (this *IndexAction) RunGet(params struct {
},
"isSynced": isSynced,
"ipAddresses": ipAddresses,
"group": groupMap,
})
}
this.Data["nodes"] = nodeMaps
// 所有分组
groupMaps := []maps.Map{}
groupsResp, err := this.RPC().NodeGroupRPC().FindAllEnabledNodeGroupsWithClusterId(this.AdminContext(), &pb.FindAllEnabledNodeGroupsWithClusterIdRequest{
ClusterId: params.ClusterId,
})
if err != nil {
this.ErrorPage(err)
return
}
for _, group := range groupsResp.Groups {
countResp, err := this.RPC().NodeRPC().CountAllEnabledNodesWithGroupId(this.AdminContext(), &pb.CountAllEnabledNodesWithGroupIdRequest{GroupId: group.Id})
if err != nil {
this.ErrorPage(err)
return
}
countNodes := countResp.Count
groupMaps = append(groupMaps, maps.Map{
"id": group.Id,
"name": group.Name,
"countNodes": countNodes,
})
}
this.Data["groups"] = groupMaps
this.Show()
}

View File

@@ -42,6 +42,8 @@ func init() {
GetPost("/groups/updatePopup", new(groups.UpdatePopupAction)).
Post("/groups/delete", new(groups.DeleteAction)).
Post("/groups/sort", new(groups.SortAction)).
Post("/groups/options", new(groups.OptionsAction)).
GetPost("/groups/selectPopup", new(groups.SelectPopupAction)).
EndAll()
})

View File

@@ -120,6 +120,14 @@ func (this *NodeAction) RunGet(params struct {
status.IsActive = status.IsActive && time.Now().Unix()-status.UpdatedAt <= 60 // N秒之内认为活跃
}
var groupMap maps.Map = nil
if node.Group != nil {
groupMap = maps.Map{
"id": node.Group.Id,
"name": node.Group.Name,
}
}
this.Data["node"] = maps.Map{
"id": node.Id,
"name": node.Name,
@@ -142,6 +150,8 @@ func (this *NodeAction) RunGet(params struct {
"memUsage": status.MemoryUsage,
"memUsageText": fmt.Sprintf("%.2f%%", status.MemoryUsage*100),
},
"group": groupMap,
}
this.Show()

View File

@@ -98,6 +98,14 @@ func (this *UpdateAction) RunGet(params struct {
}
}
var groupMap maps.Map = nil
if node.Group != nil {
groupMap = maps.Map{
"id": node.Group.Id,
"name": node.Group.Name,
}
}
this.Data["node"] = maps.Map{
"id": node.Id,
"name": node.Name,
@@ -106,6 +114,7 @@ func (this *UpdateAction) RunGet(params struct {
"login": loginMap,
"maxCPU": node.MaxCPU,
"isOn": node.IsOn,
"group": groupMap,
}
// 所有集群
@@ -132,6 +141,7 @@ func (this *UpdateAction) RunGet(params struct {
func (this *UpdateAction) RunPost(params struct {
LoginId int64
NodeId int64
GroupId int64
Name string
IPAddressesJSON []byte `alias:"ipAddressesJSON"`
ClusterId int64
@@ -171,6 +181,7 @@ func (this *UpdateAction) RunPost(params struct {
// 保存
_, err := this.RPC().NodeRPC().UpdateNode(this.AdminContext(), &pb.UpdateNodeRequest{
NodeId: params.NodeId,
GroupId: params.GroupId,
Name: params.Name,
ClusterId: params.ClusterId,
Login: loginInfo,