aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/ops/settings.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/ops/settings.py')
-rw-r--r--packages/meshbay-node/src/meshbay_node/ops/settings.py22
1 files changed, 17 insertions, 5 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/ops/settings.py b/packages/meshbay-node/src/meshbay_node/ops/settings.py
index 9be9aca..77e0b77 100644
--- a/packages/meshbay-node/src/meshbay_node/ops/settings.py
+++ b/packages/meshbay-node/src/meshbay_node/ops/settings.py
@@ -67,17 +67,29 @@ NODE_SETTING_WRITERS: dict[str, tuple[str, str]] = {
}
-async def get_node_settings(state: dict) -> dict:
- """Return current effective node settings."""
+async def node_settings_view(roster, config) -> dict:
+ """The effective settings, as every reader of them gets them.
+
+ One function because there were two: the Node page reads its settings from
+ `list_groups`, not from `get_node_settings`, and a key added to one alone
+ (`cpu_count`) left the page showing "of 1" on a machine with 28 cores, its
+ field held at 1.
+
+ No config (a test, an unconfigured node) falls back to NodeConfig()'s own
+ values rather than to numbers repeated here.
+ """
from meshbay_node.config import node_settings_defaults
- roster = _roster(state)
- config = _config(state)
- defaults = node_settings_defaults(config.node)
+ defaults = node_settings_defaults(config.node if config else None)
settings = await roster.node_settings(defaults) if roster else defaults
# Not a setting: the ceiling of `connection_processes` on this machine, so
# the Node page can say how far the operator may go. The writer ignores it.
return {**settings, "cpu_count": max_processes()}
+
+async def get_node_settings(state: dict) -> dict:
+ """Return current effective node settings."""
+ return await node_settings_view(_roster(state), _config(state))
+
async def set_node_settings(state: dict, settings: dict) -> dict:
"""Update node-level daemon settings. Writes to both roster.db and node.toml."""
roster = _roster(state)