Naming a VLAN greyed out Try it and Apply, and blamed the board
Type a word beside a VLAN number and the switch card said "this board cannot check a configuration before it is applied" — a line that was true of neither the board nor the layout. The daemon had refused the request over a corner of how it reads one, on every release since names existed. Fixed in the daemon, with a test that fails on the old code; and the card now repeats the daemon's own words when a request is refused, instead of a sentence that sends people looking at their board revision.
Firmware v2.39.0, 23 September 2026 — the first image to carry bmcd 2.38.3, BMC-UI 3.38.0. Every item below is the repository's own changelog entry, taken apart; the whole entry is a click away under each one.
Changed¶
-
A refused validate request shows the daemon's words, not "this board cannot check". The switch card showed one sentence for two different failures: a daemon with no validate endpoint, and a daemon that has one and rejected the request as malformed. BMC-UI 3.38.0
The whole entry
Only the first means "cannot check"; the second says why in its body. A reader who named a VLAN got the sentence (BMC-Firmware#59) and went looking at his board revision, when the daemon had refused the request over how it reads names — fixed in bmcd 2.38.3. From now on a rejected request reads "The board refused the question rather than the layout: …" with the daemon's reason, so the next reader is told which it was.
Fixed¶
-
Naming a VLAN greyed out Try it and Apply, under a line blaming the board. Type a word beside a VLAN number in the switch card and the buttons went grey with "This board cannot check a configuration before it is applied." — a sentence true of neither the board nor the layout.
The whole entry
The daemon had refused the request over a corner of how it reads one:
validateandPUTaccept either a preset or a whole document, and the type that says "either" buffers the body before deciding; in the buffered form a map key"50"never becomes the number the names table is keyed by. So a document with no names read fine and a document with one name was refused, on both endpoints, on every release since names existed (v2.33.0). Reported as #59 and reproduced on a board with the same document twice.bmcd 2.38.3 reads the names by their wire form, so both paths agree, with a test that fails on the old code with the reporter's exact message. And BMC-UI 3.38.0 stops standing one sentence in for two failures: a rejected request now shows the daemon's own words — "The board refused the question rather than the layout: …" — and cannot check is kept for the one case it was written for, no answer at all.
-
A switch document with a VLAN name was refused by
validateand byPUT, as "did not match any variant of untagged enum Proposal". The same document withnames: {}passed. bmcd 2.38.3The whole entry
Both endpoints accept either a preset or a whole document, and the type that says "either" is
#[serde(untagged)], which buffers the body before choosing; in the buffered form a map key"50"is a string that never becomes theu16the names table is keyed by — while a direct read of the struct converts it, which is why every unit test of the document passed. From the day names existed. Reported as BMC-Firmware#59 by a reader whose interface greyed out Try it and Apply and told him his board could not check a layout; reproduced on a board with the same document twice.Names are now read from their wire form — string keys, parsed here — so both paths agree, and a key that is not a VLAN id is refused by name rather than as "no variant matched". A test feeds a named document through
Proposaland through the flattenedPUTbody; on the old code it fails with the reporter's exact message.
Every release of the firmware · the roadmap · follow by feed