mirror of
https://github.com/waku-org/nwaku.git
synced 2025-01-27 15:16:05 +00:00
deploy: e7ba81ff880df302e22984bc1540f9c25c0bea92
This commit is contained in:
parent
83cd2e4f3d
commit
dd4d99c842
@ -2,7 +2,7 @@
|
||||
|
||||
# libtool - Provide generalized library-building support services.
|
||||
# Generated automatically by config.status (libbacktrace) version-unused
|
||||
# Libtool was configured on host fv-az180-641:
|
||||
# Libtool was configured on host fv-az47-448:
|
||||
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
|
||||
#
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
|
||||
|
@ -1,115 +0,0 @@
|
||||
{.push raises: [Defect].}
|
||||
|
||||
## Collection of utilities commonly used
|
||||
## during the setup phase of a Waku v2 node
|
||||
|
||||
import
|
||||
std/tables,
|
||||
chronos,
|
||||
chronicles,
|
||||
json_rpc/rpcserver,
|
||||
metrics,
|
||||
metrics/chronos_httpserver,
|
||||
stew/results,
|
||||
stew/shims/net,
|
||||
./storage/sqlite,
|
||||
./storage/migration/migration_types,
|
||||
./jsonrpc/[admin_api,
|
||||
debug_api,
|
||||
filter_api,
|
||||
relay_api,
|
||||
store_api,
|
||||
private_api,
|
||||
debug_api],
|
||||
./config,
|
||||
./wakunode2
|
||||
|
||||
logScope:
|
||||
topics = "wakunode.setup"
|
||||
|
||||
type
|
||||
SetupResult*[T] = Result[T, string]
|
||||
|
||||
##########################
|
||||
# Setup helper functions #
|
||||
##########################
|
||||
|
||||
proc startRpc*(node: WakuNode, rpcIp: ValidIpAddress, rpcPort: Port, conf: WakuNodeConf)
|
||||
{.raises: [Defect, RpcBindError, CatchableError].} =
|
||||
# @TODO: API handlers still raise CatchableError
|
||||
|
||||
let
|
||||
ta = initTAddress(rpcIp, rpcPort)
|
||||
rpcServer = newRpcHttpServer([ta])
|
||||
installDebugApiHandlers(node, rpcServer)
|
||||
|
||||
# Install enabled API handlers:
|
||||
if conf.relay:
|
||||
let topicCache = newTable[string, seq[WakuMessage]]()
|
||||
installRelayApiHandlers(node, rpcServer, topicCache)
|
||||
if conf.rpcPrivate:
|
||||
# Private API access allows WakuRelay functionality that
|
||||
# is backwards compatible with Waku v1.
|
||||
installPrivateApiHandlers(node, rpcServer, node.rng, topicCache)
|
||||
|
||||
if conf.filter:
|
||||
let messageCache = newTable[ContentTopic, seq[WakuMessage]]()
|
||||
installFilterApiHandlers(node, rpcServer, messageCache)
|
||||
|
||||
if conf.store:
|
||||
installStoreApiHandlers(node, rpcServer)
|
||||
|
||||
if conf.rpcAdmin:
|
||||
installAdminApiHandlers(node, rpcServer)
|
||||
|
||||
rpcServer.start()
|
||||
info "RPC Server started", ta
|
||||
|
||||
proc startMetricsServer*(serverIp: ValidIpAddress, serverPort: Port) =
|
||||
info "Starting metrics HTTP server", serverIp, serverPort
|
||||
|
||||
try:
|
||||
startMetricsHttpServer($serverIp, serverPort)
|
||||
except Exception as e:
|
||||
raiseAssert("Exception while starting metrics HTTP server: " & e.msg)
|
||||
|
||||
info "Metrics HTTP server started", serverIp, serverPort
|
||||
|
||||
proc startMetricsLog*() =
|
||||
# https://github.com/nim-lang/Nim/issues/17369
|
||||
var logMetrics: proc(udata: pointer) {.gcsafe, raises: [Defect].}
|
||||
logMetrics = proc(udata: pointer) =
|
||||
{.gcsafe.}:
|
||||
# TODO: libp2p_pubsub_peers is not public, so we need to make this either
|
||||
# public in libp2p or do our own peer counting after all.
|
||||
var
|
||||
totalMessages = 0.float64
|
||||
|
||||
for key in waku_node_messages.metrics.keys():
|
||||
try:
|
||||
totalMessages = totalMessages + waku_node_messages.value(key)
|
||||
except KeyError:
|
||||
discard
|
||||
|
||||
info "Node metrics", totalMessages
|
||||
discard setTimer(Moment.fromNow(2.seconds), logMetrics)
|
||||
discard setTimer(Moment.fromNow(2.seconds), logMetrics)
|
||||
|
||||
proc runMigrations*(sqliteDatabase: SqliteDatabase, conf: WakuNodeConf) =
|
||||
# Run migration scripts on persistent storage
|
||||
|
||||
var migrationPath: string
|
||||
if conf.persistPeers and conf.persistMessages:
|
||||
migrationPath = migration_types.ALL_STORE_MIGRATION_PATH
|
||||
elif conf.persistPeers:
|
||||
migrationPath = migration_types.PEER_STORE_MIGRATION_PATH
|
||||
elif conf.persistMessages:
|
||||
migrationPath = migration_types.MESSAGE_STORE_MIGRATION_PATH
|
||||
|
||||
# run migration
|
||||
info "running migration ...", migrationPath=migrationPath
|
||||
let migrationResult = sqliteDatabase.migrate(migrationPath)
|
||||
if migrationResult.isErr:
|
||||
warn "migration failed", error=migrationResult.error
|
||||
else:
|
||||
info "migration is done"
|
@ -790,8 +790,11 @@ when isMainModule:
|
||||
libp2p/nameresolving/dnsresolver,
|
||||
../../common/utils/nat,
|
||||
./config,
|
||||
./waku_setup,
|
||||
./wakunode2_setup,
|
||||
./wakunode2_setup_rest,
|
||||
./wakunode2_setup_metrics,
|
||||
./wakunode2_setup_rpc,
|
||||
./wakunode2_setup_sql_migrations,
|
||||
./storage/message/waku_message_store,
|
||||
./storage/peer/waku_peer_storage
|
||||
|
||||
@ -1083,7 +1086,7 @@ when isMainModule:
|
||||
## monitoring ports.
|
||||
|
||||
if conf.rpc:
|
||||
startRpc(node, conf.rpcAddress, Port(conf.rpcPort + conf.portsShift), conf)
|
||||
startRpcServer(node, conf.rpcAddress, Port(conf.rpcPort + conf.portsShift), conf)
|
||||
|
||||
if conf.rest:
|
||||
startRestServer(node, conf.restAddress, Port(conf.restPort + conf.portsShift), conf)
|
||||
|
5
waku/v2/node/wakunode2_setup.nim
Normal file
5
waku/v2/node/wakunode2_setup.nim
Normal file
@ -0,0 +1,5 @@
|
||||
{.push raises: [Defect].}
|
||||
|
||||
import stew/results
|
||||
|
||||
type SetupResult*[T] = Result[T, string]
|
47
waku/v2/node/wakunode2_setup_metrics.nim
Normal file
47
waku/v2/node/wakunode2_setup_metrics.nim
Normal file
@ -0,0 +1,47 @@
|
||||
{.push raises: [Defect].}
|
||||
|
||||
import
|
||||
stew/results,
|
||||
stew/shims/net,
|
||||
chronicles,
|
||||
chronos,
|
||||
metrics,
|
||||
metrics/chronos_httpserver,
|
||||
./config,
|
||||
./wakunode2
|
||||
|
||||
logScope:
|
||||
topics = "wakunode.setup.metrics"
|
||||
|
||||
|
||||
proc startMetricsServer*(serverIp: ValidIpAddress, serverPort: Port) =
|
||||
info "Starting metrics HTTP server", serverIp, serverPort
|
||||
|
||||
try:
|
||||
startMetricsHttpServer($serverIp, serverPort)
|
||||
except Exception as e:
|
||||
raiseAssert("Exception while starting metrics HTTP server: " & e.msg)
|
||||
|
||||
info "Metrics HTTP server started", serverIp, serverPort
|
||||
|
||||
|
||||
proc startMetricsLog*() =
|
||||
# https://github.com/nim-lang/Nim/issues/17369
|
||||
var logMetrics: proc(udata: pointer) {.gcsafe, raises: [Defect].}
|
||||
|
||||
logMetrics = proc(udata: pointer) =
|
||||
{.gcsafe.}:
|
||||
# TODO: libp2p_pubsub_peers is not public, so we need to make this either
|
||||
# public in libp2p or do our own peer counting after all.
|
||||
var totalMessages = 0.float64
|
||||
for key in waku_node_messages.metrics.keys():
|
||||
try:
|
||||
totalMessages = totalMessages + waku_node_messages.value(key)
|
||||
except KeyError:
|
||||
discard
|
||||
|
||||
info "Node metrics", totalMessages
|
||||
discard setTimer(Moment.fromNow(2.seconds), logMetrics)
|
||||
|
||||
discard setTimer(Moment.fromNow(2.seconds), logMetrics)
|
||||
|
52
waku/v2/node/wakunode2_setup_rpc.nim
Normal file
52
waku/v2/node/wakunode2_setup_rpc.nim
Normal file
@ -0,0 +1,52 @@
|
||||
{.push raises: [Defect].}
|
||||
|
||||
import
|
||||
std/tables,
|
||||
stew/shims/net,
|
||||
chronicles,
|
||||
json_rpc/rpcserver
|
||||
import
|
||||
./config,
|
||||
./wakunode2,
|
||||
./jsonrpc/[admin_api,
|
||||
debug_api,
|
||||
filter_api,
|
||||
relay_api,
|
||||
store_api,
|
||||
private_api,
|
||||
debug_api]
|
||||
|
||||
logScope:
|
||||
topics = "wakunode.setup.rpc"
|
||||
|
||||
|
||||
proc startRpcServer*(node: WakuNode, rpcIp: ValidIpAddress, rpcPort: Port, conf: WakuNodeConf)
|
||||
{.raises: [Defect, RpcBindError].} =
|
||||
|
||||
let
|
||||
ta = initTAddress(rpcIp, rpcPort)
|
||||
rpcServer = newRpcHttpServer([ta])
|
||||
|
||||
installDebugApiHandlers(node, rpcServer)
|
||||
|
||||
if conf.relay:
|
||||
let topicCache = newTable[string, seq[WakuMessage]]()
|
||||
installRelayApiHandlers(node, rpcServer, topicCache)
|
||||
|
||||
if conf.rpcPrivate:
|
||||
# Private API access allows WakuRelay functionality that
|
||||
# is backwards compatible with Waku v1.
|
||||
installPrivateApiHandlers(node, rpcServer, node.rng, topicCache)
|
||||
|
||||
if conf.filter:
|
||||
let messageCache = newTable[ContentTopic, seq[WakuMessage]]()
|
||||
installFilterApiHandlers(node, rpcServer, messageCache)
|
||||
|
||||
if conf.store:
|
||||
installStoreApiHandlers(node, rpcServer)
|
||||
|
||||
if conf.rpcAdmin:
|
||||
installAdminApiHandlers(node, rpcServer)
|
||||
|
||||
rpcServer.start()
|
||||
info "RPC Server started", ta
|
29
waku/v2/node/wakunode2_setup_sql_migrations.nim
Normal file
29
waku/v2/node/wakunode2_setup_sql_migrations.nim
Normal file
@ -0,0 +1,29 @@
|
||||
{.push raises: [Defect].}
|
||||
|
||||
import
|
||||
chronicles,
|
||||
./storage/sqlite,
|
||||
./storage/migration/migration_types,
|
||||
./config,
|
||||
./wakunode2
|
||||
|
||||
logScope:
|
||||
topics = "wakunode.setup.migrations"
|
||||
|
||||
|
||||
proc runMigrations*(sqliteDatabase: SqliteDatabase, conf: WakuNodeConf) =
|
||||
# Run migration scripts on persistent storage
|
||||
var migrationPath: string
|
||||
if conf.persistPeers and conf.persistMessages:
|
||||
migrationPath = migration_types.ALL_STORE_MIGRATION_PATH
|
||||
elif conf.persistPeers:
|
||||
migrationPath = migration_types.PEER_STORE_MIGRATION_PATH
|
||||
elif conf.persistMessages:
|
||||
migrationPath = migration_types.MESSAGE_STORE_MIGRATION_PATH
|
||||
|
||||
info "running migration ...", migrationPath=migrationPath
|
||||
let migrationResult = sqliteDatabase.migrate(migrationPath)
|
||||
if migrationResult.isErr:
|
||||
warn "migration failed", error=migrationResult.error
|
||||
else:
|
||||
info "migration is done"
|
Loading…
x
Reference in New Issue
Block a user