diff --git a/changelog.d/20260817_152209_doug.goldstein_remove_physical_network_fallback.md b/changelog.d/20260817_152209_doug.goldstein_remove_physical_network_fallback.md deleted file mode 100644 index 19f053f6a..000000000 --- a/changelog.d/20260817_152209_doug.goldstein_remove_physical_network_fallback.md +++ /dev/null @@ -1,28 +0,0 @@ -### Action required - -Neutron no longer falls back to querying Ironic for a baremetal port's -`physical_network` when it is absent from the port's `binding_profile`. It is -now a hard requirement: without it, binding a baremetal port is refused and -trunk create and delete operations are rejected with a `BadRequest`. - -Before upgrading, confirm no bound baremetal ports are missing -`physical_network`, and backfill any that are: - -1. Take a report-only inventory of affected ports in each cloud: - - ```bash - ./scripts/audit_ports_missing_physical_network.py --os-cloud $CLOUD - ``` - -2. If the report lists any ports, backfill them from their Ironic baremetal - port: - - ```bash - ./scripts/audit_ports_missing_physical_network.py --os-cloud $CLOUD --execute - ``` - -3. Re-run step 1 and confirm it reports no matches. - -A port whose trunk parent is still bound but has no `physical_network` cannot -have its trunk deleted until the profile is corrected. Trunks whose parent port -is unbound are unaffected and delete as before. diff --git a/docs/release-notes/v0.4.md b/docs/release-notes/v0.4.md index ba159c60a..0bed1f0b5 100644 --- a/docs/release-notes/v0.4.md +++ b/docs/release-notes/v0.4.md @@ -25,6 +25,38 @@ off for it rather than for the prose above: + +## v0.5.0 — released 2026-08-19 + +### Action required + +Neutron no longer falls back to querying Ironic for a baremetal port's +`physical_network` when it is absent from the port's `binding_profile`. It is +now a hard requirement: without it, binding a baremetal port is refused and +trunk create and delete operations are rejected with a `BadRequest`. + +Before upgrading, confirm no bound baremetal ports are missing +`physical_network`, and backfill any that are: + +1. Take a report-only inventory of affected ports in each cloud: + + ```bash + ./scripts/audit_ports_missing_physical_network.py --os-cloud $CLOUD + ``` + +2. If the report lists any ports, backfill them from their Ironic baremetal + port: + + ```bash + ./scripts/audit_ports_missing_physical_network.py --os-cloud $CLOUD --execute + ``` + +3. Re-run step 1 and confirm it reports no matches. + +A port whose trunk parent is still bound but has no `physical_network` cannot +have its trunk deleted until the profile is corrected. Trunks whose parent port +is unbound are unaffected and delete as before. + ## v0.4.25 and earlier Per-version upgrade notes begin with **v0.4.26**. For earlier versions the only