diff --git a/examples/api_example/api_example.nim b/examples/api_example/api_example.nim index 024809032e..a838da80be 100644 --- a/examples/api_example/api_example.nim +++ b/examples/api_example/api_example.nim @@ -63,6 +63,9 @@ when isMainModule: echo "Failed to create default config: ", error quit(QuitFailure) + # The CLI default is kernel-only; this example drives the messaging API. + conf.entryLayer = EntryLayer.channels + if args.ethRpcEndpoint == "": # Create a basic configuration for the Waku node # No RLN as we don't have an ETH RPC Endpoint diff --git a/logos_delivery/api/conf/logos_delivery_conf.nim b/logos_delivery/api/conf/logos_delivery_conf.nim index eb2e5b9fa2..e6f363738f 100644 --- a/logos_delivery/api/conf/logos_delivery_conf.nim +++ b/logos_delivery/api/conf/logos_delivery_conf.nim @@ -31,6 +31,7 @@ proc init*( let merged = merge(?resolvePreset(preset), messagingOverrides) var kernelConf = ?toWakuNodeConf(merged, mode) kernelConf.preset = preset + kernelConf.entryLayer = entryLayer return ok( LogosDeliveryConf( kernelConf: KernelConf(kernelConf), diff --git a/logos_delivery/api/conf/messaging_conf.nim b/logos_delivery/api/conf/messaging_conf.nim index 62abea75e6..66220dd9dd 100644 --- a/logos_delivery/api/conf/messaging_conf.nim +++ b/logos_delivery/api/conf/messaging_conf.nim @@ -84,6 +84,9 @@ proc toWakuNodeConf*( # `LogosDelivery.new(WakuNodeConf)` re-application is idempotent instead of # clobbering these flags with the field's default (`Core`). conf.mode = mode + # Derived from a `MessagingClientConf`, so never kernel-only: don't inherit the + # CLI default. `LogosDeliveryConf.init` overwrites this with the caller's layer. + conf.entryLayer = EntryLayer.channels if self.store.isSome(): conf.store = self.store.get() diff --git a/tests/wakunode2/test_cli_args.nim b/tests/wakunode2/test_cli_args.nim index 4578e1cecf..3de1a3ab35 100644 --- a/tests/wakunode2/test_cli_args.nim +++ b/tests/wakunode2/test_cli_args.nim @@ -54,6 +54,13 @@ suite "Waku external config - default values": let conf = res.get() check conf.subscribeShards == defaultSubscribeShards + test "Default entry layer is kernel": + ## Given + let preConfig = defaultWakuNodeConf().get() + + ## Then + check preConfig.entryLayer == EntryLayer.kernel + suite "Waku external config - apply preset": test "Preset is TWN": ## Setup diff --git a/tools/confutils/cli_args.nim b/tools/confutils/cli_args.nim index 1cb6292d2a..ff6dc05dcf 100644 --- a/tools/confutils/cli_args.nim +++ b/tools/confutils/cli_args.nim @@ -172,7 +172,7 @@ type WakuNodeConf* = object entryLayer* {. desc: "Top API layer to run: kernel (transport only), messaging, or channels (messaging + reliable channels).", - defaultValue: EntryLayer.channels, + defaultValue: EntryLayer.kernel, name: "entry-layer" .}: EntryLayer