mirror of
https://github.com/logos-storage/logos-storage-nim.git
synced 2026-06-26 12:29:30 +00:00
chore: unify debug endpoints across REST and logos module APIs
This commit is contained in:
parent
fd7f712901
commit
92d122bc50
@ -49,19 +49,8 @@ proc destroyShared(self: ptr NodeDebugRequest) =
|
||||
proc getDebug(
|
||||
storage: ptr StorageServer
|
||||
): Future[Result[string, string]] {.async: (raises: []).} =
|
||||
let node = storage[].node
|
||||
let table = RestRoutingTable.init(node.discovery.protocol.routingTable)
|
||||
|
||||
let json = %*{
|
||||
"id": $node.switch.peerInfo.peerId,
|
||||
"addrs": node.switch.peerInfo.addrs.mapIt($it),
|
||||
"spr":
|
||||
if node.discovery.dhtRecord.isSome: node.discovery.dhtRecord.get.toURI else: "",
|
||||
"announceAddresses": node.discovery.announceAddrs,
|
||||
"table": table,
|
||||
}
|
||||
|
||||
return ok($json)
|
||||
let nodeInfo = %DebugInfo.init(storage[].node)
|
||||
return ok($nodeInfo)
|
||||
|
||||
proc getPeer(
|
||||
storage: ptr StorageServer, peerId: cstring
|
||||
|
||||
@ -103,7 +103,6 @@ components:
|
||||
required:
|
||||
- id
|
||||
- addrs
|
||||
- repo
|
||||
- spr
|
||||
- announceAddresses
|
||||
- table
|
||||
@ -115,9 +114,6 @@ components:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/MultiAddress"
|
||||
repo:
|
||||
type: string
|
||||
description: Path of the data repository where all nodes data are stored
|
||||
spr:
|
||||
$ref: "#/components/schemas/SPR"
|
||||
announceAddresses:
|
||||
|
||||
@ -557,7 +557,7 @@ proc initNodeApi(node: StorageNodeRef, conf: StorageConf, router: var RestRouter
|
||||
return
|
||||
RestApiResponse.error(Http500, "Unknown error dialling peer", headers = headers)
|
||||
|
||||
proc initDebugApi(node: StorageNodeRef, conf: StorageConf, router: var RestRouter) =
|
||||
proc initDebugApi(node: StorageNodeRef, router: var RestRouter) =
|
||||
let allowedOrigin = router.allowedOrigin
|
||||
|
||||
router.api(MethodGet, "/api/storage/v1/debug/info") do() -> RestApiResponse:
|
||||
@ -566,27 +566,11 @@ proc initDebugApi(node: StorageNodeRef, conf: StorageConf, router: var RestRoute
|
||||
var headers = buildCorsHeaders("GET", allowedOrigin)
|
||||
|
||||
try:
|
||||
let table = RestRoutingTable.init(node.discovery.protocol.routingTable)
|
||||
|
||||
let json = %*{
|
||||
"id": $node.switch.peerInfo.peerId,
|
||||
"addrs": node.switch.peerInfo.addrs.mapIt($it),
|
||||
"repo": $conf.dataDir,
|
||||
"spr":
|
||||
if node.discovery.dhtRecord.isSome: node.discovery.dhtRecord.get.toURI else: "",
|
||||
"providerRecord":
|
||||
if node.discovery.providerRecord.isSome:
|
||||
node.discovery.providerRecord.get.toURI
|
||||
else:
|
||||
"",
|
||||
"announceAddresses": node.discovery.announceAddrs,
|
||||
"table": table,
|
||||
"storage": {"version": $storageVersion, "revision": $storageRevision},
|
||||
}
|
||||
|
||||
# return pretty json for human readability
|
||||
return RestApiResponse.response(
|
||||
json.pretty(), contentType = "application/json", headers = headers
|
||||
DebugInfo.init(node).toJson(pretty = true),
|
||||
contentType = "application/json",
|
||||
headers = headers,
|
||||
)
|
||||
except CatchableError as exc:
|
||||
trace "Excepting processing request", exc = exc.msg
|
||||
@ -648,6 +632,6 @@ proc initRestApi*(
|
||||
|
||||
initDataApi(node, repoStore, router)
|
||||
initNodeApi(node, conf, router)
|
||||
initDebugApi(node, conf, router)
|
||||
initDebugApi(node, router)
|
||||
|
||||
return router
|
||||
|
||||
@ -2,6 +2,8 @@ import pkg/questionable
|
||||
import pkg/libp2p
|
||||
import pkg/codexdht/discv5/node as dn
|
||||
import pkg/codexdht/discv5/routing_table as rt
|
||||
import ../node
|
||||
import ../conf
|
||||
import ../utils/json
|
||||
import ../manifest
|
||||
import ../units
|
||||
@ -41,6 +43,20 @@ type
|
||||
quotaUsedBytes* {.serialize.}: NBytes
|
||||
quotaReservedBytes* {.serialize.}: NBytes
|
||||
|
||||
VersionInfo* = object
|
||||
version* {.serialize.}: string
|
||||
revision* {.serialize.}: string
|
||||
|
||||
DebugInfo* = object
|
||||
id* {.serialize.}: PeerId
|
||||
addrs* {.serialize.}: seq[MultiAddress]
|
||||
repo* {.serialize.}: string
|
||||
spr* {.serialize.}: Option[SignedPeerRecord]
|
||||
providerRecord* {.serialize.}: Option[SignedPeerRecord]
|
||||
announceAddresses* {.serialize.}: seq[MultiAddress]
|
||||
table* {.serialize.}: RestRoutingTable
|
||||
storage* {.serialize.}: VersionInfo
|
||||
|
||||
proc init*(_: type RestContentList, content: seq[RestContent]): RestContentList =
|
||||
RestContentList(content: content)
|
||||
|
||||
@ -74,3 +90,14 @@ proc init*(_: type RestNodeId, id: NodeId): RestNodeId =
|
||||
|
||||
proc `%`*(obj: RestNodeId): JsonNode =
|
||||
% $obj.id
|
||||
|
||||
proc init*(_: type DebugInfo, node: StorageNodeRef): DebugInfo =
|
||||
DebugInfo(
|
||||
id: node.switch.peerInfo.peerId,
|
||||
addrs: node.switch.peerInfo.addrs,
|
||||
spr: node.discovery.dhtRecord,
|
||||
providerRecord: node.discovery.providerRecord,
|
||||
announceAddresses: node.discovery.announceAddrs,
|
||||
table: RestRoutingTable.init(node.discovery.protocol.routingTable),
|
||||
storage: VersionInfo(version: $storageVersion, revision: $storageRevision),
|
||||
)
|
||||
|
||||
@ -103,6 +103,8 @@ proc start*(s: StorageServer) {.async.} =
|
||||
raise newException(StorageError, "Failed to load Mix relay pool: " & error.msg)
|
||||
mixProto = MixProtocol.new(mixNodeInfo, switch)
|
||||
|
||||
info "Starting node with Mix relay pool", count = relayPool.len
|
||||
|
||||
for info in relayPool.values:
|
||||
mixProto.nodePool.add(info)
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ from pkg/libp2p import
|
||||
Cid, PeerId, SignedPeerRecord, MultiAddress, AddressInfo, init, `$`
|
||||
import pkg/contractabi
|
||||
import pkg/codexdht/discv5/node as dn
|
||||
import pkg/codexdht/discv5/spr as spr
|
||||
import pkg/serde/json
|
||||
import pkg/questionable/results
|
||||
import ../errors
|
||||
@ -19,8 +20,8 @@ func `%`*(cid: Cid): JsonNode =
|
||||
func `%`*(obj: PeerId): JsonNode =
|
||||
% $obj
|
||||
|
||||
func `%`*(obj: SignedPeerRecord): JsonNode =
|
||||
% $obj
|
||||
proc `%`*(obj: SignedPeerRecord): JsonNode =
|
||||
%obj.toURI
|
||||
|
||||
func `%`*(obj: dn.Address): JsonNode =
|
||||
% $obj
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user