mirror of
https://github.com/openziti/ziti.git
synced 2026-10-03 12:10:30 +00:00
58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
package api_impl
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/go-openapi/runtime/middleware"
|
|
"github.com/openziti/ziti/controller/api"
|
|
"github.com/openziti/ziti/controller/network"
|
|
nfraft "github.com/openziti/ziti/controller/raft"
|
|
"github.com/openziti/ziti/controller/rest_model"
|
|
"github.com/openziti/ziti/controller/rest_server/operations"
|
|
"github.com/openziti/ziti/controller/rest_server/operations/raft"
|
|
)
|
|
|
|
func init() {
|
|
r := NewRaftRouter()
|
|
AddRouter(r)
|
|
}
|
|
|
|
type RaftRouter struct {
|
|
}
|
|
|
|
func NewRaftRouter() *RaftRouter {
|
|
return &RaftRouter{}
|
|
}
|
|
|
|
func (r *RaftRouter) Register(fabricApi *operations.ZitiFabricAPI, wrapper RequestWrapper) {
|
|
fabricApi.RaftRaftListMembersHandler = raft.RaftListMembersHandlerFunc(func(params raft.RaftListMembersParams) middleware.Responder {
|
|
return wrapper.WrapRequest(r.ListMembers, params.HTTPRequest, "", "")
|
|
})
|
|
}
|
|
|
|
func (r *RaftRouter) ListMembers(n *network.Network, rc api.RequestContext) {
|
|
vals := make([]*rest_model.RaftMemberListValue, 0)
|
|
|
|
if n.Dispatcher != nil {
|
|
rctrl := n.Dispatcher.(*nfraft.Controller)
|
|
members, err := rctrl.ListMembers()
|
|
if err != nil {
|
|
rc.Respond(rest_model.RaftMemberListResponse{}, http.StatusInternalServerError)
|
|
}
|
|
for _, member := range members {
|
|
vals = append(vals, &rest_model.RaftMemberListValue{
|
|
Address: &member.Addr,
|
|
Connected: &member.Connected,
|
|
ID: &member.Id,
|
|
Leader: &member.Leader,
|
|
Version: &member.Version,
|
|
Voter: &member.Voter,
|
|
})
|
|
}
|
|
}
|
|
|
|
rc.Respond(rest_model.RaftMemberListResponse{
|
|
Values: vals,
|
|
}, http.StatusOK)
|
|
}
|