实现边缘节点下线和由转发服务维护的端口分配机制
This commit is contained in:
@@ -21,6 +21,7 @@ type RegisterEdgeReq struct {
|
||||
}
|
||||
|
||||
type RegisterEdgeResp struct {
|
||||
Id int32 `json:"id"`
|
||||
Host string `json:"host"`
|
||||
}
|
||||
|
||||
@@ -47,10 +48,7 @@ func OnlineEdge(c *fiber.Ctx) (err error) {
|
||||
}
|
||||
|
||||
// 保存节点信息
|
||||
err = q.Edge.Clauses(clause.OnConflict{
|
||||
UpdateAll: true,
|
||||
Columns: []clause.Column{{Name: "name"}},
|
||||
}).Create(&m.Edge{
|
||||
var edge = &m.Edge{
|
||||
Name: req.Name,
|
||||
Version: int32(req.Version),
|
||||
Host: c.Context().RemoteIP().String(),
|
||||
@@ -60,13 +58,41 @@ func OnlineEdge(c *fiber.Ctx) (err error) {
|
||||
ProxyID: fwd.ID,
|
||||
Type: int32(edge2.TypeSelfHosted),
|
||||
Status: 1,
|
||||
})
|
||||
}
|
||||
err = q.Edge.Clauses(clause.OnConflict{
|
||||
UpdateAll: true,
|
||||
Columns: []clause.Column{{Name: "name"}},
|
||||
}).Create(edge)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 返回服务地址
|
||||
return c.JSON(RegisterEdgeResp{
|
||||
Id: edge.ID,
|
||||
Host: fwd.Host,
|
||||
})
|
||||
}
|
||||
|
||||
type OfflineEdgeReq struct {
|
||||
Name string `json:"name" validate:"required"`
|
||||
}
|
||||
|
||||
func OfflineEdge(c *fiber.Ctx) (err error) {
|
||||
// 验证请求参数
|
||||
var req = new(OfflineEdgeReq)
|
||||
err = g.Validator.Validate(c, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 下线转发服务
|
||||
_, err = q.Edge.
|
||||
Where(q.Edge.Name.Eq(req.Name)).
|
||||
UpdateSimple(q.Edge.Status.Value(0))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return c.SendStatus(fiber.StatusOK)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user