Skip to content

Commit 7b72a57

Browse files
Milan FencikMilan Fencik
authored andcommitted
add method to understack driver to check if vlan segment is present for current physnet
1 parent bd4f8f5 commit 7b72a57

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

python/neutron-understack/neutron_understack/neutron_understack_mech.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from neutron_understack.undersync import Undersync
2121

2222
from .ml2_type_annotations import NetworkContext
23+
from .ml2_type_annotations import NetworkSegmentDict
2324
from .ml2_type_annotations import PortContext
2425

2526
LOG = logging.getLogger(__name__)
@@ -369,7 +370,8 @@ def _bind_port_segment(self, context: PortContext, segment):
369370
vlan_group_name,
370371
)
371372

372-
dynamic_segment = context.allocate_dynamic_segment(
373+
current_vlan_segment = self._vlan_segment_for_physnet(context, vlan_group_name)
374+
dynamic_segment = current_vlan_segment or context.allocate_dynamic_segment(
373375
segment={
374376
"network_type": p_const.TYPE_VLAN,
375377
"physical_network": vlan_group_name,
@@ -399,6 +401,21 @@ def _bind_port_segment(self, context: PortContext, segment):
399401
status=p_const.PORT_STATUS_ACTIVE,
400402
)
401403

404+
def _vlan_segment_for_physnet(
405+
self, context: PortContext, physnet: str
406+
) -> NetworkSegmentDict | None:
407+
for segment in context.network.network_segments:
408+
if (
409+
segment[api.NETWORK_TYPE] == p_const.TYPE_VLAN
410+
and segment[api.PHYSICAL_NETWORK] == physnet
411+
):
412+
LOG.info(
413+
"vlan segment: %(segment)s already preset for physnet: "
414+
"%(physnet)s",
415+
{"segment": segment, "physnet": physnet},
416+
)
417+
return segment
418+
402419
def invoke_undersync(self, vlan_group_name: str):
403420
self.undersync.sync_devices(
404421
vlan_group=vlan_group_name,

0 commit comments

Comments
 (0)