olt: add bulk DHCPv4/DHCPv6 filter edit alongside flood mode
Generalises the OLT bulk tool from flood-mode-only to arbitrary NNI-service
edits. DHCP modes live nested under each NNI entry's Filter object
(Filter.DHCPv4 / Filter.DHCPv6, e.g. "pass" <-> "umt"), confirmed from a
real OLT-CFG paste-back.
- src/mcms-api.js: planFloodChange -> planNniEdit(oltCfg, {tagPattern, flood,
dhcpv4, dhcpv6}); each concern optional. DHCP is value-replacement,
replace-only-when-present (never invents the key; leaves EAPOL/PPPoE/NDP).
Still non-mutating (clones the entry AND the Filter). Returns changes with
per-entry edits[]. summarizeOltNniNetworks surfaces dhcpv4/dhcpv6; new
dhcpModeOfNni helper.
- main.js + web/server.js: executeFloodChange handler passes flood/dhcpv4/
dhcpv6 ops through (channel name kept for wire compat).
- renderer: OLT inspector now has three action dropdowns (Flooding / DHCPv4 /
DHCPv6, defaults flood private->auto + DHCP pass->umt); table shows DHCP
chips + per-service "will change (flood, DHCPv4, …)"; flood-mode filter
defaults to Any so DHCP-on-pass auto-flood OLTs still show; CSV report
lists every per-NNI edit (pon-olt-nni-*.csv).
Verified: node --check; planNniEdit unit-tested against the real fixture +
a pass variant (13/13: no-mutation, EAPOL/PPPoE/NDP preserved,
replace-when-present, flood/DHCP independence); OLT view rendered offscreen
showing correct per-service "will change" markers.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
de037c8795
commit
5e3d9271a8
7 changed files with 232 additions and 118 deletions
|
|
@ -288,11 +288,11 @@
|
|||
<label>NNI TAG MATCH pattern
|
||||
<input id="olt-tag-pattern" type="text" value="s0.c76.c0" placeholder="e.g. s0.c76.c0 or s0.c76.*" />
|
||||
</label>
|
||||
<label>Current mode
|
||||
<label>Flood-mode filter
|
||||
<select id="olt-mode-filter">
|
||||
<option value="private" selected>Private (PON FLOOD ID set)</option>
|
||||
<option value="any" selected>Any</option>
|
||||
<option value="private">Private (PON FLOOD ID set)</option>
|
||||
<option value="auto">Auto (no PON FLOOD ID)</option>
|
||||
<option value="any">Any</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>OLT name contains
|
||||
|
|
@ -310,13 +310,29 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<h2>Action</h2>
|
||||
<label>Change matching services
|
||||
<select id="olt-action">
|
||||
<h2>Actions</h2>
|
||||
<p class="muted small">Applied together to every matching NNI service on the selected OLTs, in one GET→edit→PUT per OLT.</p>
|
||||
<label>Flooding mode
|
||||
<select id="olt-flood-action">
|
||||
<option value="">No change</option>
|
||||
<option value="private2auto" selected>Private → Auto (remove PON FLOOD ID)</option>
|
||||
<option value="auto2private">Auto → Private (set PON FLOOD ID = 0)</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>DHCPv4 filter
|
||||
<select id="olt-dhcpv4-action">
|
||||
<option value="">No change</option>
|
||||
<option value="pass2umt" selected>pass → umt</option>
|
||||
<option value="umt2pass">umt → pass</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>DHCPv6 filter
|
||||
<select id="olt-dhcpv6-action">
|
||||
<option value="">No change</option>
|
||||
<option value="pass2umt" selected>pass → umt</option>
|
||||
<option value="umt2pass">umt → pass</option>
|
||||
</select>
|
||||
</label>
|
||||
|
||||
<div class="row">
|
||||
<button id="btn-olts-back" class="ghost">← Back to fleet</button>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue