Commit Graph
5155 Commits
Author SHA1 Message Date
Herbert Wolverson 49024d065c Docs: tighten byte counters API wording
Uses active phrasing in the Spanish API note and aligns the English wording with the configuration page.
2026-10-07 13:43:48 -05:00
Herbert Wolverson 18cde06b35 Fix: index the device catalog once per byte counter refresh
Builds a circuit-hash index from the combined catalog before refreshing descriptors, so dynamic and removed circuits cannot trigger per-circuit fallback scans while the counter lock is held. Clarifies the module documentation and fixes the Spanish parent-node wording.
2026-10-07 13:35:08 -05:00
Herbert Wolverson 3f00f10593 Fix: refresh byte counter identity for configured circuits
Live circuits now follow renames and re-parenting because descriptors refresh from the catalog on each snapshot, while circuits removed from configuration keep their last-known descriptor and continue contributing to their last known parent. Documents the tracker-side lock constraint, releases the throughput table lock before the counter merge, adds a first-miss descriptor recovery test, and applies rustfmt to the new hunk.
2026-10-07 13:20:03 -05:00
Herbert Wolverson 2a022c0e06 Fix: resolve byte counter parents through the canonical topology lookup
Reuses ParentNodeLookup so node attribution follows the same id, name, and attachment-alias precedence as the rest of the runtime, and prefers the published effective parent when capturing circuit identity. Adds an alias-resolution test and clarifies the snapshot lock-order comment.
2026-10-07 13:00:57 -05:00
Herbert Wolverson b19bf9ec14 Fix: keep byte counter identity across configuration changes
Captures circuit identity and parent when a counter first receives traffic, so circuits removed from configuration keep contributing to their last known parent instead of dropping out of node totals. Resolves parent nodes by stable id before name, fills descriptors at read time, skips zero-byte deltas, and documents the counter lock ordering. Expands tests for the absent config section, disabled snapshots, root-attached circuits, id-preferred node resolution, and stable circuit ordering.
2026-10-07 12:49:28 -05:00
Herbert Wolverson 94ed100fea Docs: document byte counters configuration and API endpoint
Documents the optional [byte_counters] section, counter reset semantics, subtree-inclusive node totals, and the GET /byte_counters endpoint in English and Spanish.
2026-10-07 12:29:26 -05:00
Herbert Wolverson ff59654991 Feat: accumulate and expose cumulative circuit byte counters
When [byte_counters] enabled = true, the one-second throughput tracker batches each circuit's actual-byte deltas into a cumulative counter map. Node totals are rolled up through the runtime network tree when the bus is queried, so node values include descendants. Counters are in-memory and reset when lqosd restarts.
2026-10-07 12:29:22 -05:00
Herbert Wolverson d52e3a6dbb Feat: add byte counters bus request and response
Adds GetByteCounters with cumulative per-node and per-circuit byte counter payloads. The request is read-only, so it fails fast on timeout and needs no daemon-side mutation.
2026-10-07 12:29:22 -05:00
Herbert Wolverson 433914842a Feat: add optional byte_counters configuration section
Adds a [byte_counters] section that is absent by default, so existing configuration files keep working unchanged. The section will gate cumulative per-circuit and per-node byte counter collection in lqosd.
2026-10-07 12:29:18 -05:00
Robert Chacón 61a83dcd14 Merge pull request #1166 from LibreQoE/fix/atomic-runtime-state-writes
Make runtime/generated writes atomic; tolerate torn network.json
2026-10-03 20:59:46 -06:00
Robert Chacón d73fd7ebee Merge pull request #1167 from LibreQoE/fix_find_bandwidth_mins
Fix node minimum bandwidth accumulating across siblings
2026-10-03 20:59:24 -06:00
Herbert Wolverson ea7374901a Fix node minimum bandwidth accumulating across siblings
findBandwidthMins() reused one minDownload/minUpload counter for both each node's own minimum and the running sibling total, so every sibling after the first inherited the circuit minimums of the siblings before it. Those inflated minimums are written to queuingStructure.json and become HTB rates, which can guarantee child nodes more bandwidth than their parent supplies.

Reset the counters per node and keep a separate running total for the parent. Also fix the no-minimum-key fallback, which used minUpload for the download minimum.

The function is hoisted to module level so the behavior can be unit tested, with regression coverage for sibling accumulation and order, nested roll-up, and the download fallback.
2026-10-03 11:56:51 -05:00
Herbert Wolverson b14a6870e0 Add shared atomic writes and tolerate torn network.json
Consolidate the atomic writer into src/atomic_io.py and route the
remaining runtime/generated writes through it so an interrupted write
cannot leave a truncated file. Preserve destination ownership and
permissions across the rename, and treat an unreadable or non-object
network.json as a validation failure instead of crashing the scheduler.
2026-09-15 14:47:22 -05:00
Robert Chacón 654499a5a3 Update conf.py 2026-09-08 12:58:18 -06:00
Robert Chacón ebed074024 Merge pull request #1164 from LibreQoE/fix_powercode_1
Fix Powercode id type mismatches and add site/AP topology support
2026-09-08 12:50:03 -06:00
rchac 08aa228366 Fix Powercode id type mismatches and add site/AP topology support
The Powercode preseem API returns customer and equipment ids as ints
while service ids come back as strings, so the service lookup in
createShaper() never matched and zero customers were imported. All ids
are now normalized to strings before use.

The integration now also pulls the list_sites endpoint and builds the
network hierarchy from it: sites are added as site nodes, site
infrastructure equipment that has subscribers attached (APs, routers,
backhauls) becomes AP nodes, and customers are parented onto the AP
their equipment references, falling back to a sibling device's AP and
then to the root. Display names are trimmed and de-duplicated so the
topology compiler's exact-match parent name validation passes.
2026-09-08 18:49:06 +00:00
Robert Chacón 0bd7a6075e Update update.md 2026-09-07 03:41:56 -06:00
Robert Chacón dd56833705 Merge pull request #1162 from LibreQoE/fix_1157_caddy
Fix API Docs behind managed Caddy HTTPS
2026-09-04 14:23:21 -06:00
Herbert Wolverson 87f0d595d7 Fix API docs routing behind managed Caddy HTTPS 2026-09-04 15:17:23 -05:00
Robert Chacón 6c2601a9a8 Merge pull request #1161 from LibreQoE/fix_309
Atomic writes for runtime state files and a scheduler-safe lastRun.txt reader
2026-09-03 08:12:50 -06:00
rchac 1d0e0bc610 changes 2026-09-03 07:57:47 -06:00
rchac bc9ca515c3 changes 2026-08-27 15:00:57 +00:00
Robert Chacón e772b84c35 Update integrations-reference.md 2026-08-25 16:21:29 -06:00
Robert Chacón 750560a14d Update conf.py 2026-08-18 09:41:21 -06:00
Robert Chacón e6f4e1903b Merge pull request #1143 from LibreQoE/chore/warn_tsc
Warn when expensive clocksource is active
2026-08-18 09:33:53 -06:00
Robert Chacón 842654065d Merge pull request #1140 from stepbrobd/map
Clamp cpu_map to host's possible CPU count
2026-08-18 09:33:10 -06:00
Robert Chacón bf1e3517a2 Update conf.py 2026-08-18 08:58:27 -06:00
Robert Chacón c33b3b3035 Update VERSION_STRING 2026-08-18 08:54:31 -06:00
Herbert Wolverson db932928c7 Warn when expensive clocksource is active 2026-08-14 20:14:32 -05:00
Robert Chacón c710d4b8ef Merge pull request #1141 from LibreQoE/revert-818-meatball-sub
Revert "Add XDP interface compatibility shim"
2026-08-11 07:53:16 -06:00
Robert Chacón 0908d3e634 Revert "Add XDP interface compatibility shim" 2026-08-11 07:53:03 -06:00
Robert Chacón a262c53b97 Merge pull request #818 from LibreQoE/meatball-sub
Add XDP interface compatibility shim
2026-08-10 17:08:52 -06:00
Herbert Wolverson e939ff5a87 Feat: add compatibility shim to first-run setup 2026-08-10 17:43:10 -05:00
Herbert Wolverson f7d53d8cc6 Feat: add XDP interface compatibility shim 2026-08-10 17:02:09 -05:00
Robert Chacón 482c856dd7 Merge pull request #1139 from LibreQoE/fix/bakery-license-cache-startup
Gate Bakery startup on local license-cache initialization
2026-08-07 10:44:54 -06:00
Yifei Sun 96a83e223a Clamp cpu_map to host's possible CPU count 2026-08-06 20:17:50 +02:00
Herbert Wolverson 94b3c82679 Gate Bakery startup on local license-cache initialization
Keep queued Bakery commands intact while lqosd checks local .keys state, releasing the gate for both successful and non-fatal cache outcomes without tying startup to Insight network availability.
2026-08-06 10:13:45 -05:00
Robert Chacón 5d0f94fd2d Merge pull request #1138 from LibreQoE/fix/htb-lazy-full-reload
Fix HTB-lazy full reload queue growth
2026-08-01 07:34:36 -06:00
Herbert Wolverson b89fe5d33a Fix HTB-lazy full reload queue growth 2026-07-31 12:54:54 -05:00
Herbert Wolverson bbb4acff71 Merge remote-tracking branch 'refs/remotes/origin/develop' into develop 2026-07-31 10:15:56 -05:00
Herbert Wolverson 8bea1e358d Docs: Explain DOCSIS modem headroom 2026-07-30 20:20:10 -05:00
Robert Chacón fb30c88d2a Merge pull request #1137 from LibreQoE/fix/lazy-queue-memory-preflight-warning
Allow lazy queue memory preflight warnings
2026-07-30 09:58:28 -06:00
Herbert Wolverson ddf78a0f16 Fix lazy queue memory preflight warnings 2026-07-30 09:59:57 -05:00
Robert Chacón b2a801aeb0 Merge pull request #1135 from LibreQoE/fix_eth_1
Show infrastructure Ethernet caps and remove the lone Tree Overview tab
2026-07-26 12:33:34 -06:00
rchac 0ce8305db3 changes 2026-07-26 12:26:20 -06:00
rchac ec943d4de4 changes 2026-07-26 12:20:34 -06:00
Robert Chacón 79f6b0ba18 Merge pull request #1134 from LibreQoE/fix_topo_5
Preserve native topology parents for UISP attachments
2026-07-21 19:57:03 -06:00
rchac 5bc56d2b67 changes 2026-07-21 19:49:03 -06:00
Robert Chacón c567b8b03b Merge pull request #1133 from LibreQoE/fix/flat_binpack_stability
Stabilize flat-network binpacking
2026-07-21 15:03:06 -06:00
Robert Chacón e1d05dbd17 Merge pull request #1132 from LibreQoE/feat/radius_accounting
Add RADIUS accounting dynamic circuits
2026-07-21 15:02:57 -06:00