Skip to content

feat: Subport dynamic segment #804

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Apr 15, 2025
Merged

feat: Subport dynamic segment #804

merged 7 commits into from
Apr 15, 2025

Conversation

mfencik
Copy link
Contributor

@mfencik mfencik commented Mar 25, 2025

Ref PUC-787
closes #771

The old scheme used a Nautobot plugin to assign a VLAN number outside of
Openstack, and this is what was configured on the switch. This caused
issues because Neutron had no knowledge of these VLANs, which make it
difficult to have Neutron drive any layer 3 services or even trunk ports.

Now we have Neutron allocate "Dynamic" network segments instead, and
these are pushed to Nautobot, to keep Nautobot's VLANs in sync with
Neutron's Network Segments.

To facilitate we are using the "physical network" of each Ironic
baremetal port to identify the vlan group where that switch port lives.
For every vlan group we have created a Network Segment Range with the
same name. Dynamic network segments of type "VLAN" are assigned from
those ranges.

We implement some new API calls to replace the "prep switch interface"
and "detach port" Nautobot jobs which were previously making interface
updates in addition to assigning VLAN numbers. Specifically, we now
update the vlans on the switch port and we toggle it's "provisioning"
state.

Undersync is invoked with a VLAN Group parameter. We now identify the
VLAN Group by name instead of UUID. The name is directly discoverable
from Neutron whereas the UUID would have to be looked up in Nautobot.
(Undersync was already updated to accept either type of parameter.)

In Neutron we now exclusively use type "VXLAN" and so all support for
type "VLAN" Networks has been removed. This also includes the
"provisioning" network which has been recreated as type VXLAN in our
environment.

There is an opportunity to remove our special "vlan 4010" case handling
of the provisioning network and have this created by Neutron using the
same mechanisms as for as any other tenant network, but that has not
happened yet.

Trunk ports have first-class support in Neutron but they are handled by
a separate model, disjoint from "normal" ports, and using trunk ports
exercises totally different ml2 driver callbacks. Trunk port support
is included in a this PR.

@mfencik mfencik force-pushed the subport-dynamic-segment branch 2 times, most recently from 4c99c8a to 0c70549 Compare March 25, 2025 21:48
@mfencik mfencik force-pushed the subport-dynamic-segment branch 19 times, most recently from 05b2cb4 to e3d3071 Compare April 14, 2025 10:07
@mfencik mfencik force-pushed the subport-dynamic-segment branch from e554168 to f90766b Compare April 15, 2025 18:54
@mfencik mfencik marked this pull request as ready for review April 15, 2025 18:56
@stevekeay stevekeay added this pull request to the merge queue Apr 15, 2025
Merged via the queue into main with commit d97e97f Apr 15, 2025
28 checks passed
@stevekeay stevekeay deleted the subport-dynamic-segment branch April 15, 2025 19:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants