@@ -34,12 +34,13 @@ logScope:
3434const ROUTE_ADMIN_V1_PEERS * = " /admin/v1/peers" # returns all peers
3535const ROUTE_ADMIN_V1_SINGLE_PEER * = " /admin/v1/peer/{peerId}"
3636
37+ const ROUTE_ADMIN_V1_SERVICE_PEERS * = " /admin/v1/peers/service" # returns all peers
38+
3739const ROUTE_ADMIN_V1_CONNECTED_PEERS * = " /admin/v1/peers/connected"
3840const ROUTE_ADMIN_V1_CONNECTED_PEERS_ON_SHARD * =
3941 " /admin/v1/peers/connected/on/{shardId}"
40- const ROUTE_ADMIN_V1_CONNECTED_RELAY_PEERS * = " /admin/v1/peers/connected/relay"
41- const ROUTE_ADMIN_V1_CONNECTED_RELAY_PEERS_ON_SHARD * =
42- " /admin/v1/peers/connected/relay/on/{shardId}"
42+ const ROUTE_ADMIN_V1_RELAY_PEERS * = " /admin/v1/peers/relay"
43+ const ROUTE_ADMIN_V1_RELAY_PEERS_ON_SHARD * = " /admin/v1/peers/relay/on/{shardId}"
4344const ROUTE_ADMIN_V1_MESH_PEERS * = " /admin/v1/peers/mesh"
4445const ROUTE_ADMIN_V1_MESH_PEERS_ON_SHARD * = " /admin/v1/peers/mesh/on/{shardId}"
4546
@@ -62,46 +63,48 @@ proc tuplesToWakuPeers(peers: var WakuPeers, peersTup: seq[PeerProtocolTuple]) =
6263 peer.origin,
6364 )
6465
65- proc populateAdminPeerInfo (peers: var WakuPeers , node: WakuNode , codec: string ) =
66- let peersForCodec = node.peerManager.switch.peerStore.peers (codec).mapIt (
67- (
68- multiaddr: constructMultiaddrStr (it),
69- protocol: codec,
70- shards: it.getShards (),
71- connected: it.connectedness,
72- agent: it.agent,
73- origin: it.origin,
66+ proc populateAdminPeerInfo (
67+ peers: var WakuPeers , node: WakuNode , codec: Option [string ] = none [string ]()
68+ ) =
69+ if codec.isNone ():
70+ peers = node.peerManager.switch.peerStore.peers ().mapIt (WakuPeer .init (it))
71+ else :
72+ let peersTuples = node.peerManager.switch.peerStore.peers (codec.get ()).mapIt (
73+ (
74+ multiaddr: constructMultiaddrStr (it),
75+ protocol: codec.get (),
76+ shards: it.getShards (),
77+ connected: it.connectedness,
78+ agent: it.agent,
79+ origin: it.origin,
80+ )
7481 )
75- )
76- tuplesToWakuPeers (peers, peersForCodec)
82+ tuplesToWakuPeers (peers, peersTuples)
83+
84+ proc populateAdminPeerInfoForAll (node: WakuNode ): WakuPeers =
85+ var peers: WakuPeers = @ []
86+ populateAdminPeerInfo (peers, node)
87+ return peers
7788
7889proc populateAdminPeerInfoForCodecs (node: WakuNode , codecs: seq [string ]): WakuPeers =
7990 var peers: WakuPeers = @ []
8091
8192 for codec in codecs:
82- populateAdminPeerInfo (peers, node, codec)
93+ populateAdminPeerInfo (peers, node, some ( codec) )
8394
8495 return peers
8596
8697proc installAdminV1GetPeersHandler (router: var RestRouter , node: WakuNode ) =
8798 router.api (MethodGet , ROUTE_ADMIN_V1_PEERS ) do () -> RestApiResponse :
88- let peers = populateAdminPeerInfoForCodecs (
89- node,
90- @ [
91- WakuRelayCodec , WakuFilterSubscribeCodec , WakuStoreCodec , WakuLegacyStoreCodec ,
92- WakuLegacyLightPushCodec , WakuLightPushCodec , WakuPeerExchangeCodec ,
93- WakuReconciliationCodec ,
94- ],
95- )
99+ let peers = populateAdminPeerInfoForAll (node)
96100
97- let resp = RestApiResponse .jsonResponse (peers, status = Http200 )
98- if resp.isErr ():
99- error " An error occurred while building the json response: " , error = resp.error
101+ let resp = RestApiResponse .jsonResponse (peers, status = Http200 ).valueOr:
102+ error " An error occurred while building the json response: " , error = error
100103 return RestApiResponse .internalServerError (
101- fmt (" An error occurred while building the json response: {resp. error}" )
104+ fmt (" An error occurred while building the json response: {error}" )
102105 )
103106
104- return resp. get ()
107+ return resp
105108
106109 router.api (MethodGet , ROUTE_ADMIN_V1_SINGLE_PEER ) do (
107110 peerId: string
@@ -115,19 +118,18 @@ proc installAdminV1GetPeersHandler(router: var RestRouter, node: WakuNode) =
115118 if node.peerManager.switch.peerStore.peerExists (peerIdVal):
116119 let peerInfo = node.peerManager.switch.peerStore.getPeer (peerIdVal)
117120 let peer = WakuPeer .init (peerInfo)
118- let resp = RestApiResponse .jsonResponse (peer, status = Http200 )
119- if resp.isErr ():
120- error " An error occurred while building the json response: " , error = resp.error
121+ let resp = RestApiResponse .jsonResponse (peer, status = Http200 ).valueOr:
122+ error " An error occurred while building the json response: " , error = error
121123 return RestApiResponse .internalServerError (
122- fmt (" An error occurred while building the json response: {resp. error}" )
124+ fmt (" An error occurred while building the json response: {error}" )
123125 )
124126
125- return resp. get ()
127+ return resp
126128 else :
127129 return RestApiResponse .notFound (fmt (" Peer with ID {peerId} not found" ))
128130
129- router.api (MethodGet , ROUTE_ADMIN_V1_CONNECTED_PEERS ) do () -> RestApiResponse :
130- let allPeers = populateAdminPeerInfoForCodecs (
131+ router.api (MethodGet , ROUTE_ADMIN_V1_SERVICE_PEERS ) do () -> RestApiResponse :
132+ let peers = populateAdminPeerInfoForCodecs (
131133 node,
132134 @ [
133135 WakuRelayCodec , WakuFilterSubscribeCodec , WakuStoreCodec , WakuLegacyStoreCodec ,
@@ -136,46 +138,48 @@ proc installAdminV1GetPeersHandler(router: var RestRouter, node: WakuNode) =
136138 ],
137139 )
138140
141+ let resp = RestApiResponse .jsonResponse (peers, status = Http200 ).valueOr:
142+ error " An error occurred while building the json response: " , error = error
143+ return RestApiResponse .internalServerError (
144+ fmt (" An error occurred while building the json response: {error}" )
145+ )
146+
147+ return resp
148+
149+ router.api (MethodGet , ROUTE_ADMIN_V1_CONNECTED_PEERS ) do () -> RestApiResponse :
150+ let allPeers = populateAdminPeerInfoForAll (node)
151+
139152 let connectedPeers = allPeers.filterIt (it.connected == Connectedness .Connected )
140153
141- let resp = RestApiResponse .jsonResponse (connectedPeers, status = Http200 )
142- if resp.isErr ():
143- error " An error occurred while building the json response: " , error = resp.error
154+ let resp = RestApiResponse .jsonResponse (connectedPeers, status = Http200 ).valueOr:
155+ error " An error occurred while building the json response: " , error = error
144156 return RestApiResponse .internalServerError (
145- fmt (" An error occurred while building the json response: {resp. error}" )
157+ fmt (" An error occurred while building the json response: {error}" )
146158 )
147159
148- return resp. get ()
160+ return resp
149161
150162 router.api (MethodGet , ROUTE_ADMIN_V1_CONNECTED_PEERS_ON_SHARD ) do (
151163 shardId: uint16
152164 ) -> RestApiResponse :
153165 let shard = shardId.valueOr:
154166 return RestApiResponse .badRequest (fmt (" Invalid shardId: {error}" ))
155167
156- let allPeers = populateAdminPeerInfoForCodecs (
157- node,
158- @ [
159- WakuRelayCodec , WakuFilterSubscribeCodec , WakuStoreCodec , WakuLegacyStoreCodec ,
160- WakuLegacyLightPushCodec , WakuLightPushCodec , WakuPeerExchangeCodec ,
161- WakuReconciliationCodec ,
162- ],
163- )
168+ let allPeers = populateAdminPeerInfoForAll (node)
164169
165170 let connectedPeers = allPeers.filterIt (
166171 it.connected == Connectedness .Connected and it.shards.contains (shard)
167172 )
168173
169- let resp = RestApiResponse .jsonResponse (connectedPeers, status = Http200 )
170- if resp.isErr ():
171- error " An error occurred while building the json response: " , error = resp.error
174+ let resp = RestApiResponse .jsonResponse (connectedPeers, status = Http200 ).valueOr:
175+ error " An error occurred while building the json response: " , error = error
172176 return RestApiResponse .internalServerError (
173- fmt (" An error occurred while building the json response: {resp. error}" )
177+ fmt (" An error occurred while building the json response: {error}" )
174178 )
175179
176- return resp. get ()
180+ return resp
177181
178- router.api (MethodGet , ROUTE_ADMIN_V1_CONNECTED_RELAY_PEERS ) do () -> RestApiResponse :
182+ router.api (MethodGet , ROUTE_ADMIN_V1_RELAY_PEERS ) do () -> RestApiResponse :
179183 if node.wakuRelay.isNil ():
180184 return RestApiResponse .serviceUnavailable (
181185 " Error: Relay Protocol is not mounted to the node"
@@ -195,16 +199,15 @@ proc installAdminV1GetPeersHandler(router: var RestRouter, node: WakuNode) =
195199 )
196200 )
197201
198- let resp = RestApiResponse .jsonResponse (relayPeers, status = Http200 )
199- if resp.isErr ():
200- error " An error occurred while building the json response: " , error = resp.error
202+ let resp = RestApiResponse .jsonResponse (relayPeers, status = Http200 ).valueOr:
203+ error " An error occurred while building the json response: " , error = error
201204 return RestApiResponse .internalServerError (
202- fmt (" An error occurred while building the json response: {resp. error}" )
205+ fmt (" An error occurred while building the json response: {error}" )
203206 )
204207
205- return resp. get ()
208+ return resp
206209
207- router.api (MethodGet , ROUTE_ADMIN_V1_CONNECTED_RELAY_PEERS_ON_SHARD ) do (
210+ router.api (MethodGet , ROUTE_ADMIN_V1_RELAY_PEERS_ON_SHARD ) do (
208211 shardId: uint16
209212 ) -> RestApiResponse :
210213 let shard = shardId.valueOr:
@@ -223,14 +226,13 @@ proc installAdminV1GetPeersHandler(router: var RestRouter, node: WakuNode) =
223226 shard: shard, peers: toSeq (pubsubPeers).mapIt (WakuPeer .init (it, node.peerManager))
224227 )
225228
226- let resp = RestApiResponse .jsonResponse (relayPeer, status = Http200 )
227- if resp.isErr ():
228- error " An error occurred while building the json response: " , error = resp.error
229+ let resp = RestApiResponse .jsonResponse (relayPeer, status = Http200 ).valueOr:
230+ error " An error occurred while building the json response: " , error = error
229231 return RestApiResponse .internalServerError (
230- fmt (" An error occurred while building the json response: {resp. error}" )
232+ fmt (" An error occurred while building the json response: {error}" )
231233 )
232234
233- return resp. get ()
235+ return resp
234236
235237 router.api (MethodGet , ROUTE_ADMIN_V1_MESH_PEERS ) do () -> RestApiResponse :
236238 if node.wakuRelay.isNil ():
@@ -252,14 +254,13 @@ proc installAdminV1GetPeersHandler(router: var RestRouter, node: WakuNode) =
252254 )
253255 )
254256
255- let resp = RestApiResponse .jsonResponse (relayPeers, status = Http200 )
256- if resp.isErr ():
257- error " An error occurred while building the json response: " , error = resp.error
257+ let resp = RestApiResponse .jsonResponse (relayPeers, status = Http200 ).valueOr:
258+ error " An error occurred while building the json response: " , error = error
258259 return RestApiResponse .internalServerError (
259- fmt (" An error occurred while building the json response: {resp. error}" )
260+ fmt (" An error occurred while building the json response: {error}" )
260261 )
261262
262- return resp. get ()
263+ return resp
263264
264265 router.api (MethodGet , ROUTE_ADMIN_V1_MESH_PEERS_ON_SHARD ) do (
265266 shardId: uint16
@@ -280,14 +281,13 @@ proc installAdminV1GetPeersHandler(router: var RestRouter, node: WakuNode) =
280281 shard: shard, peers: toSeq (peers).mapIt (WakuPeer .init (it, node.peerManager))
281282 )
282283
283- let resp = RestApiResponse .jsonResponse (relayPeer, status = Http200 )
284- if resp.isErr ():
285- error " An error occurred while building the json response: " , error = resp.error
284+ let resp = RestApiResponse .jsonResponse (relayPeer, status = Http200 ).valueOr:
285+ error " An error occurred while building the json response: " , error = error
286286 return RestApiResponse .internalServerError (
287- fmt (" An error occurred while building the json response: {resp. error}" )
287+ fmt (" An error occurred while building the json response: {error}" )
288288 )
289289
290- return resp. get ()
290+ return resp
291291
292292proc installAdminV1PostPeersHandler (router: var RestRouter , node: WakuNode ) =
293293 router.api (MethodPost , ROUTE_ADMIN_V1_PEERS ) do (
0 commit comments