MCPcopy Create free account
hub / github.com/actiontech/dtle / FindNomadNodes

Function FindNomadNodes

api/handler/v2/node.go:35–90  ·  view source on GitHub ↗
(logger g.LoggerType)

Source from the content-addressed store, hash-verified

33}
34
35func FindNomadNodes(logger g.LoggerType) ([]models.NodeListItemV2, error) {
36 logger.Info("invoke nomad api begin : nodesUrl")
37 nodesUrl := handler.BuildUrl("/v1/nodes")
38 nomadNodes := make([]nomadApi.NodeListStub, 0)
39 if err := handler.InvokeApiWithKvData(http.MethodGet, nodesUrl, nil, &nomadNodes); nil != err {
40 return nil, err
41 }
42 nomadNodes, err := FindNodeList()
43 if err != nil {
44 return nil, err
45 }
46
47 membersUrl := handler.BuildUrl("/v1/agent/members")
48 logger.Info("invoke nomad api begin", "membersUrl", membersUrl)
49 nomadMembers := new(nomadApi.ServerMembers)
50 if err := handler.InvokeApiWithKvData(http.MethodGet, membersUrl, nil, nomadMembers); nil != err {
51 return nil, err
52 }
53 membersMap := make(map[string]struct{}, len(nomadMembers.Members))
54 for _, agentMember := range nomadMembers.Members {
55 membersMap[agentMember.Addr] = struct{}{}
56 }
57
58 leaderUrl := handler.BuildUrl("/v1/status/leader")
59 logger.Info("invoke nomad api begin", "leaderUrl", leaderUrl)
60 leader := new(string)
61 if err := handler.InvokeApiWithKvData(http.MethodGet, leaderUrl, nil, leader); nil != err {
62 return nil, err
63 }
64 logger.Info("invoke nomad api finished")
65
66 nodes := make([]models.NodeListItemV2, 0)
67 for _, nomadNode := range nomadNodes {
68 node := models.NodeListItemV2{
69 NodeAddress: nomadNode.Address,
70 NodeName: nomadNode.Name,
71 NodeId: nomadNode.ID,
72 NodeStatus: nomadNode.Status,
73 NodeStatusDescription: nomadNode.StatusDescription,
74 Datacenter: nomadNode.Datacenter,
75 NomadVersion: nomadNode.Version,
76 DtleVersion: nomadNode.Drivers["dtle"].Attributes["driver.dtle.full_version"],
77 }
78 if nomadNode.Drivers["dtle"] != nil {
79 node.DtleVersion = nomadNode.Drivers["dtle"].Attributes["driver.dtle.full_version"]
80 }
81 if strings.Split(*leader, ":")[0] == node.NodeAddress {
82 node.Leader = true
83 }
84 if _, ok := membersMap[node.NodeAddress]; ok {
85 node.Member = true
86 }
87 nodes = append(nodes, node)
88 }
89 return nodes, nil
90}
91
92func GetNodeInfo(nodeId string) (nomadApi.Node, error) {

Callers 2

buildBasicTaskProfileFunction · 0.85
NodeListV2Function · 0.85

Calls 3

BuildUrlFunction · 0.92
InvokeApiWithKvDataFunction · 0.92
FindNodeListFunction · 0.85

Tested by

no test coverage detected